Code-Probleme (snake-clon) [erledigt]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

feuerball11

Betreff: Code-Probleme (snake-clon) [erledigt]

BeitragSo, Feb 15, 2009 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Als erstes mal ein schönes hallo.
Ich bin kommpletter anfänger in sachen prggramieren und habe die software(blitz 3d) erst sit meinem geburtstag am 11.02.2009. auserdem bin ich noch nie gut in foren zurecht-gekommen, und meine rechtschreibung/grammatick ist auch miserable....
also fals ich irgendwas falsch mache, bitte freundlich darauf hinweisen, und nicht beschimpfen(wie ich es in genug anderen foren erlebt habe)

also zur sache:

ich bin (meines erachtens) mit dem proggramieren schonr echt weit, aber komme momentan mit meinem 2. speil nicht weiter.

es habdelt sich um einen art snake-clon, indem es aber keine direkte schlange gibt, sondern ein punkt der eine linie hinterlässt. auserdem bestehen die hindernisse aus zufällig angeordnenten rechtecken, die sich nach jedem einsammeln von einem punkt neu anordnen. in der ersten runde leuft es ja schon ganz gut, aber wen ich dan irgendetas berühre, fängt der bildschir,m an wield zu flimmern, und dann ist game over.... kann mir jemand dabei helfen? ich habe den code mehrfach durchgelesen, aber nichts gefunden..

ich bedanke mich im voraus für hilfe, und hoffe das ich gegen keine foren-regeln verstosen habe.

code:

Code: [AUSKLAPPEN]

