Problem beim ersten Spiel
Übersicht

FlotzBetreff: Problem beim ersten Spiel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen!
Ich habe vor einer Zeit angefangen mich mit BlitzMax zu beschäftigen und dachte nun, dass es an der Zeit sei, das erste kleine Spiel zu programmieren. Natürlich nichts tolles... Es soll mal etwas Snake-ähnliches werden. Bisher kriege ich leider nur ein rotes Quadrat(rot.png) dazu, sich wie der "Kopf" von der Snake zu bewegen. Sprich ich kann ihn steuern, aber natürlich nicht dahin, wo er einen Step zuvor war. Meine Frage wäre jetzt, ob mir jemand sagen kann, wie ich diesen "Kopf" praktisch dubliziere und ihn etwas zeit(bzw. orts-)versetzt hinter dem Anfangsstück hinterherlaufen lasse. Am Ende soll die Schlange also aus vielen hintereinander gereihten roten Quadraten bestehen und sich genauso bewegen, wie bei Snake auch... Ich hoffe, das war einigermaßen verständlich : ) Anbei mal mein Code mit dem Hauptteil und der Funktion "laufschlange(richtung)" Ich entschuldige mich im vorraus für eventuell dumme Fehler oder unübersichtliche Deklarationen! : ) Vielen Dank schonmal!! Gruß, Flo Code: Import brl.pngloader Graphics 800, 600, 0, 0 Global timer:TTimer = CreateTimer(60) Global hintergrund:TImage = LoadImage("background.jpg") Global element:TImage = LoadImage("rot.png") Global x:Int = 0 Global y:Int = 0 Global xAlt:Int = 0 Global yAlt:Int = 0 Global schlange:Int = 0 Global richtung:Int = 0 Global DirOld:Int = 3 While(KeyHit(KEY_ESCAPE) = False) Cls WaitTimer(timer) If((0 < x < 770) And (0 < y < 580)) schlange = schlange + 1 xAlt = x yAlt = y Cls TileImage hintergrund, 0, 0 If(KeyHit(KEY_DOWN)) richtung = 4 EndIf If(KeyHit(KEY_UP)) richtung = 2 EndIf If(KeyHit(KEY_LEFT)) richtung = 1 EndIf If(KeyHit(KEY_RIGHT)) richtung = 3 EndIf laufschlange(richtung) Else 'Schade Schade, vorbei! End If Flip Wend Function laufschlange(richtung:Int) If ((richtung = 4) And (DirOld <> 2)) y = y + 5 x = xAlt DrawImage element, xAlt, y DirOld = 4 Else If ((richtung = 3) And (DirOld <> 1)) x = x + 5 y = yAlt DrawImage element, x, yAlt DirOld = 3 Else If ((richtung = 2) And (DirOld <> 4)) y = y - 5 x = xAlt DrawImage element, xAlt, y DirOld = 2 Else If ((richtung = 1) And (DirOld <> 3)) x = x - 5 y = yAlt DrawImage element, x, yAlt DirOld = 1 ElseIf richtung = 0 x = x + 5 y = 200 DrawImage element, x, y Else richtung = DirOld Print ("Geht nicht") laufschlange(DirOld) EndIf End Function Edit: CodeTage eingefügt. MfG BladeRunner |
||
- Zuletzt bearbeitet von Flotz am Fr, Apr 03, 2009 13:43, insgesamt einmal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Benutz bitte die Code-Tags für deinen Code, dann ist das besser zu lesen
2. Rücke auch in der IDE deinen Code ein, damit du besseren Überblick behältst. Das wird für die meisten hier das MInimum sein um sich mit deinem Code zu befassen. 3. Benutze superstrict. Immer. Es hilftviele Fehler zu vermeiden 4. Zu Deinem Problem. mache einen Type dafür, der ein Feld auf den nachfolgenden Type ("child") enthält, dann kannst Du dich durch die Typestruktur hangeln und für jedes Feld die Position zum Vorgänger abgleichen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group