Modulo Problem für Spielerwechsel

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

US-Blitz

ehemals "SimssmiS"

Betreff: Modulo Problem für Spielerwechsel

BeitragDo, Jan 20, 2011 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 800,600,32,3
SeedRnd MilliSecs()
SetBuffer BackBuffer()

ClsColor 0,150,0

;Load Images
Local Dice=LoadImage ("Bilder\Dice.png")
MaskImage Dice,255,0,0

Local dice_one=0
Local dice_two=0
Local dice_add=0
Dim Num_p(2)
Local goon=1
Local player=1
Color 0,0,0
Local Fon=LoadFont ("ComicSansMs",50)
Local norm=LoadFont ("ComicSansMs",20,True)
Dim wuerfe(2)
Repeat
   
   While goon=1
      Cls
      FlushKeys
      dice_one=Rnd(1,6)
      dice_two=Rnd(1,6)
      dice_add=dice_one+dice_two
      If dice_add=7 Then dice_add=dice_add*-1
      Num_p(player)=Num_p(player)+dice_add
      wuerfe(player)=wuerfe(player)+1
      DrawImage Dice,100,100
      DrawImage Dice,230,100
      SetFont Fon
      Text 140,125,dice_one
      Text 270,125,dice_two
      
      Text 20,20,"Weiterwürfeln(Enter)   Würfel weitergeben(Backspace)"
      
      SetFont norm
      Text 400,125,("Punkte Spieler 1:      "+Num_p(1)+" nach "+wuerfe(1)+" Würfen")
      Text 400,155,("Punkte Spieler 2:      "+Num_p(2)+" nach "+wuerfe(2)+" Würfen")
      
      WaitKey()
                If KeyHit(14) Then goon=0
      Flip
   Wend
   player=((player+1) Mod 2)+1
   goon=1
   
Until KeyHit (1)
   

habe ewig nicht mehr mit b3d gearbeitet da ich mit java genug zu tuen hatte nun will ich aber eine aufgabe mit b3d lösen mein problem ich bekomme den spielerwechsel auf tastendruck backspace nicht hin

ToeB

BeitragDo, Jan 20, 2011 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wärs mit nem einfachem Wechseln zwischen 1 und 0 ? 0 heißt : Spieler 1 ist dram 1 Spieler 2. Wechseln kannst du in dem du den Wert von 1 abziehst oder mit Not (oder Xor).
Code: [AUSKLAPPEN]
SpielerDran = 1 - SpielerDran
SpielerDran = Not SpielerDran
SpielerDran = 1 Xor SpielerDran


Sonst wenn du mehrere Spieler hast :
Code: [AUSKLAPPEN]
SpielerDran = ( SpielerDran + 1 ) Mod SpielerMax

Bei 3 Spielern wäre das dann
Zitat:
0 : SpielerDran = 0
1 : SpielerDran = 1
2 : SpielerDran = 2
3 : SpielerDran = 0


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

US-Blitz

ehemals "SimssmiS"

BeitragDo, Jan 20, 2011 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
habe ich das denn nicht gemacht? player=((player+1) Mod 2)+1 damit ist es zwar 1 und 2 aber sonst ändert sich doch nichts


habe grade festgestellt mit 0 und 1 klappt es also das ganze player=((player+1) Mod 2) halt ohne das letzte +1 aber warum

Holzchopf

Meisterpacker

BeitragDo, Jan 20, 2011 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem liegt in dieser Zeile: BlitzBasic: [AUSKLAPPEN]
player=((player+1) Mod 2)+1

Du kannst im Kopf durchgehen was passiert: Entweder ist player=1, dann wird (player+1)=2 und (2 Mod 2)=0 und 0+1=1, kurz: Wenn player=1 ist, wird player=1 gesetzt. Ein anderer Fall kommt bei dir gar nicht zustande, da ja diese "Formel" das einzige ist, was player beeinflusst.

Ansonsten kann ich mich ToeB nur anschliessen: Der Computer beginnt im Gegensatz zum Menschen bei Null mit zählen. Als Programmierer sollte man sich das auch angewöhnen. So hat zum Beispiel das erste Element in einem Array immer 0, das zweite 1, das dritte 2 u.s.w als Index. Gewöhnt man sich nicht korrekt an diese Zählweise, hat das halt Folgen. Das können milde (wie im obigen Fall mit dem Modulo-Fehler, den ich einfach auch mal stinkfrech darauf zurückführe Wink ) bis hin zu gravierenden (Speicherzugriffsverletzungen, wenn man in einem 100-Element Array auf das 101. Element zugreift, weil man denkt, Index 100 entspräche diesem).

mfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
  • Zuletzt bearbeitet von Holzchopf am Sa, Jan 22, 2011 16:51, insgesamt einmal bearbeitet

US-Blitz

ehemals "SimssmiS"

BeitragDo, Jan 20, 2011 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut hab ich geändert. Danke an euch beide!



ps: als netgemeinte kritik nicht: das erste Element in einem Array immer 0, das zweite 1, das dritte 3
sondern das zweite. Nur damit es später keine Missverstände gibt.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Jan 20, 2011 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
O.T.

Auch Menschen beginnen immer ab 0 an zu zählen. Nur wird es nicht ausgesprochen.

Wenn ich in meine Geldbörse rein sehe und ein absolutes Tal vorhanden ist, dann habe ich 0 Euro. Habe also bereits bei 0 angefangen, denn sonst wenn man nicht von 0 ausgehen würde, würde man auch nie auf 0 kommen können (1, 2, 3... wann soll hier bitte die 0 kommen?).
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Dottakopf

BeitragDo, Jan 20, 2011 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
(1, 2, 3... wann soll hier bitte die 0 kommen?).


hehe hectic.. ausgehend das wir uns noch in einen 10ner system befinden, wird der übertrag nur nach hinten geschoben. also wäre dann unsere letzte zahl im 10er sytem die 0

Zahlenstreifen
Code: [AUSKLAPPEN]
 1  2 3 4 5 6 7 8 9 0


*Klugscheis Very Happy
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group