.neustart
SeedRnd = MilliSecs()
leben = 9
Dim xrec(7)
Dim yrec(7)
Dim xrecs(7)
Dim yrecs(7)
Graphics 1280,1024,0,1
winkel = 90
xov= Rnd (0,1280)
yov= Rnd (0,1020)
runde = 0
ClsColor 255,255,255
Cls
score = 0
Repeat
   Color 0,255,0
   Text 10,10,"Punkte:" + score
   Text 1200,10,"Leben:" + leben
   Color 255,0,0
   If x# > xov And y# > yov And x# < xov+20 And y# < yov+20 Then
      tod = 1
      score = score + 10
      Cls
   EndIf
   For i = 0 To 6
      If x# > xrec(i) And x# < xrec(i) + xrecs(i) And y# > yrec(i) And y# < yrec(i) + yrecs(i) Then
         leben = leben - 1
         tod = 1
         Cls
      EndIf
   Next
      If leben < 0 Then
         ClsColor 0,0,0
         Cls
         Text 640,512,"GAME OVER",1,1
         Text 640,524,"Nochmal Spielen?",1,1
         Text 640,536,"Y für Ja/N für Nein",1,1
         Locate 635,548
         ende$ = Input()
         If ende$ = "Y" Then
            Goto neustart
         ElseIf ende$ = "N"  Then
            End
         EndIf
         If ende$ = "y" Then
            Goto neustart
         ElseIf ende$ = "n"  Then
            End
         EndIf
      EndIf
      If tod = 1 Or runde = 0
         kolirund = 0
         koliend = 0
         xov= Rnd (10,1250)
         yov= Rnd (0,990)
         For i = 0 To 6
            xrec(i) = Rnd (0,1080)
            yrec(i) = Rnd (0,824)
            xrecs(i) = Rnd (100,200)
            yrecs(i) = Rnd (100,200)
         Next
         Repeat
            If kolirund = 0 Then
               i1 = 0
               i2 = 1
               kolirund = 1
               Cls
            EndIf
            If kolirund = 1 Then
               If xrec(i1) + xrecs(i1) + 10 > xrec(i2) - 10 And xrec(i1) - 10 < xrec(i2) + xrecs(i2) + 10 And yrec(i1) - 10 < yrec(i2) + yrecs(i2) + 10 And yrec(i1) + yrecs(i1) + 10 > yrec(i2) - 10 Then
                  xrec(i1) = Rnd (0,1080)
                  yrec(i1) = Rnd (0,824)
                  xrecs(i1) = Rnd (100,200)
                  yrecs(i1) = Rnd (100,200)
                  xrec(i2) = Rnd (0,1080)
                  yrec(i2) = Rnd (0,824)
                  xrecs(i2) = Rnd (100,200)
                  yrecs(i2) = Rnd (100,200)
                  kolirund = 0
               EndIf
               If xrec(i1) +xrecs(i1) + 10 > x# And xrec(i1) - 10 < x# And yrec(i1) - 10 < y# And yrec(i1) + yrecs(i1) + 10 > y# Then
                  xrec(i1) = Rnd (0,1080)
                  yrec(i1) = Rnd (0,824)
                  xrecs(i1) = Rnd (100,200)
                  yrecs(i1) = Rnd (100,200)
                  kolirund = 0
               EndIf
               If xrec(i1) + xrecs(i1) > xov And xrec(i1) < xov + 20 And yrec(i1) + yrecs(i1) > xov And yrec(i1) > yov + 20 Then
                  xov= Rnd (10,1250)
                  yov= Rnd (0,990)
                  kolirund = 0
               EndIf
               If i2 = 6 And i1 = 0 Then
                  i1 = 1
                  i2 = 2
               EndIf
               If i2 = 6 And i1 = 1 Then
                  i1 = 2
                  i2 = 3
               EndIf
               If i2 = 6 And i1 = 2 Then
                  i1 = 3
                  i2 = 4
               EndIf
               If i2 = 6 And i1 = 3 Then
                  i1 = 4
                  i2 = 5
               EndIf
               If i1 = 5 And i2 = 7 Then
                  koliend = 1
               EndIf
               If i2 = 6 And i1 = 4 Then
                  i1 = 5
                  i2 = 6
               EndIf   
            EndIf
            i2 = i2 + 1
         Until koliend = 1
         For i = 0 To 6
            Rect xrec(i),yrec(i),xrecs(i),yrecs(i)
         Next
      EndIf
      Color 0,0,255
      Oval xov,yov,20,20
      Color 255,0,0
      If runde = 0 Then
         x#= 640
         y#= 512
         Color 255,0,0
         Plot x#,y#
         runde=1
      EndIf
      If runde = 1 Then
      Color 255,0,0
      If KeyDown(203) Then
         winkel = winkel +2
      ElseIf KeyDown(205) Then
         winkel = winkel -2
      EndIf
      x# = x# + Cos (winkel)
      y# = y# - Sin (winkel)
      Plot x#,y#
      Plot x#+1,y#
      Plot x#,y#+1
      Plot x#-1,y#
      Plot x#,y#-1
      Plot x#+2,y#
      Plot x#,y#+2
      Plot x#-2,y#
      Plot x#,y#-2
   EndIf
   If x# > 1280 Then
      x#=x#-1280
   EndIf
   If x# < 0 Then
      x# = x#+1280
   EndIf
   If y# > 1020 Then
      y#=y#-1020
   EndIf
   If y# < 0 Then
      y# = y#+1020
   EndIf
   Delay (0010)
Until KeyHit(1)


ach und eins noch. bitte nicht gleich mit haufenweisen befehlen ankommen, ohne sie zu erklären. ich möchte beim erlernen der sprache alle befehle, die ich erlerne nach möglichkeit verstehen. wenn mir dann jemand eine kommplett neue möglichkeit vorschmeist, leuft zwar das programm, aber ich weis nict warum....
  • Zuletzt bearbeitet von feuerball11 am Do, Feb 19, 2009 13:46, insgesamt einmal bearbeitet

mabox

BeitragSo, Feb 15, 2009 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir deinen Code zwar nicht komplett ausgeführt, aber das Problem scheint offensichtlich zu sein, dass die Rechtecke nach einer Kollision ständig neu positioniert werden. Die Lösung dazu wäre, das positionieren der Rechtecke aus der Schleife herauszunehmen und eventuell in eine Funktion packen, denn deine Hauptschleife ist sowieso ziemlich unübersichtlich.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

