Missile a tête chercheuse

Partagez votre expérience de PureBasic avec les autres utilisateurs.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Missile a tête chercheuse

Message par cha0s »

Bon comme je suis content d'avoir réussie et que j'utilise PB pour faire des test sur de petits algos voici mon dernier joujou :
espace pour tirer LE missile.

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard()=0
  MessageRequester("Error","sponyu...",0)
EndIf

EnableExplicit

Structure vector
  x.d
  y.d
EndStructure

Define target.vector
Define bullet.vector
Define speed.vector
Define accumulation_mouvement.vector
Define deplacement.vector

target\x = 200
target\y = 200
bullet\x = 0
bullet\y = 0


accumulation_mouvement\x = 50
accumulation_mouvement\y = 0 
   
Define virage_max.d = 0.001
Define vitesse_missile = 5

Define fired = #False
If OpenWindow(0, 0, 0, 800, 600, "je l'aurai un jour ....", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
  SetFrameRate(30)
  If CreateSprite(0, 10, 10)
    If StartDrawing(SpriteOutput(0))
      Box(0,0,10,10, RGB(255,255,255))
      StopDrawing()
    EndIf
  EndIf
   If CreateSprite(1, 5, 5)
    If StartDrawing(SpriteOutput(1))
      Circle(0,0,10, RGB(255,255,255))
      StopDrawing()
    EndIf
  EndIf
  
    Repeat
      ExamineKeyboard()
      If KeyboardPushed(#PB_Key_Space) And Not fired
        fired = #True
      EndIf
      target\y + 5
      target\x + Random(5)
      If target\y > 500
        target\y = 200
        target\x = 200
      EndIf
      If fired
        speed\x = (target\x - bullet\x) * virage_max
        speed\y = (target\y - bullet\y) * virage_max

        ;speed\x + Random(1) * 0.001
				;speed\y + Random(1) * 0.001

  			deplacement\x = (speed\x + accumulation_mouvement\x) / Sqr(Pow(speed\x + accumulation_mouvement\x, 2) + Pow(speed\y + accumulation_mouvement\y, 2))
  			deplacement\y = (speed\y + accumulation_mouvement\y) / Sqr(Pow(speed\x + accumulation_mouvement\x, 2) + Pow(speed\y + accumulation_mouvement\y, 2))
  
        accumulation_mouvement\x = deplacement\x
        accumulation_mouvement\y = deplacement\y
        
        bullet\x + deplacement\x * vitesse_missile
        bullet\y + deplacement\y * vitesse_missile
      EndIf
      
      
      ClearScreen(0)
      DisplaySprite(0,target\x,target\y)
      DisplaySprite(1,bullet\x,bullet\y)
  

      FlipBuffers()
      Delay(10)
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
Else
  MessageRequester("Error","sponyudutout...",0)
EndIf

Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Missile a tête chercheuse

Message par Cool Dji »

ya !

Tu as été plus courageaux que moi, j'ai joué la feignasse et j'ai emprunté la routine de Dobro... :lol:
Only PureBasic makes it possible
Répondre