Warum komme ich auf der anderen seite nicht raus??
Übersicht

![]() |
SephkaBetreff: Warum komme ich auf der anderen seite nicht raus?? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 1024,768,32,2
SetBuffer BackBuffer() SeedRnd MilliSecs() head_x = 2 head_y = 22 Global R=0,G=0,B=0 Const Nord = 10 Const Ost = 20 Const Sued = 30 Const West = 40 Richtung = Ost Koerper = LoadImage("GFX\Körper.bmp") Kopf = LoadAnimImage("GFX\Kopf.bmp",32,32,0,4) MaskImage Koerper,255,255,255 MaskImage Kopf,255,255,255 ;Schablone für Teile Type TTeil Field x Field y End Type ;Fünf Körperteile zu beginn For i=0 To 3 Teil.TTeil = New TTeil Teil\x = head_x - 30 + i ;Damit die Schlange nach Westen gerichtet ist Teil\y = head_y Next Nahrung_x = Rand(0,1024) Nahrung_y = Rand(0,768) ;Hauptschleife Repeat ;Hintergrund Cls ClsColor R,G,B ;Norden? If KeyHit(200) Then If Richtung <> Sued Then Richtung = Nord EndIf EndIf ;Osten? If KeyHit(205) Then If Richtung <> West Then Richtung = Ost EndIf EndIf ;Süden? If KeyHit(208) Then If Richtung <> Nord Then Richtung = Sued EndIf EndIf ;Westen? If KeyHit(203) Then If Richtung <> Ost Richtung = West EndIf EndIf ;Zeit abfragen If MilliSecs() - letztebewegung > 50 Then ;Je weniger, desto schneller! letztebewegung = MilliSecs() ;Bewegung durchführen…. head_x = head_x - (Richtung=West) + (Richtung=Ost) head_y = head_y - (Richtung=Nord) + (Richtung=Sued) If head_x < 0 Then head_x = 1024 If head_x > 1024 Then head_x = 0 If head_y < 0 Then head_y = 768 If head_y > 768 Then head_y = 0 If head_x = Nahrung_x And head_y = Nahrung_y Then Nahrung_x = Rand(0,1024) : Nahrung_y = Rand(0,768) gegessen = 1 Punkte = Punkte + 1 Else gegessen = 0 EndIf Teil.TTeil = New TTeil ;Instanz erstellen Teil\x = head_x ;Position des Kopfes Teil\y = head_y If gegessen = 0 Then Delete First TTeil EndIf End If ;Hintergrundfarbe ändern ;Alle Körperteile durchgehen For Teil.TTeil = Each TTeil DrawImage Koerper,Teil\x*32,Teil\y*32 ;Kollision prüfen If head_x = Teil\x And head_y = teil\Y And (teil<>Last tteil) Then Cls Color 255,255,255 Text 160,120,"G A M E O V ER",1,1 Flip FlushKeys WaitKey End EndIf Next ;Kopf zeichnen Color 255,255,255 DrawImage Kopf,head_x*32,head_y*32,richtung/10-1 ;Nahrung zeichnen Color 255,255,0 Rect Nahrung_x*32,Nahrung_y*32,32,32,1 ;Punkte schreiben Color 255,255,255 Text 0,0,"Punkte:" +Punkte Flip Until KeyHit(1) End Warum komme ich nicht auf der anderen Seite raus wenn ich aus dem Bildschirm raus bin ?? |
||
![]() |
Skabus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal ein paar allgemeine Dinge, falls du die nicht bereits weißt und nur zum testen keinen Bock hattest.
Du solltest immer jpg oder PNG für deine Bilder verwenden.Das spart Platz und hat noch einen anderen Vorteil: Bei PNG kannst du z.B. bei "The GIMP" Transparenz auch direkt in das Bild reinspeichern, sodass du nicht immer MaskImage schreiben musst um die entsprechende Farbe transparent zu haben. Zu deinem Problem: Zitat: head_x = head_x - (Richtung=West) + (Richtung=Ost)
head_y = head_y - (Richtung=Nord) + (Richtung=Sued) If head_x < 0 Then head_x = 1024 If head_x > 1024 Then head_x = 0 If head_y < 0 Then head_y = 768 If head_y > 768 Then head_y = 0 Hast du bereits deine Wert überprüft?Sollte der Wert durch die Subtraktion 0 werden wird sie niemals ausgeführt. Hoffe ich konnte ein bissle helfen! MfG Ska EDIT: habs eben probiert, die If-Kurzschreibweise funzt. Darum geändert |
||
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat
aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit! Ein SNES-RPG mit Handels- und Wirtschaftselemente. Infos?Hier: http://www.blitzforum.de/worklogs/234/ Besucht meine Seite: www.seelenfriedhof.de.vu |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Hast du bereits deine Wert überprüft?Sollte der Wert durch die Subtraktion 0 werden wird
sie niemals ausgeführt. Hm Skabus, ich weis nicht ob es an mir liegt aber ich wüsste nicht was du damit meinst. Welchen Wert überprüfen? Welche Subtraktion und was wird niemals ausgeführt? @Sephka Kleiner Flüchtigkeitsfehler. Du hast vergessen, dass head_x und head_y noch mit 32 malgenommen werden, also wird die Schlange erst nach 768 bzw 1024 * 32 pixeln wieder hereinkommen. |
||
1 ist ungefähr 3 |
![]() |
Skabus |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ich habs gerade mal probiert...
Ja das wurgel,es lag nicht an den Werten.^^ Mir passiert das oft, dass ich extra hinschreibe < 0 und dann wird der Wert (in dem Fall head_y oder y) exakt 0 und ich wundere mich, hä? Aber das war hier in dem Fall nicht so. Wie das wurgel sagt, es ist einfach weil du die Werte vergessen hast richtig anzupassen. Also: Code: [AUSKLAPPEN] If head_x < 0 Then head_x = 1024/32
If head_x > 1024/32 Then head_x = 0 If head_y < 0 Then head_y = 768/32 If head_y > 768/32 Then head_y = 0 Dann gings bei mir auch^^ MfG Ska |
||
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat
aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit! Ein SNES-RPG mit Handels- und Wirtschaftselemente. Infos?Hier: http://www.blitzforum.de/worklogs/234/ Besucht meine Seite: www.seelenfriedhof.de.vu |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group