Probleme im Code - Anfänger

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Shai

Betreff: Probleme im Code - Anfänger

BeitragSa, Sep 25, 2004 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

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 Wink


Wäre dankbar für jede Hilfe und Tipps.

YellowRider

Ehemaliger Admin

BeitragSa, Sep 25, 2004 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 25, 2004 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Er bewegt sich dennoch nicht und überspringt die Schleife trotzdem.

YellowRider

Ehemaliger Admin

BeitragSa, Sep 25, 2004 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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) Smile

Ctuchik

BeitragSa, Sep 25, 2004 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Sep 25, 2004 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

YellowRider

Ehemaliger Admin

BeitragSa, Sep 25, 2004 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
eigendlich nur nach 2 (runde = 1)
 

Shai

BeitragSa, Sep 25, 2004 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile
  • Zuletzt bearbeitet von Shai am Sa, Sep 25, 2004 13:06, insgesamt einmal bearbeitet

Hubsi

BeitragSa, Sep 25, 2004 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Blatolo

BeitragSa, Sep 25, 2004 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 25, 2004 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy

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

BeitragSa, Sep 25, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group