Seite 2 von 4

Verfasst: 23.01.2007 17:03
von Scarabol
@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

Verfasst: 23.01.2007 18:31
von remi_meier
Dir wurde bereits geholfen :mrgreen:

Verfasst: 25.01.2007 21:52
von Kaeru Gaman
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...

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

Verfasst: 25.01.2007 21:57
von Kiffi
@Kaeru: :allright:

Grüße ... Kiffi

Verfasst: 25.01.2007 22:23
von ZeHa
Fett :shock:

Verfasst: 25.01.2007 22:27
von remi_meier
Hehe, cool!
Erinnert mich stark an meine Lemmige :mrgreen:
http://www.purebasic.fr/german/viewtopi ... 6970#66970

Verfasst: 25.01.2007 22:36
von Artus
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

Verfasst: 25.01.2007 23:16
von Kaeru Gaman
> Ich hoffe is is ok das ich mal was getestet habe.
aber klar doch. :D :allright:

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

PS:
quick&dirty, aber effektiv. :allright:
ich bastel jetzt echt ein wenig länger rum, das so einzubaun, bis es mir gefällt. :|

Verfasst: 25.01.2007 23:48
von ZeHa
Jo, als nächster Schritt wäre dann das Schanzen dran ;)

Verfasst: 25.01.2007 23:53
von Kaeru Gaman
du meinst jumpen und so?

...eigentlich wollte ich schon auf der letzten version ein ballergame aufsetzen... :mrgreen:
...und jetzt häng ich dran, die beschleunigung durch die schräge effektiv einzubaun...