Variablen miteinander Vergleichen(NEUES PROBLEM MIT ZUFALL)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Schranz0r

Betreff: Variablen miteinander Vergleichen(NEUES PROBLEM MIT ZUFALL)

BeitragFr, Aug 25, 2006 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing

mfG Schranz0r
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • Zuletzt bearbeitet von Schranz0r am Fr, Aug 25, 2006 18:15, insgesamt einmal bearbeitet

Hubsi

BeitragFr, Aug 25, 2006 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
if (w1+w2+w3) mod 3=false pash=true

Fällt mir auf die Schnelle dazu ein Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Schranz0r

BeitragFr, Aug 25, 2006 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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...

D2006

Administrator

BeitragFr, Aug 25, 2006 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoppla, stimmt Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Schranz0r

BeitragFr, Aug 25, 2006 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Das weicht aber nun ein wenig vom Thema ab Very Happy
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 Confused
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

SpionAtom

BeitragFr, Aug 25, 2006 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 25, 2006 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Schranz0r

BeitragFr, Aug 25, 2006 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx a lot Very Happy
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group