Variablen miteinander Vergleichen(NEUES PROBLEM MIT ZUFALL)
Übersicht

![]() |
Schranz0rBetreff: Variablen miteinander Vergleichen(NEUES PROBLEM MIT ZUFALL) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi leute
Ich hab ein game, das 3 Würfel hat habe für jeden Würfel einen Wert: W1 W2 W3 da es gegen den Computer spielbar sein soll, hab ich noch: COM_W1 COM_W2 COM_W3 Die Werte werden per Rand(1,6) ermittelt. da ich anzeigen lassen will , wenn 2 würfel gleich sind(Paar) oder 3 Würfel(Pasch) habe ich den code wie folgt geschrieben: Code: [AUSKLAPPEN] Graphics 800,600,0,2
AppTitle "Würfelgame" Global W1 = 0 Global W2 = 0 Global W3 = 0 Global COM_W1 Global COM_W2 Global COM_W3 Global tiles = LoadImage("wuerfel.png") Repeat Cls If KeyHit(28) Then Pasch = 0 Paar = 0 COM_Pasch = 0 COM_Paar = 0 Vw1 = 0 Vw2 = 0 Vw3 = 0 P = 0 COM_Vw1 = 0 COM_Vw2 = 0 COM_Vw3 = 0 W1 = Rand(1,6) W2 = Rand(1,6) W3 = Rand(1,6) COM_W1 = Rand(1,6) COM_W2 = Rand(1,6) COM_W3 = Rand(1,6) COM_P = 0 Zeichne_Wuerfel(W1,20,20) Zeichne_Wuerfel(W2,60,20) Zeichne_Wuerfel(W3,100,20) Berechne_COM() Berechne_Spieler() EndIf WaitKey Until KeyHit(1) Function Zeichne_Wuerfel(Wuerfel$,zx,zy) Select Wuerfel$ Case 1 DrawImageRect tiles, zx,zy,0,0,20,20 Case 2 DrawImageRect tiles, zx,zy,20,0,20,20 Case 3 DrawImageRect tiles, zx,zy,40,0,20,20 Case 4 DrawImageRect tiles, zx,zy,60,0,20,20 Case 5 DrawImageRect tiles, zx,zy,80,0,20,20 Case 6 DrawImageRect tiles, zx,zy,100,0,20,20 Default DrawImageRect tiles, zx,zy,0,0,20,20 End Select End Function Function Berechne_Spieler() If W1 = W2 And W2 = W3 Then Pasch = 1 If W1 = 1 Then Locate 50,50 Print W1 + "ser Pasch" Else Locate 50,50 Print W1 + "er Pasch" EndIf EndIf If Pasch = 0 And W1 = W2 Then Paar = 1 If W1 = 1 Then Locate 50,50 Print W1 + "ser Paar" Else Locate 50,50 Print W1 + "er Paar" EndIf EndIf If Pasch = 0 And W2 = W3 Paar = 1 If W2 = 1 Then Locate 50,50 Print W2 + "ser Paar" Else Locate 50,50 Print W2 + "er Paar" EndIf EndIf If Pasch = 0 And W3 = W1 Paar = 1 If W3 = 1 Then Locate 50,50 Print W1 + "ser Paar" Else Locate 50,50 Print W1 + "er Paar" EndIf EndIf End Function Function Berechne_COM() If COM_W1 = COM_W2 And COM_W2 = COM_W3 Then COM_Pasch = 1 Locate 150,50 Print "Pasch" EndIf If COM_Pasch = 0 And COM_W1 = COM_W2 Then COM_Paar = 1 Locate 150,50 Print "Paar" EndIf If COM_Pasch = 0 And COM_W2 = COM_W3 Then COM_Paar = 1 Locate 150,50 Print "Paar" EndIf If COM_Pasch = 0 And COM_W3 = COM_W1 Then COM_Paar = 1 Locate 150,50 Print "Paar" EndIf End Function Wie kann ich nun die variablen vergleichen. Wenn Pasch dann vergleiche Variablen miteinader Hat der User mehr als Com schreibe Gewonnen wenn nicht schreibe Verloren so in der art hab ich mir das gedacht, aber ich denke ihr habt bessere lösungen ![]() mfG Schranz0r |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
- Zuletzt bearbeitet von Schranz0r am Fr, Aug 25, 2006 18:15, insgesamt einmal bearbeitet
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] if (w1+w2+w3) mod 3=false pash=true
Fällt mir auf die Schnelle dazu ein ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
If (W1+W2+W3)......
Dann errechnet der mir doch ne quersumme oder? Oder vergleicht der nur jede einzele Variable miteinander? |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Quersumme modulo 3. Wenn die drei Zahlen gleich sind wird immer ein Wert rauskommen der durch 3 teilbar ist (3, 6, 9...) und der Modulo-Operator gibt den Wert zurück der beim dividieren durch einen anderen Wert übrig bleibt quasi. Wenn der Wert durch 3 teilbar ist logischerweise 0 und auf das wird dann überprüft. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gegenbeispiel:
3,6,6. warum nicht einfach: WENN A=B UND B=C !? |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
moin,
die Struktur an sich würde ich vereinfachen....(nicht getestet) Code: [AUSKLAPPEN] Function Zeichne_Wuerfel(Wuerfel,zx,zy)
DrawImageRect tiles, zx, zy, (Wuerfel-1)*20, 0, 20, 20 End Function Function Berechne_Spieler() If W1 = W2 And W2 = W3 Then Pasch = True If W1 = 1 Then Locate 50,50 Print W1 + "ser Pasch" Else Locate 50,50 Print W1 + "er Pasch" EndIf ElseIf W1 = W2 Or W2 = W3 Or W1 = W3 Then Paar = 1 If (W1 = W2 And W1=1) Or (W2 = W3 And W2=1) Or (W1 = W3 And W1=1) Then Locate 50,50 Print W1 + "ser Paar" Else Locate 50,50 Print W1 + "er Paar" EndIf EndIf End Function Function Berechne_COM() If COM_W1 = COM_W2 And COM_W2 = COM_W3 Then COM_Pasch = 1 Locate 50,50 Print "Pasch" ElseIf COM_W1 = COM_W2 Or COM_W2 = COM_W3 Or COM_W1 = COM_W3 Then COM_Paar = 1 Locate 50,50 Print "Paar" EndIf End Function mfg |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoppla, stimmt ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das weicht aber nun ein wenig vom Thema ab ![]() Trotzem danke für die vorschlage. Ich will ermittel wer gewonnen hat. Hat Spieler Paar und COM nicht dann Gewonnen Hat Spieler Paar und COM Paar dann vergleiche Werte der mit mehr hat gewonnen Hat Spieler Pash und COM nicht dann Gewonnen Hat Spieler Pash und COM Pash dann vergleiche Wert der mit mehr hat gewonnen Und andersrum natürlich Das Problem ist das, wenn der ein paar hat, und ich vergleichen will, weiß ich ja nicht welchen würfel ich vergleichen soll, weils ja Random ist ![]() |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hilft dir ja mein Kniffel weiter...
Da überprüfe ich auch Drillinge und Vierlinge und Fullhouse und solche Sachen. Allerdings immer aus 5 Würfeln. Ich bin meist so vorgegangen, dass ich gezählt habe, wieviele Einer, Zweier, Dreier, usw. es gibt. Daraus kann man dann schnell ableiten, ob es Drillinge, oder dergleichen gibt. Aber einfach nur 3 Variablen auf Gleichheit prüfen würde ich so machen, wie bereits gesagt (A = B AND B = C). |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm blick bei deinen Code nicht ganz durch wie du das berechnest
Aber schönes spiel ich wollte einen Mayer Clon machen ^^ |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder du speicherst die Würfelzahlen in einem Array und bei 'Paar' merkst du die die Position in Paar....
Code: [AUSKLAPPEN] Dim W(3)
Function Berechne_Spieler() If W(0) = W(1) And W(1) = W(2) Then Pasch = True If W(0) = 1 Then Locate 50,50 Print W1 + "ser Pasch" Else Locate 50,50 Print W1 + "er Pasch" EndIf Return ElseIf W1 = W2 Then;----------------------------------------------------------- Paar = 1 ElseIf W2 = W3 Then Paar = 1 ElseIf W1 = W3 Then Paar = 2 EndIf ;-------------------------------------------------------------------------------- If Paar>0 And w(Paar)=1 Then Locate 50,50 Print W1 + "ser Paar" Else Locate 50,50 Print W1 + "er Paar" EndIf End Function Function Check() If Pasch And COM_Pasch Then ;gewonnen ElseIf Pasch And Not COM_Pasch Then If W(0)>COM_W(0) Then ;gewonnen ElseIf W(0)<COM_W(0) Then ;verloren Else ;unendschieden EndIf ElseIf Not Pasch And COM_Pasch Then ;verloren Else If Paar And COM_Paar Then ;------------------------------------------ If W(Paar)>COM_W(COM_Paar) Then ;geweonnen ElseIf W(Paar)<COM_W(COM_Paar) Then ;verloren Else ;unendschieden EndIf ;---------------------------------------------------------------------- ElseIf Paar And Not COM_Paar Then ;gewonnen ElseIf Not Paar And COM_Paar Then ;verloren EndIf End Function mfg |
||
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie kann ich den zufall auf die sprünge helfen.
es kommt am anfang immer das gleiche trotz Rand(1,6) Code: [AUSKLAPPEN] Repeat
Cls FlushKeys Wert = 0 CWert= 0 Paar = False CPaar= False ;-----------------ZUFALLS WÜRFEL---------------------- W1 = Rand(1,6) W2 = Rand(1,6) W3 = Rand(1,6) CW1 = Rand(1,6) CW2 = Rand(1,6) CW3 = Rand(1,6) X = X +1 Cls Check() Check_Gewinner() Locate 0,0 : Print "WÜRFEL SPIELER: "+W1+" "+W2+" "+W3 Locate 0,15 : Print "WÜRFEL COM: "+CW1+" "+CW2+" "+CW3 Locate 0,50 : Print "SPIELER HAT : " + Wert Locate 0,65 : Print "COM HAT : " + CWert WaitKey FlushKeys If Wert = 0 And CWert = 0 Then Unentschieden() EndIf Until KeyHit(1) |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
seedrnd Millisecs() | ||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Thx a lot ![]() |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group