feuerball11

BeitragSo, Feb 15, 2009 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
das problem ist, ich wollte eigentlich, das die rechtecke nicht miteinander zusammenstoßen, das heist, wen ich ein punkt sammle, werden die rechtecke neu positioniert, und zwar so , das sie nicht in der nähe von dem spieler, einem punkt, oder einem anderen rechteck befinden.

das ganze gilkt auch wen man ein leben verliert....

ps: was ist mit function gemeint?

mabox

BeitragSo, Feb 15, 2009 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, das macht es um einiges komplizierter, da sich die Rechtecke fast immer irgendwo berühren wenn man sie zufällig positioniert. Die beste Lösung dafür wäre warscheinlich die Rechtecke nacheinander an zufällige Stellen zu setzen. Wenn ein Rechteck dann ein anderes Berührt wird es nochmal neu positioniert, danach kommt erst das nächste Rechteck.

mit dem Befehl Function kann man Teile aus dem Hauptprogramm, welche öfter ausgeführt werden müssen in ein "Unterprogramm" auslagern. Dieses kann zu jedem Zeitpunkt ausgeführt werden.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

feuerball11

BeitragSo, Feb 15, 2009 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
1. genau sowas habe ich ja versucht.... mir viel aber keine bessere lösung ein...

2. ich verwende es doch nicht oft... (auser jede schleife zählt mit....)

3. trotzdem danke

mabox

BeitragSo, Feb 15, 2009 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, dann hab ich mir den Code nicht ausführlich genug angeschaut...vielleicht geh ich morgen nochmal dran.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

feuerball11

BeitragSo, Feb 15, 2009 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
joa... ist schon spät... trotzdem danke...

robotx

BeitragMo, Feb 16, 2009 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
In der ersten Version werden die Rechtecke in einem Array gespeichert, jedoch fehlt die Überprüfung, ob sie sich überlappen. Außerdem habe ich den Code in Funktionen aufgeteilt, sodass er übersichtlicher wird.

Die zweite Version nutzt Type für die Rechtecke (finde ich einfacher und besser erweiterbar) und hat auch eine mehr schlecht als recht funktionierende Überprüfung, ob die Rechtecke sich überschneiden.

Code: [AUSKLAPPEN]

;Snake Klon v0.1
AppTitle "Snake Clon"
Graphics 1280,1024,16,1
SeedRnd MilliSecs()


;-----------------------------------
;Variablen
;-----------------------------------


;-----------------------------------
;Spieler:

Global winkel = 90
Global playerX#, playerY#

Global leben%
Global runde%
Global score%
Global tod%



;-----------------------------------
;Rechtecke

Global maxRec% = 7 ;Die maximale Anzahl der Rechtecke

Dim rec (maxRec,maxRec,maxRec,maxRec)   ;xpos, ypos, width, height



;-----------------------------------
;Item

;Position
Global xov%
Global yov%




;-----------------------------------
;Erstelle das Spiel...
;-----------------------------------


;Rechtecke setzen
createRect ()
;Item setzen
createItem ()
;Spieler erstellen und dabei gleich die Position übergeben
createPlayer (640, 512)
;Spieldaten erstellen (Leben, Score,...)
createGame ()


;Einen Timer erstellen, damit das Spiel nicht zu schnell läuft
Global timer = CreateTimer (100)



;-----------------------------------
;--- Hauptschleife -----------------
;-----------------------------------
Repeat
   
   ;Updaten
   updatePlayer ()
   updateGame ()
   
   ;Zeichnen
   drawRect ()
   drawPlayer ()
   
   ;Hud
   Color 0,255,0
   Text 10,10,"Punkte:" + score
   Text 1200,10,"Leben:" + leben
   Color 255,0,0
   
   
   WaitTimer (timer)
   
Until KeyHit (1)



