Jeu en 2D

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Jeu en 2D

Message par pat »

Bonjour,

Je suis intéressé pour faire un jeux en 2D avec un décor et une route auquel une voiture serait dessus et il faudrait gérer le scrolling des images et gérer la collision de la voiture avec les bords de la route.
J'avoue avoir besoin d'aide car je ne sais pas comment aborder le sujet (point de vue programmation).
Merci pour ceux qui voudront bien m'aider.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Jeu en 2D

Message par G-Rom »

Quel type de route ? à la old school ? style pole positionsur atari ?
Image
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Jeu en 2D

Message par Thyphoon »

style supercar2 sur Amiga ?
Image
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Jeu en 2D

Message par pat »

Merci pour vos réponses.
L'un ou l'autre et pourquoi pas les deux.
Mais je ne sais pas comment faire.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Jeu en 2D

Message par Thyphoon »

il y a une infinité de façon de faire ça ... tout dépend de la taille du circuit si tu veux pouvoir passer dessus ou/en dessous le décor etc...
Si le circuit est fermé (genre course de F1) ou ouvert (promenade en ville)
après il faut faire appel ton imagination et a quelques connaissance mathématique !
Si ça peut t'aider voici un code de BalrogSoft du forum anglais qui te permet d'avoir un comportement de voiture réaliste !

Code : Tout sélectionner

;BalrogSoft

InitSprite()
InitSprite3D()
InitKeyboard()

Procedure.f min(a.f, d.f)
  If a < d
    ProcedureReturn a
  Else
    ProcedureReturn d
  EndIf
EndProcedure

Procedure.f max(a.f, d.f)
  If a > d
    ProcedureReturn a
  Else
    ProcedureReturn d
  EndIf
EndProcedure

Procedure.f _Sign(a.f)
  If a.f < 0
    ProcedureReturn -1.0
  Else
    ProcedureReturn 1.0
  EndIf
EndProcedure


Procedure.f adjust(v.f,threshold.f,maximum.f)
      vx.f = 0
      If (v <= threshold)
        vx=(v/threshold)*1.0
      Else
        vx = 1
      EndIf
      ProcedureReturn vx
EndProcedure
   
Quit.b = #False

accel.f = 0.2 ; acceleration due To gas (up arrow)
steer.f = 0.08 ; steering tightness
steer_normal.f = 0.08 ; Default Steering
steer_handbrake.f = 0.099 ; Incremental increases For handbrakeys
steer_threshold.f = 4 ; Speed where steering at its most manouvreable
MINspd.f = -5 ; max reverse speed
MAXspd.f = 22   ; max speed on straightaway
MAXskiddisplay.f = 2 ; Display skids on slides till this value reached
MAXturnSpd.f = 10 ; maximum speed While turning
MaxTurnSkid.f = 18 ; Maximum speed in turn before skidding
deccel.f = 0.92 ; decelleration due To brakes (down arrow)
handbrake.f = 0.93 ; decelleration due To brakes (down arrow)
handbrake_traction.f = 20 ; Amount of slide For handbrake higher is more
drift.f = 0.98 ; deceleration after letting off gas

speed.f = 0  ; duuuh!
surface.f = 3 ; Tar = 10 gravel = 1 ice = 0.5
traction.f = 5 ; the higher the more slippery init value
traction_max.f = 1 ; Max Traction
Dim vector.f(1) ; vector of the direction of the car
bounceBack.f = 0.6 ; percent of speed when bounced back from hitting an obstacle

angle.f

collide = false ; Used To make sure car doesnt get stuck in collision checks
   
   
If OpenWindow(0, 0, 0, 640, 480, "Car Physics", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)
 
  ;LoadSprite(0, "car.bmp", #PB_Sprite_Texture)
  CreateSprite(0,64,64,#PB_Sprite_Texture)
  StartDrawing(SpriteOutput(0))
    Box(16,0,32,64,#Red)
  StopDrawing()
  CreateSprite3D(0, 0)
 
  Repeat
   
    WEvent = WindowEvent()
   
    If WEvent = #PB_Event_CloseWindow
      Quit = #True   
    EndIf
   
    rotation = angle * 180 / #PI
   
    ExamineKeyboard()
    UP = KeyboardPushed(#PB_Key_Up) >> 7
    DOWN = KeyboardPushed(#PB_Key_Down) >> 7   
    HAND = KeyboardPushed(#PB_Key_LeftControl) >> 7
    LEFT = KeyboardPushed(#PB_Key_Left) >> 7
    RIGHT = KeyboardPushed(#PB_Key_Right) >> 7
   
    UD = UP - DOWN
    LR =  RIGHT - LEFT
   
    If LR
      angle + (LR*steer*adjust(Abs(speed),steer_threshold, MAXSpd))
    EndIf
   
   
    If UD = #False
        speed * drift
    ElseIf UD <> #False And HAND = #False
        speed = Min(Max(speed+UD*accel,MINspd),MAXspd)
    EndIf
   
    If (Abs(speed) < accel/2)
      speed = 0
    EndIf
 
    If HAND
       speed  * handbrake
   If (speed > MAXskiddisplay)
       steer = steer_handbrake
   EndIf
   traction = handbrake_traction/surface
    Else
   traction = Max(traction_max, Abs((speed-MAXturnSpd)/surface))
        steer = steer_normal
    EndIf

    If (speed < 0 )
      traction = 1.0
    EndIf
   
    xv.f = ((Cos(angle) * speed) - vector(0))/traction
    yv.f = ((Sin(angle) * speed) - vector(1))/traction
     
    vector(0) + xv.f
    vector(1) + yv.f
   
    track_x.f + vector(0)
    track_y.f + vector(1)


    StartDrawing(ScreenOutput())
    DrawText(0, 0, "Car x: " + StrF(x))
    DrawText(0, 20, "Car y: " + StrF(y))
    DrawText(0, 60, "speed: "+ StrF(speed))
    DrawText(0, 80, "angle: " + StrF(rotation))
    StopDrawing()
   
    Start3D()
    RotateSprite3D(0, rotation + 275, 0)
    DisplaySprite3D(0, track_x, track_y, 255)
    Stop3D()
   
    FlipBuffers()
    ClearScreen(0)
    Delay(30)
   
  Until Quit = #True
 
  CloseWindow(0)
EndIf
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Jeu en 2D

Message par pat »

Merci Thyphoon.
Je vais voir de plus près ton code.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Jeu en 2D

Message par Ar-S »

supercar2
oh yeah Image
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Jeu en 2D

Message par Thyphoon »

pat a écrit :Merci Thyphoon.
Je vais voir de plus près ton code.
il est pas de moi, mais ça devrait t'aider ! ;)
Ar-S a écrit :
supercar2
oh yeah Image
un connaisseur je vois !! :mrgreen:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Jeu en 2D

Message par Ar-S »

Oui :) et dans le même genre, l'excellent Nitro !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre