mini code de Nöel( pour super-débutants!)

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

mini code de Nöel( pour super-débutants!)

Message par Huitbit »

Hugh!

Je n'ai pas trop le temps de coder alors en attendant de me remettre à mon Pure_Vroom...
...voilà un brouillon(fait en moins d'une heure, ça veut dire que j'ai progressé :P ) de petit jeu que je vais faire avec les élèves ce vendredi avant les vacances.
(Pour les sprites, ils utiliseront leurs photos et des images de cadeaux (avec des parachutes pour respecter les lois de la physique et avoir une vitesse de chute constante :wink: ), c'est plus joli que des carrés et des disques:D )

Les objectifs principaux sont :
un minimum de lignes
un minimum de mots-clés
un minimum de déclarations
un peu de jouabilité :roll:

Code : Tout sélectionner

;"Pure_Noël" auteur Huitbit
;PureBasic 4.10
;brouillon de minijeu
;minimum de déclarations et de mots-clés
;***************************************************
Dim x_cadeau(20)
Dim y_cadeau(20)
;initialisation des positions des cadeaux
For i=0 To 20
  x_cadeau(i)=Random(768)
  y_cadeau(i)=-Random(600)
Next i
;-PROGRAMME PRINCIPAL
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,800,600,"Livraison de Noël ")
OpenWindowedScreen(WindowID(0),0,0,800,600,1,0,0)
;-fond d'ecran
CreateSprite(0,800,600)
StartDrawing(SpriteOutput(0))
;fond étoilé
For  numero_etoile = 0 To 500
  Plot(1+Random(798),1+Random(567),RGB(255,255,255))
Next numero_etoile
;pelouse
Box(0,568,800,32,RGB(65, 117, 57))
StopDrawing()
;-cadeau
CreateSprite(1,32,32)
StartDrawing(SpriteOutput(1))
Box(0,0,32,32,RGB(255,255,0))
StopDrawing()
;-personnage
CreateSprite(2,32,64)
StartDrawing(SpriteOutput(2))
Circle(16,16,16,RGB(255,255,255))
Box(0,32,32,32,RGB(255,0,0))
StopDrawing()
;-BOUCLE PRINCIPALE
Repeat
  Repeat
    Event = WindowEvent()      
    If  Event = #PB_Event_CloseWindow
      End 
    EndIf
  Until Event = 0
  ;-gestion du clavier pour les mouvements du personnage
  ExamineKeyboard() 
  If KeyboardPushed(#PB_Key_Left)
    x_personnage=x_personnage-4
  ElseIf KeyboardPushed(#PB_Key_Right)
    x_personnage=x_personnage+4
  EndIf
  ;-gestion des déplacements des cadeaux
  For i=0 To 20
    y_cadeau(i)=y_cadeau(i)+2
    If y_cadeau(i)>536
      y_cadeau(i)=-Random(600)
      compteur_tombes=compteur_tombes+1
    EndIf
  Next i 
  ;-affichage
  DisplaySprite(0,0,0)
  For i=0 To 20
    DisplaySprite(1,x_cadeau(i),y_cadeau(i))
  Next i 
  DisplaySprite(2,x_personnage,504)
  ;-test de collision Père Noël_cadeau
  For i =0 To 20
    If SpritePixelCollision(1,x_cadeau(i),y_cadeau(i),2,x_personnage,504)
      y_cadeau(i)=-Random(600)
      compteur_hotte=compteur_hotte+1
    EndIf
  Next i
  ;-statistiques affichées
  cadeaux_livres=compteur_hotte+compteur_tombes
  StartDrawing(SpriteOutput(0))
  DrawText(0,568,"Livrés : "+Str(compteur_hotte+compteur_tombes)+"*****Hotte : "+Str(compteur_hotte)+"*****Tombés : "+Str(compteur_tombes))
  StopDrawing()
  Delay(10)
  FlipBuffers() 
Until cadeaux_livres>60
StartDrawing(ScreenOutput())
DrawText(0,568,"Efficacité du Père Noël :"+Str(compteur_hotte*100/cadeaux_livres)+" % >>> Livrés : "+Str(compteur_hotte+compteur_tombes)+"*****Hotte : "+Str(compteur_hotte)+"*****Tombés : "+Str(compteur_tombes))
StopDrawing()
FlipBuffers()
Delay(3000)
End
L'idée, c'est que pendant les vacances, ils améliorent le code
Si vous avez des idées de modifications !
S'il y a des super-débutants dans la salle n'hésitez pas!

Hasta la vista!
Dernière modification par Huitbit le jeu. 20/déc./2007 5:27, modifié 2 fois.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: mini code de Nöel( pour super-débutants!)

Message par Thyphoon »

Huitbit a écrit : Si vous avez des idées d'amélioration!
tu pourrais rajouter quelques martinet a eviter !:o)
Voir un mode multijoueur avec le père fouetard !
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

tu pourrais rajouter quelques martinets à eviter
Adopté : le martinet supprimera un cadeau :wink: !

Hasta la vista !
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Salut l'artiste...

Message par Huitbit »

Un petit hommage en passant à un musicien qui a su durer sans être pénible !
Pas mal de refrains traînent dans nos têtes.

Ce sacré farceur doit bien s'marrer là haut !

Juste une petite mise à jour qui traînait sur mon disque dur... à lui d'avoir des cadeaux !

Image




(image à mettre dans le même dossier que la source pb ci-dessous)
Image

Code : Tout sélectionner

;tableaux pour les cadeaux
Dim x_cadeau(20)
Dim y_cadeau(20)
Dim vitesse_cadeau(20)
;initialisation des positions des cadeaux
For i=0 To 20
  x_cadeau(i)=Random(768)
  y_cadeau(i)=-Random(600)
  vitesse_cadeau(i)=1+Random(3)
Next i
;-PROGRAMME PRINCIPAL
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,800,600,"Livraison de Noël ")
OpenWindowedScreen(WindowID(0),0,0,800,600,1,0,0)
UsePNGImageDecoder()
;-fond d'ecran
CreateSprite(0,800,600)
StartDrawing(SpriteOutput(0))
;fond étoilé
For  numero_etoile = 0 To 500
  Plot(1+Random(798),1+Random(567),RGB(255,255,255))