;-----------------------------------
;--- Funktionen --------------------
;-----------------------------------

;Den Spieler serstllen an der Position
;Parameter: xPos, yPos
Function createPlayer (tx, ty)
   
   playerX = tx
   playerY = ty
   
End Function


;Die Spieldaten laden:
;+Anzahl Leben
;+Anzahl gespielter Runden
;+Spieler Score
Function createGame ()
   
   leben = 9
   runde = 0
   score = 0
   
End Function



;Hier wird das Item zum Einsammeln erstellt
Function createItem ()
   
   ;Spieler Pos neu bestimmen
   xov = Rand (10,1250)
   yov = Rand (0,990)
   
   Local n%
   For n = 0 To maxRec
      If xov > rec (n,0,0,0) And xov < rec(n,0,0,0) + rec(0,0,n,0) Then
         xov = Rand (10,1250)
      EndIf
      If yov > rec(0,n,0,0) And yov < rec(0,n,0,0) + rec(0,0,0,n) Then
         yov = Rand (0,990)
      EndIf
   Next
   
End Function




;Die Rechtecke werden hier erstellt (und geprüft ob sie sich überlagern;
;Gegebenenfalls werden sie neu positioniert) --> noch nicht eingebaut
Function createRect ()
   Local ti%
   For ti = 0 To maxRec
      
      ;X Wert
      rec (ti,0,0,0) = Rand (0,1080)
      ;Y Wert
      rec(0,ti,0,0) = Rand (0,824)
      ;Width
      rec (0,0,ti,0) = Rand (100,200)
      ;Height
      rec (0,0,0,ti) = Rand (100,200)
      
   Next
   
   
End Function






Function drawRect ()
   Local i%
   
   For i = 0 To maxRec   
      Rect rec(i,0,0,0),rec(0,i,0,0),rec (0,0,i,0),rec(0,0,0,i)
   Next
   
End Function



;Hier werden Spielentscheidende Werte überprüft
;+Spieler ist tot?
;+Spieler hat keine Leben mehr
Function updateGame ()
   
   ;Neu starten einer Runde
   If tod = 1
      restart ()
   EndIf
   
   
   ;Neu starten des Spiels
   
   If leben < 0 Then
      newGame ()
   EndIf
   
End Function



;Diese Funktion überprüft die Steurung und Position des Spielers
;und gleichzeitig die Kollision mit den Rechtecken oder des Items
Function updatePlayer ()
   
   
   ;Kollision mit Item
   If playerX > xov And playerY > yov And playerX < xov+20 And playerY < yov+20 Then
      score = score + 10
      tod = 1
      Cls
   EndIf
   
   
   ;Kollision mit Rechteck
   Local n%
   For n = 0 To maxRec
      If playerX > rec(n,0,0,0) And playerX < rec(n,0,0,0) + rec(0,0,n,0) And playerY > rec(0,n,0,0) And playerY < rec(0,n,0,0) + rec(0,0,0,n) Then
         leben = leben - 1
         tod = 1
         Cls
      EndIf
   Next
   
   
   
   ;Spieler steuern
   If KeyDown(203) Then
      winkel = winkel + 2
   ElseIf KeyDown(205) Then
      winkel = winkel - 2
   EndIf
   
   
   ;X/Y Koordinaten berechnen
   playerX = playerX + Cos (winkel)
   playerY = playerY - Sin (winkel)
   
   
   ;Bildschirmränder überprüfen
   If playerX > 1280 Then
      playerX = 0
   EndIf
   If playerX < 0 Then
      playerX = 1280
   EndIf
   If playerY > 1020 Then
      playerY= 0
   EndIf
   If playerY < 0 Then
      playerY = 1020
   EndIf
   
   
End Function



;Zeichnet den Spieler und damit die Schlangenlinie
Function drawPlayer ()
   
   ;Spieler zeichnen
   Color 0,0,255
   Oval xov,yov,20,20
   Color 255,0,0
   
   Plot playerX, playerY
   Plot playerX+1, playerY
   Plot playerX, playerY+1
   Plot playerX-1, playerY
   Plot playerX, playerY-1
   Plot playerX+2, playerY
   Plot playerX, playerY+2
   Plot playerX-2, playerY
   Plot playerX, playerY-2
   
End Function


;Wenn der Spieler gestorben ist, dann wird das Level neu geladen
;+Rechtecke neu laden
;+neues Item laden
;+Spieler zurücksetzen
;+Rundenzahl erhöhen
Function restart ()
   
   Cls
   
   createRect ()
   
   createItem ()
   
   createPlayer (640 ,512)
   
   runde = runde + 1
   tod = 0
   
End Function



;Wenn der Spieler keine Leben mehr hat (leben < 0) wird gefragt,
;ob ein neues Spiel gestartet werden soll
Function newGame ()
   
   Local ende$
   
   ClsColor 0,0,0
   Cls
   
   Text 640,512,"GAME OVER",1,1
   Text 640,524,"Nochmal Spielen?",1,1
   Text 640,536,"Y für Ja/N für Nein",1,1
   Locate 635,548
   
   ende$ = Input("Hier eingeben: ")
   
   If ende = "Y" Or ende = "y" Then
      
      Cls
      
      
      createRect ()
      
      createItem ()
      
      createPlayer (640 ,512)
      
      createGame ()
      
      tod = 0
      
      
   ElseIf ende = "N" Or ende = "n"  Then
      End
   EndIf
   
   
End Function



Version mit Types:
Code: [AUSKLAPPEN]

;Snake Klon v0.1
AppTitle "Snake Clon"
Graphics 1280,1024,16,1
SeedRnd MilliSecs()


;-----------------------------------
;Variablen
;-----------------------------------


;-----------------------------------
;Spieler:

Global winkel = 90
Global playerX#, playerY#

Global leben%
Global runde%
Global score%
Global tod%



;-----------------------------------
;Rechtecke


Global maxRec% = 7 ;Die maximale Anzahl der Rechtecke

Type TRec
   
   Field id%
   Field x%
   Field y%
   Field width%
   Field height%
   
End Type
Global rec.TRec



;-----------------------------------
;Item

;Position
Global xov%
Global yov%




;-----------------------------------
;Erstelle das Spiel...
;-----------------------------------


;Rechtecke setzen
createRect ()
;Item setzen
createItem ()
;Spieler erstellen und dabei gleich die Position übergeben
createPlayer (640, 512)
;Spieldaten erstellen (Leben, Score,...)
createGame ()


;Einen Timer erstellen, damit das Spiel nicht zu schnell läuft
Global timer = CreateTimer (100)



;-----------------------------------
;--- Hauptschleife -----------------
;-----------------------------------
Repeat
   
   ;Updaten
   updatePlayer ()
   updateGame ()
   
   ;Zeichnen
   drawRect ()
   drawPlayer ()
   
   ;Hud
   Color 0,255,0
   Text 10,10,"Punkte:" + score
   Text 1200,10,"Leben:" + leben
   Color 255,0,0
   
   
   WaitTimer (timer)
   
   
Until KeyHit (1)



;-----------------------------------
;--- Funktionen --------------------
;-----------------------------------

;Den Spieler serstllen an der Position
;Parameter: xPos, yPos
Function createPlayer (tx, ty)
   
   playerX = tx
   playerY = ty
   
End Function


;Die Spieldaten laden:
;+Anzahl Leben
;+Anzahl gespielter Runden
;+Spieler Score
Function createGame ()
   
   leben = 9
   runde = 0
   score = 0
   
End Function



;Hier wird das Item zum Einsammeln erstellt
Function createItem ()
   
   ;Spieler Pos neu bestimmen
   xov = Rand (10,1250)
   yov = Rand (0,990)
   
   For rec = Each TRec
      If xov > rec\x And xov < rec\x + rec\width Then
         xov = Rand (10,1250)
      EndIf
      If yov > rec\y And yov < rec\y + rec\height Then
         yov = Rand (0,990)
      EndIf
   Next
   
