Karoblock Rally
Übersicht

![]() |
maboxBetreff: Karoblock Rally |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einige von euch kennen es vielleicht. Ein Spiel welches man zu zweit (oder mehr) auf einem karierten Block spielt. Man zeichnet sich eine Rennstrecke und "fährt" sie dann ab. die Geschwindigkeit ist die länge der Striche und man kann nicht beliebig schnell beschleunigen oder abbremsen, auch die Kurven kann man nicht beliebig fahren, denn es gillt folgende Regel.
Die Fahrtlinie wird in fahrtrichtung an sich selbst angehängt. Ihr Endpunkt ist der neue Mittelpunkt. Die neuen Fahrtmöglichkeiten sind die 8 Punkte (umliegende kästchen) um diesen Punkt und der Punkt selbst. Ich hab so ein kleines Spiel im Urlaub programmiert weil wir es spielen wollte und wir keinen karierten Block hatten. Bis jetzt ist es nur für 2 Spieler spielbar und hat noch kleine Fehler. Ich will das ganze aber noch mit einer KI versehen damit man es auch alleine gegen den PC spielen kann. Kennt einer von euch ein gutes tutorial über KI (möglichst ein deutsches) noch eine Frage: Wie soll ich das an besten mit der Kollision machen? Wenn die Fahrtlinie mit dem Rand kollidiert hat man verloren. Bis jetzt geht das mit Imagescollide, aber wie kann man das mit der KI vereinen, also das die kapiert wo sie langfahren darf und wo nicht. Ist es vielleicht besser den Streckenrand in einzelnen Punkten abzuspeichern? also so das man schaut wie der x Wert bei welchen y Wert ist? Das Spiel soll später so sein, dass sich jeder selber strecken malen kann. hier mal mein aktueller Code: [AUSKLAPPEN] Global x_graph = 800
Global y_graph = 600 Graphics x_graph,y_graph,0,2 SetBuffer BackBuffer() SeedRnd MilliSecs() Global bild Global rally = LoadImage ("rally1.png") MaskImage rally,255,255,255 ClsColor 255,255,255 Dim x_line_start_alt(2) Dim y_line_start_alt(2) Dim x_line_start(2) Dim y_line_start(2) Dim x_line_end(2) Dim y_line_end(2) Global kaestchen_groesse = 15 Global spieler = 1 Global kollision x_line_start(spieler) = 25 y_line_start(spieler) = 8 x_line_end(spieler) = x_line_start(spieler) y_line_end(spieler) = y_line_start(spieler) spieler = 2 x_line_start(spieler) = 25 y_line_start(spieler) = 10 x_line_end(spieler) = x_line_start(spieler) y_line_end(spieler) = y_line_start(spieler) timer = CreateTimer (100) spieler = Rand(1,2) Repeat Cls WaitTimer (timer) kaestchen_einzeichnen() DrawImage rally,0,0 fahrtmoeglichkeiten_einzeichnen() ziellinie() If bild > 0 Then DrawImage bild,0,0 ; Text 0,0,kollision ; Text 0,20,(2*x_line_end(spieler)-x_line_start(spieler)+r)*kaestchen_groesse FlushMouse Flip 0 Until KeyHit(1) Function kaestchen_einzeichnen() Color 220,220,220 For i = 1 To x_graph / kaestchen_groesse Line i * kaestchen_groesse,0,i * kaestchen_groesse,y_graph Line 0,i * kaestchen_groesse,x_graph,i * kaestchen_groesse Next End Function Function fahrtmoeglichkeiten_einzeichnen() kollision = 0 For t = -1 To 1 For r = -1 To 1 If spieler = 1 Then Color 220,0,0 Else Color 0,220,0 EndIf If (2*x_line_end(spieler) - x_line_start(spieler) + r)*kaestchen_groesse < 0 Or (2*x_line_end(spieler) - x_line_start(spieler) + r)*kaestchen_groesse > x_graph Or (2*y_line_end(spieler) - y_line_start(spieler) + t)*kaestchen_groesse < 0 Or (2*y_line_end(spieler) - y_line_start(spieler) + t)*kaestchen_groesse > y_graph Then kollision = kollision +1 EndIf If ImageRectCollide (rally,0,0,0,(2*x_line_end(spieler) - x_line_start(spieler) + r)*kaestchen_groesse-2,(2*y_line_end(spieler) - y_line_start(spieler) + t)*kaestchen_groesse-2,5,5) = False Then Oval (2*x_line_end(spieler) - x_line_start(spieler) + r)*kaestchen_groesse-2,(2*y_line_end(spieler) - y_line_start(spieler) + t)*kaestchen_groesse-2,5,5 Color 0,0,255 If MouseX() < (2*x_line_end(spieler) - x_line_start(spieler) + r)*kaestchen_groesse+(kaestchen_groesse/2) And MouseX() >(2*x_line_end(spieler) - x_line_start(spieler) + r)*kaestchen_groesse-(kaestchen_groesse/2) And MouseY() < (2*y_line_end(spieler) - y_line_start(spieler) + t)*kaestchen_groesse+(kaestchen_groesse/2) And MouseY() > (2*y_line_end(spieler) - y_line_start(spieler) + t)*kaestchen_groesse-(kaestchen_groesse/2) Then Oval (2*x_line_end(spieler)-x_line_start(spieler)+r)*kaestchen_groesse-4,(2*y_line_end(spieler)-y_line_start(spieler)+t)*kaestchen_groesse-4,9,9,0 If MouseHit(1) Then x_line_start_alt(spieler) = x_line_start(spieler) y_line_start_alt(spieler) = y_line_start(spieler) x_line_start(spieler) = x_line_end(spieler) y_line_start(spieler) = y_line_end(spieler) x_line_end(spieler) = 2*x_line_end(spieler) - x_line_start_alt(spieler)+r y_line_end(spieler) = 2*y_line_end(spieler) - y_line_start_alt(spieler)+t fahrtlinie_einzeichnen() If spieler = 1 Then spieler = 2 Else spieler = 1 EndIf EndIf EndIf Else kollision = kollision +1 EndIf If kollision = 9 Then If spieler = 1 Then Color 220,0,0 Else Color 0,220,0 EndIf Cls If spieler = 1 Then farbe$ = "Rot" Else farbe$ = "Grün" Text x_graph/2,y_graph/2,farbe$+" hat verloren" ,1,1 Flip Delay 2000 End EndIf Next Next End Function Function fahrtlinie_einzeichnen() If bild < 1 Then bild = CreateImage (x_graph,y_graph) EndIf MaskImage bild,0,0,0 SetBuffer ImageBuffer(bild) If spieler = 1 Then Color 220,0,0 Else Color 0,220,0 EndIf Line x_line_start(spieler)*kaestchen_groesse,y_line_start(spieler)*kaestchen_groesse,x_line_end(spieler)*kaestchen_groesse,y_line_end(spieler)*kaestchen_groesse SetBuffer BackBuffer() If ImagesCollide (rally, 0, 0, 0, bild, 0, 0, 0) Then Cls If spieler = 1 Then farbe$ = "Rot" Else farbe$ = "Grün" Text x_graph/2,y_graph/2,farbe$+" hat verloren" ,1,1 Flip Delay 2000 End EndIf End Function Function ziellinie() Color 0,0,0 ;Rect 374,40,3,115 Rect 374,86,3,94 End Function dieses Bild wird benötigt: |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group