Sehr ausführliches Snake-Tut für Noobs

Übersicht BlitzBasic FAQ und Tutorials

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Preakz

BeitragMo, Jan 23, 2012 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir jmd verraten wie ich das anpasse an meine Grafik ?...



BlitzBasic: [AUSKLAPPEN]
ResX = 810 ;(Spielfeld = 800x600)
ResY = 610 ;(bilder/32 = 24,6875, 18,4375
Graphics ResX,ResY,32,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Global mapx,mapy,id
Global spielstart = False
Global counter

head_x = 79
head_y = 59

Const Nord = 1
Const Ost = 2
Const Sued = 3
Const West = 4
Richtung = Ost

Type TTeil
Field x
Field y
End Type

For i=0 To 4
Teil.TTeil = New TTeil
Teil\x = head_x - 4 + i ;Damit die Schlange nach Westen gerichtet ist
Teil\y = head_y
Next
Nahrung_x = Rand(0,31)
Nahrung_y = Rand(0,23)

;_____________________BILDER___________________________________
Bild = LoadImage("media/map/map.png")
Playbtn = LoadImage("media/button/play.png")
Playbtnover = LoadImage("media/button/play_over.png")
;SNAKE KOPF
Snakekopflinks = LoadImage("media/snake/left/snake_left_head.png")
Snakekopfrechts = LoadImage("media/snake/right/snake_right_head.png")
Snakekopfoben = LoadImage("media/snake/up/snake_up_head.png")
Snakekopfunten = LoadImage("media/snake/down/snake_down_head.png")
;Snake Körper
Snakebodylinks = LoadImage("media/snake/left/snake_left_body.png")
Snakebodyrechts = LoadImage("media/snake/right/snake_right_body.png")
Snakebodyoben = LoadImage("media/snake/up/snake_up_body.png")
Snakebodyunten = LoadImage("media/snake/down/snake_down_body.png")
;Snake Food
food = LoadImage("media/food/food_apple.png")

;____Masken

MaskImage playbtn, 255,255,255
MaskImage playbtnover, 255,255,255
;Snakemasken (PINK!"255,0,255)
MaskImage Snakekopflinks,255,0,255
MaskImage Snakekopfrechts,255,0,255
MaskImage Snakekopfoben,255,0,255
MaskImage Snakekopfunten,255,0,255
MaskImage Snakebodylinks,255,0,255
MaskImage Snakebodyrechts,255,0,255
MaskImage Snakebodyoben,255,0,255
MaskImage Snakebodyunten,255,0,255
MaskImage food,255,0,255

;________________________________________________________________________
mapx = ResX - 10
mapy = ResY - 10
mausbreite = 1
maushoehe = 1



While Not KeyDown(1)


If spielstart = False Then
Cls
DrawImage Bild, 0,0
DrawImage Food,275,200
DrawImage Snakekopfrechts,250,200
DrawImage Snakebodyrechts,225,200
DrawImage Snakebodyrechts,200,200

If(RectsOverlap(MouseX(), MouseY(), 1, 1, 300, 180, ImageWidth(playbtn),ImageHeight(playbtn)))Then
DrawImage Playbtnover,300,180
If MouseHit(1) Then
spielstart = True
EndIf
Else
DrawImage Playbtn,300,180

EndIf
EndIf





;SPIELSTART = TURE DANN
If spielstart = True Then

Cls
DrawImage Bild, 0,0
;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 < 20 Then head_x = 79
If head_x > 79 Then head_x = 20
If head_y < 20 Then head_y = 59
If head_y > 59 Then head_y = 20

If head_x = Nahrung_x And head_y = Nahrung_y Then
Nahrung_x = Rand(20,79) : Nahrung_y = Rand(20,59)
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

EndIf

;Alle Körperteile durchgehen
For Teil.TTeil = Each TTeil
Color 127,127,127
Rect Teil\x*10,Teil\y*10,10,10,1

;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
Rect head_x*10,head_y*10,10,10,1

;Nahrung zeichnen
Color 255,255,0
Rect Nahrung_x*10,Nahrung_y*10,10,10,1

;Punkte schreiben
Color 255,255,255
Text 0,0,"Punkte: "+Punkte

Text 20,400,MouseX()+"|"+MouseY()



Flip
EndIf


Flip






Wend
End




Habe das jetzt schon nach meinen wünschen optimiert .... aber der fail ist das er die map falsch zeichnet.... also wenn ich nach rechts mit der snake gehe ... verschwindet sie perfekt ... aber taucht am falschen punkt auf ... ca. mittig der map. , wenn ich das gleiche nach unten mache passiert das gleiche nur auf dem y wert.... Mein fenster ist 810x610 groß ... das eigentliche Spielfeld soll 800x600 sein ...
wäre nett wenn mir da jemand helfen könnte.

Xeres

Moderator

BeitragMo, Jan 23, 2012 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte mach doch ein neues Thema auf, mit dem Verweis zu diesem Tutorial.
Hier ist nicht der Ort, um deinen Code zu analysieren. Danke.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Preakz

Betreff: Hat sich erledigt

BeitragMo, Jan 23, 2012 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat sich schon erledigt ;D ... mir is grade aufgefallen das ja alles mal 10 genommen wird

also hab ich die if abfrage kurz geändert jetzt funkt alles Smile

BlitzBasic: [AUSKLAPPEN]
If head_x < 10/10 Then head_x = 79
If head_x > 79 Then head_x = 10/10
If head_y < 10/10 Then head_y = 59
If head_y > 59 Then head_y = 10/10

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group