End Function



;Die Rechtecke werden hier erstellt und geprüft ob sie sich überlagern;
;Gegebenenfalls werden sie neu positioniert
Function createRect ()
   
   Local n%
   Local tmpRec.TRec
   
   
   
   For n = 1 To maxRec
      
      rec = New TRec
      
      rec\id = n
      rec\width = Rand (100,200)
      rec\height = Rand (100,200)
      
      rec\x = Rand (0,1080)
      rec\y = Rand (0,850)
      
      
   Next
   
   
   
   Local koll% = 0
   
   Repeat
      
      For rec = Each TRec
         For tmpRec = Each TRec
            
            
            If rec <> tmpRec Then
               
               koll = RectCollision (rec\x, rec\y, rec\width, rec\height, tmpRec\x, tmpRec\y, tmpRec\width, tmpRec\height)
               
               If koll Then
                  tmpRec\width = Rand (100,200)
                  tmpRec\height = Rand (100,200)
                  
                  tmpRec\x = Rand (0,1080)
                  tmpRec\y = Rand (0,850)
               EndIf
               
            EndIf
            
            
         Next
      Next
   
   Until koll = 0      
   
   
   
   
End Function



;Kollision zwischen zwei Rechtecken
;Parameter:
;xPosition, yPosition, Breite, Höhe für jedes Rechteck
;Rückgabewert: True falls eine Kollision vorliegt
Function RectCollision% (x1%, y1%, w1%, h1%, x2%, y2%, w2%, h2%)
   
   Local xl%, yo%, xr%, yu%    ;Eckpunkte des umschriebenen Rechtecks: (xl,yo)-(xr-1,yu-1)
   
   ;Bestimmen der Eckpunktkoordinaten
   xl = x1
   yo = y1
   xr = x2 + w2
   yu = y2 + h2
   
   If x2 < x1 Then xl = x2
   If y2 < y1 Then yo = y2
   If x1 + w1 > x2 + w2 Then xr = x1 + w1
   If y1 + h1 > y2 + h2 Then yu = y1 + h1
   
   ;Prüfen auf Kollision
   
   If w1 + w2 > xr - xl And h1 + h2 > yu - yo Then Return True
   
End Function





;Löschen der alten Rechtecke
Function deleteRect ()
   For rec = Each TRec
      Delete rec
   Next
End Function



;Zeichnen der Rechtecke
Function drawRect ()
   
   For rec = Each TRec
      Rect rec\x, rec\y, rec\width, rec\height
   Next
   
End Function



;Hier werden Spielentscheidende Werte überprüft
;+Spieler ist tot?
;+Spieler hat keine Leben mehr
Function updateGame ()
   
   ;Neu starten einer Runde
   If tod = 1
      restart ()
   EndIf
   
   
   ;Neu starten des Spiels
   
   If leben < 0 Then
      newGame ()
   EndIf
   
End Function



;Diese Funktion überprüft die Steurung und Position des Spielers
;und gleichzeitig die Kollision mit den Rechtecken oder des Items
Function updatePlayer ()
   
   
   ;Kollision mit Item
   If playerX > xov And playerY > yov And playerX < xov+20 And playerY < yov+20 Then
      score = score + 10
      tod = 1
      Cls
   EndIf
   
   
   ;Kollision mit Rechteck
   For rec = Each TRec
      If playerX > rec\x And playerX < rec\x + rec\width And playerY > rec\y And playerY < rec\y + rec\height Then
         leben = leben - 1
         tod = 1
         Cls
      EndIf
   Next
   
   
   
   ;Spieler steuern
   If KeyDown(203) Then
      winkel = winkel + 2
   ElseIf KeyDown(205) Then
      winkel = winkel - 2
   EndIf
   
   
   ;X/Y Koordinaten berechnen
   playerX = playerX + Cos (winkel)
   playerY = playerY - Sin (winkel)
   
   
   ;Bildschirmränder überprüfen
   If playerX > 1280 Then
      playerX = 0
   EndIf
   If playerX < 0 Then
      playerX = 1280
   EndIf
   If playerY > 1020 Then
      playerY= 0
   EndIf
   If playerY < 0 Then
      playerY = 1020
   EndIf
   
   
