Petit jeu Joystick & Souris

Programmation avancée de jeux en PureBasic
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Petit jeu Joystick & Souris

Message par Oliv »

Voici un petit jeu (vite fait : 30min :P , le plus long, c'est de dessiner :( ) pour voir comment gérer le joystick, il fait 13Ko . Je viens d'y penser, j'aurais pu rajouter le jeu au clavier, mai il y a quand même souris et joystick :) . C'estici (exe + source + sprites)

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Erreur","Ne peut pas initialiser les sprites ou le clavier." + Chr(13) + "Verifiez que vous avez DirectX 7 ou plus.",#MB_ICONError)
  End
EndIf

InitJ.l = InitJoystick()
InitM.l = InitMouse()

;- Declarations
; Constantes
Enumeration
  #Non
  #Oui
  #Ennemi
  #Viseur
EndEnumeration

; Variables
Global Sortie.b,Viseur.point,Ennemi.point,Sensibilite.b,Score.l

Viseur\X = Random(780) : Viseur\Y = Random(580) : Ennemi\X = Random(755) : Ennemi\Y = Random(558)
Sensibilite = 10


If OpenScreen(800,600,32,"Tir") = 0
  MessageRequester("Erreur","Ne peut pas ouvrir l'écran.",#MB_ICONError)
  End
EndIf
TransparentSpriteColor(-1,255,0,255)
CatchSprite(#Viseur,?Viseur)
CatchSprite(#Ennemi,?Ennemi)


Procedure Clavier()
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Escape) : Sortie = #Oui : EndIf
EndProcedure

Procedure Affichage()
  ClearScreen(0,0,80)
  DisplayTransparentSprite(#Ennemi,Ennemi\X,Ennemi\Y)
  DisplayTransparentSprite(#Viseur,Viseur\X,Viseur\Y)
  FlipBuffers()
EndProcedure

Procedure VerifViseur()
  If Viseur\X < 0 : Viseur\X = 0 : EndIf
  If Viseur\X > 780 : Viseur\X = 780 : EndIf
  If Viseur\Y < 0 : Viseur\Y = 0 : EndIf
  If Viseur\Y > 580 : Viseur\Y = 580 : EndIf
EndProcedure

Procedure Tir()
  If SpriteCollision(#Viseur,Viseur\X,Viseur\Y,#Ennemi,Ennemi\X,Ennemi\Y)
    Score + 1
    ClearScreen(255,255,255)
    StartDrawing(ScreenOutput())
      DrawingMode(1)
      Texte.s = "Score : " + Str(Score)
      Locate((800 - TextLength(Texte)) / 2,295)
      DrawText(Texte)
    StopDrawing()
    FlipBuffers()
    Viseur\X = Random(780) : Viseur\Y = Random(580)
    Ennemi\X = Random(755) : Ennemi\Y = Random(558)
    If Score = 20
      CloseScreen()
      MessageRequester("Bravo","Vous avez tué 20 têtes.")
      End
    EndIf
    Delay(250)
  EndIf
EndProcedure

Procedure Souris()
  ExamineMouse()
  If MouseButton(1) : Tir() : EndIf
  Viseur\X + MouseDeltaX() : Viseur\Y + MouseDeltaY()
EndProcedure

Procedure Ennemi()
  Ennemi\X + (Random(20) - 10) : Ennemi\Y + (Random(16) - 8)
  If Ennemi\X < 0 : Ennemi\X = 0 : EndIf
  If Ennemi\X > 755 : Ennemi\X = 755 : EndIf
  If Ennemi\Y < 0 : Ennemi\Y = 0 : EndIf
  If Ennemi\Y > 558 : Ennemi\Y = 558 : EndIf
EndProcedure

Procedure Joystick()
  ExamineJoystick()
  If JoystickButton(1) : Tir() : EndIf
  Viseur\X + (JoystickAxisX() * Sensibilite) : Viseur\Y + (JoystickAxisY() * Sensibilite)
EndProcedure


Repeat
  Affichage()
  Clavier()
  If InitM : Souris() : EndIf
  If InitJ : Joystick() : EndIf
  VerifViseur()
  Ennemi()
Until Sortie = #Oui

End

DataSection
  Viseur:
  IncludeBinary "Viseur.bmp"
  Ennemi:
  IncludeBinary "Ennemi.bmp"
EndDataSection
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

:D Pas mal oliv a part la tê^te on dirait la tête de ma proviseur ^^ mais bon c'est le logiciel paint sans qui les dessin serait encore moin beau lol ... :)
Répondre