Probleme im Code - Anfänger
Übersicht BlitzBasic Beginners-Corner
ShaiBetreff: Probleme im Code - Anfänger |
Sa, Sep 25, 2004 12:01 Antworten mit Zitat |
|
---|---|---|
Hallo
Ich bin ein absoluter Neuling was programmieren angeht und habe keine Erfahrung darin, bis auf ein bisschen in Basic und Turbo Pascal. Ich finde BlitzBasic ganz interessant und wollte das mal testen und habe mich schonmal durchs Tutorial gekämpft und versuche jetzt mal nach und nach ein Spiel zusammen zu bekommen. Ich hab mir gedacht als Einstieg wäre sowas wie ein billiger und simpler Civ Klon gut. Ich fange damit an einen Siedler auf einer Karte rumirren zu lassen und ihn eine Stadt am geeigneten Standpunkt aufbauen zu lassen. Soweit so gut. Nur bin ich jetzt schon auf mein erstes Problem gestoßen. Ich kann meinen Siedler nicht bewegen. Mein bisheriger Code (heut morgen angefangen hehe) Code: [AUSKLAPPEN] Graphics 800, 600, 16, 1 SetBuffer BackBuffer() SeedRnd MilliSecs() ; Der Siedler als Bild laden siedler0 = LoadImage("siedler.bmp") siedler1 = LoadImage("siedler1.bmp") MaskImage siedler0, 0, 0, 255 MaskImage siedler1, 0, 0, 255 ; Karte laden karte = LoadImage("karte.bmp") MaskImage karte, 255, 0, 255 ; Karte initialisieren DrawImage karte, 0,0 ; Siedlerstart initialisieren x = Rnd(1,550) y = Rnd(1,550) DrawImage siedler0, x, y Flip runde = 1 Repeat runde = runde + 1 ; Siedler bewegen If KeyHit(200) Then ;nach oben DrawImage siedler0, x, y - 50 ElseIf KeyHit(208) Then ;nach unten DrawImage siedler0, x, y + 50 ElseIf KeyHit(203) Then ;nach links DrawImage siedler0, x - 50, y ElseIf KeyHit(205) Then ;nach rechts DrawImage siedler0, x + 50, y EndIf Flip Until runde = 3 WaitKey Wie gesagt, es geht um den letzten teil... Das ganze ist natürlich noch nicht animiert. Also bitte keine Kommentare von wegen das ist billig oder so. Ich weiss das auch Ich will einfach das Bild von dem Siedler je nach Tastendruck verschieben lassen. Es funktioniert jedoch nicht. Er überspringt sogesehen die Schleife. Ich gehe davon aus das was mit diesen Flips nicht stimmt. Da bin ich noch nicht ganz dahinter gekommen Wäre dankbar für jede Hilfe und Tipps. |
||
YellowRiderEhemaliger Admin |
Sa, Sep 25, 2004 12:08 Antworten mit Zitat |
|
---|---|---|
Ich glaub nicht dass du dir die tutorials von www.robsite.de durchgelesen hast!
Code: [AUSKLAPPEN] If keydown(200) then y=y-2
If keydown(208) then y=y+2 If keydown(203) then x=x-2 If keydown(205) then x=x+2 drawimage siedler0,x,y |
||
Shai |
Sa, Sep 25, 2004 12:22 Antworten mit Zitat |
|
---|---|---|
Er bewegt sich dennoch nicht und überspringt die Schleife trotzdem. | ||
YellowRiderEhemaliger Admin |
Sa, Sep 25, 2004 12:43 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics 800, 600, 16, 1
SetBuffer BackBuffer() SeedRnd MilliSecs() ; Der Siedler als Bild laden siedler0 = LoadImage("siedler.bmp") siedler1 = LoadImage("siedler1.bmp") MaskImage siedler0, 0, 0, 255 MaskImage siedler1, 0, 0, 255 ; Karte laden karte = LoadImage("karte.bmp") MaskImage karte, 255, 0, 255 x = Rnd(1,550) y = Rnd(1,550) Repeat cls ; Siedler bewegen If keydown(200) then y=y-2 If keydown(208) then y=y+2 If keydown(203) then x=x-2 If keydown(205) then x=x+2 DrawImage karte, 0,0 drawimage siedler0,x,y Flip Until keydown(1) du beendest das spiel nach 2 schleifendurchlaufen (Until runde = 3) |
||
Ctuchik |
Sa, Sep 25, 2004 12:45 Antworten mit Zitat |
|
---|---|---|
wenn du machst
Code: [AUSKLAPPEN] repeat runde = runde + 1 until runde = 3 dann beendet er das programm ja schon nach 3 frames ... so sollte es gehn: Code: [AUSKLAPPEN] Repeat Cls If keydown(200) then y=y-2 ;oben If keydown(208) then y=y+2 ;unten If keydown(203) then x=x-2 ;links If keydown(205) then x=x+2 ;rechts drawimage siedler0,x,y ;zeichnen Flip Until KeyHit(1) ;Bei drücken von Esc beenden |
||
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
RallimenSieger des 30-EUR-Wettbewerbs |
Sa, Sep 25, 2004 12:46 Antworten mit Zitat |
|
---|---|---|
er überspringt die schleife nicht, sonder läuft diese genau 3 mal durch
Code: [AUSKLAPPEN] runde = runde + 1
.. .. until runde =3 mach besser mit Code: [AUSKLAPPEN] until keyhit(1)
ist die ESC taste war ich wohl zu lahm...... |
||
[BB2D | BB3D | BB+]
|
- Zuletzt bearbeitet von Rallimen am Sa, Sep 25, 2004 12:49, insgesamt einmal bearbeitet
YellowRiderEhemaliger Admin |
Sa, Sep 25, 2004 12:48 Antworten mit Zitat |
|
---|---|---|
eigendlich nur nach 2 (runde = 1) | ||
Shai |
Sa, Sep 25, 2004 12:57 Antworten mit Zitat |
|
---|---|---|
Vielen dank.
Aber ich wüsste gerne wo mein Denkfehler liegt. Wartet das Programm bei meiner Schleife denn nicht bis ich eine der Pfeiltasten drücke? Achja, das Spiel soll eigentlich rundenbasiert sein. Daher die Schleife mit 2 Runden. So kann er sich endlos bewegen und es passiert nix weiter. Nach der Bewegung kommen ja noch andere Dinge |
||
- Zuletzt bearbeitet von Shai am Sa, Sep 25, 2004 13:06, insgesamt einmal bearbeitet
Hubsi |
Sa, Sep 25, 2004 12:58 Antworten mit Zitat |
|
---|---|---|
Nö | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blatolo |
Sa, Sep 25, 2004 12:59 Antworten mit Zitat |
|
---|---|---|
Nein das tut es nicht.
Dafür müsstest du waitkey verwenden. Im Moment wird in den beiden Schleifendurchläufen nur geprüft ob eine taste gedrückt wurde. |
||
Shai |
Sa, Sep 25, 2004 13:12 Antworten mit Zitat |
|
---|---|---|
So
Dank eurer Hilfe hab ich es nun so hinbekommen wie ich es wollte. Und es lag eigentlich nur daran das ich ein Waitkey vergessen habe Code: [AUSKLAPPEN] Graphics 800, 600, 16, 1 SetBuffer BackBuffer() SeedRnd MilliSecs() ; Der Siedler als Bild laden siedler0 = LoadImage("siedler.bmp") siedler1 = LoadImage("siedler1.bmp") MaskImage siedler0, 0, 0, 255 MaskImage siedler1, 0, 0, 255 ; Karte laden karte = LoadImage("karte.bmp") MaskImage karte, 255, 0, 255 DrawImage karte, 0,0 ; Siedlerstart initialisieren x = Rnd(1,550) y = Rnd(1,550) DrawImage siedler0, x, y Flip Runde = 0 Repeat Runde = Runde + 1 ; Siedler bewegen WaitKey If KeyHit(200) Then y=y-50 If KeyHit(208) Then y=y+50 If KeyHit(203) Then x=x-50 If KeyHit(205) Then x=x+50 DrawImage karte, 0,0 DrawImage siedler0, x, y Flip Until Runde = 3 WaitKey |
||
René Meyer |
Sa, Sep 25, 2004 16:42 Antworten mit Zitat |
|
---|---|---|
Zitat: Ich hab mir gedacht als Einstieg wäre sowas wie ein billiger und simpler Civ Klon gut.
Das ist ganz und gar kein guter Einstieg. :-) Fang besser mit einem wirklich einfachen Spiel an wie einem Space-Shooter oder Pac-Man. Ein Strategiespiel ist auf jeden Fall eine Aufgabe für Fortgeschrittene. |
||
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group