Hilfe bei Vertikal-Autorennspiel
@remi_meier
Wenns deiner ist kannst du mir sicher noch bei nem anderen Threaed helfen.
http://www.purebasic.fr/german/viewtopi ... highlight=
Würd mich freuen
Scarabol
Wenns deiner ist kannst du mir sicher noch bei nem anderen Threaed helfen.
http://www.purebasic.fr/german/viewtopi ... highlight=
Würd mich freuen
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
so, die letzten stunden hab ich mal ein bissel rumgedaddelt...
ich weiß nicht, ob das irgendetwas zur frage hilft,
aber es hat mich gereizt, ne kleinigkeit zum thema zu stricken...
ich weiß nicht, ob das irgendetwas zur frage hilft,
aber es hat mich gereizt, ne kleinigkeit zum thema zu stricken...
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,500,300,"Buggy Buster", #PB_Window_ScreenCentered | #PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,500,300,0,0,0)
Dim Land.b(10000)
;{********************
; *** Create Level ***
Hi = 7500
Dir = 0
Turn = 0
count = 0
While count < 10000
Land(count) = 20 + Hi / 100
Turn = (Random(25000)-Hi-5000)/666
Dir + Turn
If Dir > 100 : Dir = 100 : EndIf
If Dir < -100 : Dir = -100 : EndIf
Hi + Dir
If Hi > 15000 : Hi = 15000 : EndIf
If Hi < 0 : Hi = 0 : EndIf
count + 1
Wend
Land(count) = 20 + Hi / 100
;}********************
RelPos = 100
Pos = RelPos
FPos = Pos*10
Repeat
event = WaitWindowEvent(10)
ExamineKeyboard()
ClearScreen($FFC080)
If KeyboardPushed(#PB_Key_Right)
Move +2
If Move > 30 : Move = 30 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
Move -2
If Move < -10 : Move = -10 : EndIf
EndIf
If Move > 0 : Move -1 : EndIf
If Move < 0 : Move +1 : EndIf
FPos + Move
If FPos > 10*(10000 - 500 + RelPos)
FPos = 10*(10000 - 500 + RelPos)
Finish = 1
EndIf
If FPos < 10*RelPos
FPos = 10*RelPos
EndIf
Pos = FPos / 10
StartDrawing(ScreenOutput())
; Draw Level
For n=-RelPos To 499-RelPos
Hi = Land(Pos+n) & $FF
Line(RelPos+n,299,0,-Hi,$0080C0)
Line(RelPos+n,299-Hi,0,1,$000000)
If Pos+n = 10000 - 500 + RelPos
Line(RelPos+n,299-Hi,0,-30,$0000FF)
Box(RelPos+n,269-Hi,10,10,$0000FF)
EndIf
Next
; Draw Car
X1 = RelPos-6
Y1 = 295-(Land(Pos-6)&$FF)
X2 = RelPos+6
Y2 = 295-(Land(Pos+6)&$FF)
DY = Y2 - Y1
X3 = X1 + DY / 2
Y3 = Y1 - 6
X4 = X2 + DY / 2
Y4 = Y2 - 6
LineXY(X1,Y1,X2,Y2,$202000)
LineXY(X1,Y1,X3,Y3,$202000)
LineXY(X2,Y2,X4,Y4,$202000)
LineXY(X3,Y3,X4,Y4,$202000)
Circle(X1,Y1,4,$603000)
Circle(X2,Y2,4,$603000)
Select (Pos & 6 >> 1)
Case 0
Line(X1 , Y1 - 3, 0, 6, $FFC000)
Line(X2 , Y2 - 3, 0, 6, $FFC000)
Case 1
Line(X1 - 2, Y1 + 2, 4,-4, $FFC000)
Line(X2 - 2, Y2 + 2, 4,-4, $FFC000)
Case 2
Line(X1 - 3, Y1 , 6, 0, $FFC000)
Line(X2 - 3, Y2 , 6, 0, $FFC000)
Case 3
Line(X1 - 2, Y1 - 2, 4, 4, $FFC000)
Line(X2 - 2, Y2 - 2, 4, 4, $FFC000)
EndSelect
; Draw Speedo
angle.f = (10+Move) * #PI / 40
Circle(400,294,29,$000000)
Circle(400,294,27,$2040FF)
Box(371,296,58,2,$000000)
Box(370,298,60,3,$0080C0)
Line(400,294,-25*Cos(angle),-25*Sin(angle),$000000)
DrawText(10,270,"Way: " + Right("0000"+Str(Pos-RelPos),4) + " m",$000000,$0080C0)
If Finish
DrawText(180,50,"## F I N I S H ##",$000000,$FFC080)
EndIf
StopDrawing()
FlipBuffers()
If event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
EXIT = 1
EndIf
Until EXIT = 1
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Fett 



ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Hehe, cool!
Erinnert mich stark an meine Lemmige
http://www.purebasic.fr/german/viewtopi ... 6970#66970
Erinnert mich stark an meine Lemmige

http://www.purebasic.fr/german/viewtopi ... 6970#66970
Ich hoffe is is ok das ich mal was getestet habe. Hier nun verliert er geschwindigkeit bei steilen Anstiegen und gewinnt geschwindigkeit bei steilen abfahrten. sozusagen a bisl gravitation.
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,500,300,"Buggy Buster", #PB_Window_ScreenCentered | #PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,500,300,0,0,0)
Dim Land.b(10000)
;{********************
; *** Create Level ***
Hi = 7500
Dir = 0
Turn = 0
count = 0
While count < 10000
Land(count) = 20 + Hi / 100
Turn = (Random(25000)-Hi-5000)/666
Dir + Turn
If Dir > 100 : Dir = 100 : EndIf
If Dir < -100 : Dir = -100 : EndIf
Hi + Dir
If Hi > 15000 : Hi = 15000 : EndIf
If Hi < 0 : Hi = 0 : EndIf
count + 1
Wend
Land(count) = 20 + Hi / 100
;}********************
RelPos = 100
Pos = RelPos
FPos = Pos*10
Repeat
event = WaitWindowEvent(10)
ExamineKeyboard()
ClearScreen($FFC080)
If KeyboardPushed(#PB_Key_Right) And Move < 30
Move +2
ElseIf KeyboardPushed(#PB_Key_Left) And Move > -10
Move -2
ElseIf Pos-RelPos > 0
If Move > 0 : Move -1 : EndIf
If Move < 0 : Move +1 : EndIf
If Y1 - Y2 <= -3
Move+ 2
ElseIf Y1 - Y2 >= 3
Move-2
EndIf
EndIf
FPos + Move
If FPos > 10*(10000 - 500 + RelPos)
FPos = 10*(10000 - 500 + RelPos)
Finish = 1
EndIf
If FPos < 10*RelPos
FPos = 10*RelPos
EndIf
Pos = FPos / 10
StartDrawing(ScreenOutput())
; Draw Level
For n=-RelPos To 499-RelPos
Hi = Land(Pos+n) & $FF
Line(RelPos+n,299,0,-Hi,$0080C0)
Line(RelPos+n,299-Hi,0,1,$000000)
If Pos+n = 10000 - 500 + RelPos
Line(RelPos+n,299-Hi,0,-30,$0000FF)
Box(RelPos+n,269-Hi,10,10,$0000FF)
EndIf
Next
; Draw Car
X1 = RelPos-6
Y1 = 295-(Land(Pos-6)&$FF)
X2 = RelPos+6
Y2 = 295-(Land(Pos+6)&$FF)
DY = Y2 - Y1
X3 = X1 + DY / 2
Y3 = Y1 - 6
X4 = X2 + DY / 2
Y4 = Y2 - 6
LineXY(X1,Y1,X2,Y2,$202000)
LineXY(X1,Y1,X3,Y3,$202000)
LineXY(X2,Y2,X4,Y4,$202000)
LineXY(X3,Y3,X4,Y4,$202000)
Circle(X1,Y1,4,$603000)
Circle(X2,Y2,4,$603000)
Select (Pos & 6 >> 1)
Case 0
Line(X1 , Y1 - 3, 0, 6, $FFC000)
Line(X2 , Y2 - 3, 0, 6, $FFC000)
Case 1
Line(X1 - 2, Y1 + 2, 4,-4, $FFC000)
Line(X2 - 2, Y2 + 2, 4,-4, $FFC000)
Case 2
Line(X1 - 3, Y1 , 6, 0, $FFC000)
Line(X2 - 3, Y2 , 6, 0, $FFC000)
Case 3
Line(X1 - 2, Y1 - 2, 4, 4, $FFC000)
Line(X2 - 2, Y2 - 2, 4, 4, $FFC000)
EndSelect
; Draw Speedo
angle.f = (10+Move) * #PI / 40
Circle(400,294,29,$000000)
Circle(400,294,27,$2040FF)
Box(371,296,58,2,$000000)
Box(370,298,60,3,$0080C0)
Line(400,294,-25*Cos(angle),-25*Sin(angle),$000000)
DrawText(10,270,"Way: " + Right("0000"+Str(Pos-RelPos),4) + " m",$000000,$0080C0)
DrawText(10,250,"Move: "+Str(Move),$000000,$0080C0)
DrawText(10,230,"YDiv: "+Str(Y1-Y2),$000000,$0080C0)
If Finish
DrawText(180,50,"## F I N I S H ##",$000000,$FFC080)
EndIf
StopDrawing()
FlipBuffers()
If event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
EXIT = 1
EndIf
Until EXIT = 1
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> Ich hoffe is is ok das ich mal was getestet habe.
aber klar doch.
klasse idee.
ein bischen "quick&dirty" eingefügt, aber klasse ansatz.
ich werd das mit einbaun, wenn's recht ist.
PS:
quick&dirty, aber effektiv.
ich bastel jetzt echt ein wenig länger rum, das so einzubaun, bis es mir gefällt.
aber klar doch.


klasse idee.
ein bischen "quick&dirty" eingefügt, aber klasse ansatz.
ich werd das mit einbaun, wenn's recht ist.

PS:
quick&dirty, aber effektiv.

ich bastel jetzt echt ein wenig länger rum, das so einzubaun, bis es mir gefällt.

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Jo, als nächster Schritt wäre dann das Schanzen dran 



ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22