4 gewinnt problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

viper199

Betreff: 4 gewinnt problem

BeitragSo, März 02, 2008 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich habe ein Problem, habe schon seit (sehr) langer Zeit nichts mehr programmiert und konnte auch vorher nur einige grundsachen.

Ich habe mich dazu entschlossen nach ein wenig wieder rein lesen mit einem 4 gewinnt Spiel anzufangen,
doch ich habe ein Problem.

Code: [AUSKLAPPEN]
AppTitle "4 Gewinnt"
Graphics 640,580,16,2
SetBuffer BackBuffer()

Global player1   =   LoadImage("Bilder\chip_rot.bmp")
Global player2   =   LoadImage("Bilder\chip_gelb.bmp")
Global bg2      =   LoadImage("Bilder\bg2.bmp")

bg2_y=100

Repeat
Cls

MaskImage bg2 , 255, 255, 255
MaskImage player1 , 255, 255, 255
MaskImage player2 , 255, 255, 255

DrawImage player1, MouseX(), MouseY()
DrawImage player2, player2_x, player2_y
DrawImage bg2, bg2_x, bg2_y

Flip
Until KeyHit(5)
End


Das ist im moment der code,
ich möchte natürlich, dass wenn "MouseDown" der chip nach unten fällt, habe jedoch keinerlei idee wie ich das einbauen soll!

Ich hoffe ihr könnt mir weiter helfen!
Schonmal danke im Voraus!

MFG viper199

ToeB

BeitragSo, März 02, 2008 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Das maskImage muss vor die Schleife...

mfg Crack93
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!

Der Eisvogel

BeitragSo, März 02, 2008 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, du willst, dass wenn die Maus gedrückt wurde, der Chip runterfällt, richtig? Gut.

Code: [AUSKLAPPEN]
If MouseHit(1) Then fallen=True
If fallen=True Then chip_pos_y=chip_pos_y+1
If chip_pos_x>580-ImageWidth(chip) Then fallen=False

Jetzt musst du den Chip nur noch an chip_pos_y zeichnen und vorher chip_pos_y auf die gewünschte Höhe stellen. z.B.:
Code: [AUSKLAPPEN]
chip_pos_y=50


Dies ist nur ein Beispiel. Ausarbeiten kannst du das hoffentlich selbst. Immer schneller fallen und so.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

viper199

BeitragSo, März 02, 2008 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank euch beiden!
ähnlich nur einiges unentwickelter Rolling Eyes hatte ich es zuvor auch nur
der chip folgt weiterhin der Maus sie soll ja liegen bleiben ^^
jemand eine Idee was ich falsch mache?

Code: [AUSKLAPPEN]

AppTitle "4 Gewinnt"
Graphics 640,580,16,2
SetBuffer BackBuffer()

Global player1   =   LoadImage("Bilder\chip_rot.bmp")
Global player2   =   LoadImage("Bilder\chip_gelb.bmp")
Global bg2      =   LoadImage("Bilder\bg2.bmp")

MaskImage bg2 , 255, 255, 255
MaskImage player1 , 255, 255, 255
MaskImage player2 , 255, 255, 255

bg2_pos_y=100

If MouseHit(1) Then fallen=True
If fallen=True Then player1_pos_y=player1_pos_y+1
If fallen=True Then player1_pos_x= 50
If player1_pos_x>580-ImageWidth(player1) Then fallen=False


Repeat
Cls

DrawImage player1, MouseX(), MouseY()
DrawImage player2, player2_pos_x, player2_pos_y
DrawImage bg2, bg2_pos_x, bg2_pos_y

Flip
Until KeyHit(5)
End


Danke!

Der Eisvogel

BeitragSo, März 02, 2008 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Das hier:
Code: [AUSKLAPPEN]
If MouseHit(1) Then fallen=True
If fallen=True Then player1_pos_y=player1_pos_y+1
;If fallen=True Then player1_pos_x= 50; -->diese Zeile ist unnötig
If player1_pos_x>580-ImageWidth(player1) Then fallen=False

muss in die Schleife.

2. Du musst den Chip natürlich auch an "player1_pos_y" zeichnen.
Code: [AUSKLAPPEN]
DrawImage player1, MouseX(),player1_pos_y
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

viper199

BeitragSo, März 02, 2008 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
okay viele dank FUnktioniert =)

viper199

BeitragSo, März 02, 2008 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay und neues problem, ich hoffe es kann mir hier wieder jemand helfen,
ich habe mich dazu entschieden den chip mit hilfe einer Kollision zu stoppen,
doch irgendwie rennt er trozdem weiter!

Wäre cool wenn mir jemand sagen könnte warum das so ist =S


Code: [AUSKLAPPEN]

AppTitle "Vier Gewinnt"
Graphics 640,580,16,2
SetBuffer BackBuffer()

Global player1   =   LoadImage("Bilder\chip_rot.bmp")
Global player2   =   LoadImage("Bilder\chip_gelb.bmp")
Global bg1      =   LoadImage("Bilder\gitter.bmp")
Global bg2      =   LoadImage("Bilder\bg2.bmp")

MaskImage bg1 , 255, 255, 255
MaskImage bg2 , 255, 255, 255
MaskImage player1 , 255, 255, 255
MaskImage player2 , 255, 255, 255

bg1_pos_y=100
bg2_pos_y=100

Repeat
Cls

If MouseHit(1) Then fallen=True
If fallen=True Then player1_pos_y=player1_pos_y+3
If ImagesCollide(player1,player1_pos_x,player1_pos_y,0,bg1,255,102,0) Then player1_pos_y=463

DrawImage bg1, bg1_pos_x, bg1_pos_y
DrawImage player1, MouseX(), player1_pos_y
DrawImage player2, player2_pos_x, player2_pos_y
DrawImage bg2, bg2_pos_x, bg2_pos_y

Flip
Until KeyHit(1)
End
 

bruce85

BeitragMo, März 03, 2008 4:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Kollision statt findet, dann musst Du auch wieder fallen auf false setzen, sonst wird die Bewegung weiterhin ausgeführt:

Code: [AUSKLAPPEN]
If ImagesCollide(player1,player1_pos_x,player1_pos_y,0,bg1,255,102,0) Then player1_pos_y=463 : fallen = false


MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

Pitje Puck

Betreff: zur Hilfe

BeitragMo, März 03, 2008 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Viper,
ich persönlich würde die Sache mit der Kollisionsabfrage vergessen. Du brauchst erstmal ein Array, das dein Spielfeld repräsentiert. Wenn du dann den Spielstein in einen Slot fallen lässt, kennst du ja die Y-Position ab der der Stein nicht mehr weiterfallen soll. Nämlich die Anzahl der freien Felder*die Höhe des einzelen Feldes. An dem Punkt solltest du den fallenden Stein löschen und im Array vermerken. Die Steine im Array kannst du dann an ein anderen Stelle in der Hauptschleife zeichnen lassen.
Falls das zu schwierig ist, frag nochmal nach.
Und wenn jemand denkt das wäre Mumpitz, bitte ergänzen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group