Snake-Clone:Object doenst exist

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

RPG-Fan

Betreff: Snake-Clone:Object doenst exist

BeitragSo, Okt 02, 2005 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe einen Snake-Clone gemacht, der wäre schon spielbereit, wenn nicht bei der Kollisions-Abfrage der Fehler Object doesnt exist kommen würde.
Hier ist mein Code, ich finde da wirklich keine Lösung für mein Problem Confused :
BlitzBasic: [AUSKLAPPEN]

version#=0.00
ver$=Left(version#,4)
Graphics(320,320,16,2)
AppTitle(\"Snaky \"+ver$)

;Variablen
Const oben=200
Const unten=208
Const rechts=205
Const links=203

ClsColor 155,155,155
Cls
Global kopf=CreateImage(16,16)
SetBuffer ImageBuffer(kopf)
Color 255,0,0
Rect 0,0,16,16

Global body=CreateImage(16,16)
SetBuffer ImageBuffer(body)
Color 255,155,0
Rect 0,0,16,16

Global futter=CreateImage(16,16)
SetBuffer ImageBuffer(futter)
Color 0,0,255
Rect 0,0,16,16

Global bewegung
Global snakespeed=50
Global direction=rechts
Global teil.snaketeil
Global kopfx=11
Global kopfy=9
Global Punkte

Type snaketeil
Field x
Field y
End Type

For i=0 To 4
teil.snaketeil=New snaketeil
teil\x=11-4+i
teil\y=9
Next

SetBuffer FrontBuffer()
;Game
Color 0,255,0
Text 20,50,\"Taste drücken, um Spiel zu starten!\"
While n=0
SeedRnd MilliSecs()
futterx=Rand(0,19)
futtery=Rand(0,19)
If futtery=9 And futterx<7 And futterx>11 Or futtery<>9 Then
n=1
EndIf
Wend
WaitKey()
anfang=MilliSecs()

SetBuffer BackBuffer()
Cls
Repeat
Cls
If KeyHit(unten) Then
If direction<>oben Then
direction=unten
EndIf
EndIf

If KeyHit(links) Then
If direction<>rechts Then
direction=links
EndIf
EndIf

If KeyHit(rechts) Then
If direction<>links Then
direction=rechts
EndIf
EndIf

If KeyHit(oben) Then
If direction<>unten Then
direction=oben
EndIf
EndIf



If MilliSecs()-bewegung>snakespeed Then
bewegung=MilliSecs()

;alles versetzen
kopfx=kopfx-(direction=links)+(direction=rechts)
kopfy=kopfy-(direction=oben)+(direction=unten)
If kopfx<0 Then kopfx=19
If kopfx>19 Then kopfx=0
If kopfy<0 Then kopfy=19
If kopfy>19 Then kopfy=0

If kopfx=teil\x And kopfy=teil\x And (teil<>Last snaketeil) Then
Text 150,160,\"Game Over\"
FlushKeys()
WaitKey()
End
EndIf

If kopfx=futterx And kopfy=futtery Then
futterx=Rand(0,19):futtery=Rand(0,19)
gegessen=1
For o=250 To 25 Step -25
If snakespeed=o Then
l=o/25
Punkte=Punkte+l
EndIf
Next

Else
gegessen=0
EndIf

teil.snaketeil=New snaketeil
teil\x=kopfx
teil\y=kopfy

If gegessen=0 Then
Delete First snaketeil
EndIf

EndIf

DrawImage futter,futterx*16,futtery*16

For teil.snaketeil=Each snaketeil
DrawImage body,teil\x*16,teil\y*16
Next

DrawImage kopf,kopfx*16,kopfy*16

Text 0,0,\"Punkte: \"+Punkte

Flip

Until KeyHit(1)
End

Bei "If kopfx=teil\x And kopfy=teil\x And (teil<>Last snaketeil) Then" meldet er immer den Fehler.
Finde ich komisch, dass es bei diesem Snake-Tut im anderen Forum funktioniert und bei dem Code hier nicht.:/

simi

BeitragSo, Okt 02, 2005 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke mal, das problem ist, dass kein Typeeintrag ausgewählt ist....

Deshalb machst du das ganze am Besten in eine For-Each-Schleife, dann werden nämlich auch alle Teile überprüft Wink

und am besten rückst du deinen code noch (richtig) ein Wink


cu simi
 

RPG-Fan

BeitragSo, Okt 02, 2005 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du das ungefähr so?
BlitzBasic: [AUSKLAPPEN]

For teil.snaketeil=Each snaketeil
If kopfx=teil\x And kopfy=teil\x And (teil<>Last snaketeil) Then
Text 150,160,\"Game Over\"
FlushKeys()
WaitKey()
End
EndIf
Next

Das Spiel stürzt dann aber andauernd ab.Sad
Und den Sinn erfüllt es auch nicht.:/
Liegt das daran, dass jedes mal so viel geprüft werden muss?
Wenn ja, kann man das irgendwie besser lösen?

simi

BeitragSo, Okt 02, 2005 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
sollte eigentlich so gehen Wink

wo genau stürzt es denn ab (vielelicht mal debugger einschalten, wenn er noch nicht eingeschlatet ist....)??

und dann hat es noch einen Fehler:
Zitat:
If kopfx=teil\x And kopfy=teil\y And (teil<>Last snaketeil) Then
sollte es heissen Wink
 

RPG-Fan

BeitragSo, Okt 02, 2005 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt stürzt es nciht mehr ab. Shocked
Vorher stürzte es einfach so ab(zufällig) und der Debugger hat sich sofort geschlossen.
Lag vielleicht an meiner Grafikkarte, die stürzt andauernd ab.Obwohl das bei so einem leicht darzustellenden Spiel noch nie passiert ist.
Und das mit dem Game Over funktioniert jetzt auch! Smile
Danke, simi! Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group