Next numero_etoile
;pelouse
Box(0,568,800,32,RGB(65, 117, 57))
StopDrawing()
;-cadeau
CreateSprite(1,32,32)
StartDrawing(SpriteOutput(1))
Box(0,0,32,32,RGB(255,255,0)) : Box(0,14,32,4,RGB(100,100,255)) : Box(14,0,4,32,RGB(100,100,255))
StopDrawing()
;-personnage
LoadSprite(2,"henri_salvador.png")
;-BOUCLE PRINCIPALE
Repeat
  Repeat
    Event = WindowEvent()      
    If  Event = #PB_Event_CloseWindow
      End 
    EndIf
  Until Event = 0
  ;-gestion du clavier pour les mouvements du personnage
  ExamineKeyboard() 
  If KeyboardPushed(#PB_Key_Left)
    x_personnage=x_personnage-4
  ElseIf KeyboardPushed(#PB_Key_Right)
    x_personnage=x_personnage+4
  EndIf
  ;-gestion des déplacements des cadeaux
  For i=0 To 20
    y_cadeau(i)=y_cadeau(i)+vitesse_cadeau(i)
    If y_cadeau(i)>536
      y_cadeau(i)=-Random(600)
      compteur_tombes=compteur_tombes+1
    EndIf
  Next i 
  ;-affichage
  DisplaySprite(0,0,0)
  For i=0 To 20
    DisplaySprite(1,x_cadeau(i),y_cadeau(i))
  Next i 
  DisplayTransparentSprite(2,x_personnage,426)
  ;-test de collision Père Noël_cadeau
  For i =0 To 20
    If SpritePixelCollision(1,x_cadeau(i),y_cadeau(i),2,x_personnage,426)
      y_cadeau(i)=-Random(600)
      compteur_hotte=compteur_hotte+1
    EndIf
  Next i
  ;-statistiques affichées
  cadeaux_livres=compteur_hotte+compteur_tombes
  StartDrawing(SpriteOutput(0))
  DrawText(0,568,"Livrés : "+Str(compteur_hotte+compteur_tombes)+"*****Hotte : "+Str(compteur_hotte)+"*****Tombés : "+Str(compteur_tombes))
  StopDrawing()
  Delay(10)
  FlipBuffers() 
Until cadeaux_livres>60
StartDrawing(ScreenOutput())
DrawText(0,568,"Efficacité du Père Noël :"+Str(compteur_hotte*100/cadeaux_livres)+" % >>> Livrés : "+Str(compteur_hotte+compteur_tombes)+"*****Hotte : "+Str(compteur_hotte)+"*****Tombés : "+Str(compteur_tombes))
StopDrawing()
FlipBuffers()
Delay(3000)
End
Hasta la vista !
Répondre