End Function



;Zeichnet den Spieler und damit die Schlangenlinie
Function drawPlayer ()
   
   ;Spieler zeichnen
   Color 0,0,255
   Oval xov,yov,20,20
   Color 255,0,0
   
   Plot playerX, playerY
   Plot playerX+1, playerY
   Plot playerX, playerY+1
   Plot playerX-1, playerY
   Plot playerX, playerY-1
   Plot playerX+2, playerY
   Plot playerX, playerY+2
   Plot playerX-2, playerY
   Plot playerX, playerY-2
   
End Function


;Wenn der Spieler gestorben ist, dann wird das Level neu geladen
;+Rechtecke neu laden
;+neues Item laden
;+Spieler zurücksetzen
;+Rundenzahl erhöhen
Function restart ()
   
   Cls
   
   deleteRect ()
   createRect ()
   
   createItem ()
   
   createPlayer (640 ,512)
   
   runde = runde + 1
   tod = 0
   
End Function



;Wenn der Spieler keine Leben mehr hat (leben < 0) wird gefragt,
;ob ein neues Spiel gestartet werden soll
Function newGame ()
   
   Local ende$
   
   ClsColor 0,0,0
   Cls
   
   Text 640,512,"GAME OVER",1,1
   Text 640,524,"Nochmal Spielen?",1,1
   Text 640,536,"Y für Ja/N für Nein",1,1
   Locate 635,548
   
   ende$ = Input("Hier eingeben: ")
   
   If ende = "Y" Or ende = "y" Then
      
      Cls
      
      deleteRect ()
      createRect ()
      
      createItem ()
      
      createPlayer (640 ,512)
      
      createGame ()
      
      tod = 0
      
      
   ElseIf ende = "N" Or ende = "n"  Then
      End
   EndIf
   
   
End Function


mfg robotx
www.botbomb.robotzgames.de
www.robotzgames.de

Xeres

Moderator

BeitragMo, Feb 16, 2009 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;Löschen der alten Rechtecke
Function deleteRect ()
   For rec = Each TRec
      Delete rec
   Next
End Function

Ist übrigens Äquivalent zu...
Code: [AUSKLAPPEN]
;Löschen der alten Rechtecke
Delete Each TRec

Wink
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)

SpionAtom

BeitragMo, Feb 16, 2009 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Rechtecküberlappungs-Überprüfung bringt BB doch mit:
https://www.blitzforum.de/help/RectsOverlap
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

feuerball11

BeitragMo, Feb 16, 2009 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
jao.... ähm...

als erstes mal herzlichen dank, das mir gleich so tolle vorschläge vorgebreitet werden...

ich konnte sie mir heute leider nicht durschauen ud testen, weil ioch viel zu tun habe
(auserdem schreibe ich gerne meine cods selber, das wäre ein kommpletter code von jemand anderm... das kann ich nicht sagen das der von mir kähme.....)

auserdem kapier ich das mit den types nicht... habe schon ein paar tutorals durchgeschaut, aber bei keinem kapier iche s so richtig....

danke im voraus und im nachhinein....

mabox

BeitragMo, Feb 16, 2009 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein sehr gutes Type tutorial: https://www.blitzforum.de/foru...hp?t=25321
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

feuerball11

BeitragDi, Feb 17, 2009 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
also... ich danke für die großartige unterstützung in diesmem falle...

ich habe einige sachen gelernt und

das type tutorial schau ich mir am donnerstag an (da habe ich frei)

danach werde ich die ganze sache warscheinlich kommplett neu angehen....

damit kann das hier geclosed werden (oder gibts das in diesem forum nicht??)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group