yop
En fait, la première question que j'aurai envie de poser c'est : parles-tu anglais et quel niveau tu as ?
car je pense que le purebasic est l'un des langages les plus simples et rapides à apprendre qui soit, pour peu de parler anglais (avec un niveau moyen), car ça facilité tout de suite la compréhension des choses.
Autre chose importante, il faut avoir de la mémoire (un minimum) et pouvoir se concentrer au moins une demi-heure. Dans certains cas, bien que ce ne soit pas impossible, c'est très difficile pourtant on y arrive.
Si ces 2 choses sont réunies, il n'y a aucune raison que tu n'arrives pas à réaliser un petit jeu. Si ce n'est pas le cas, comme le dit G-rom, et bien ce n'est pas grave, ce n'est pas fait pour toi, c'est tout. Et entre nous, y'a aucune honte à planter des patates, moi, l'été je plante des tomate, des carottes, des radis, et je récolte des fraises, des groseilles, des poires, etc
Bref, pour le jeu, il faut faire les choses dans l'ordre :
- d'abord apprendre à afficher des sprites sur un écran : ça visiblement, ça commence à être le cas.
- puis, ajouter quelques évènements : clavier ou souris (clavier dans un premier temps pour bouger un sprite). Afficher des variables et les modifier.
- puis faire des interaction : collision entre 2 sprites par exemple. Tu verifies qu'un sprite (x/y et largeur /hauteur) n'est pas collé à un autre.
- puis faire une interface : afficher des points
Collision simple :
Code : Tout sélectionner
if sprite1\x +sprite1\largeur> sprites2\x and sprite1\x < sprites2\x+sprite2\largeur and sprite1\y < sprites2\y+sprite2\hauteur and sprite1\y+sprite1\hauteur > sprites2\y
variable1 = 1
; autres evenements
endif
Et petit à petit ton petit jeu va se construire.
Il y a beaucoup d'exemples sur le forum. j'ai même fait un sujet sur les jeux en purebasic dans la rubrique jeu :
http://www.purebasic.fr/french/viewtopi ... =2&t=12360
Allez, un petit code de collision et d'event simple :
Code : Tout sélectionner
;{ structures
Structure StPersonnage
x.w
y.w
sprite.w
largeur.w
hauteur.w
EndStructure
Global perso.StPersonnage ; on ajoute un personnage
Global mechant.StPersonnage ; on ajoute un mechant
;}
;{ constantes, enumeration,variables
#window = 0
Enumeration
#perso
#mechant
EndEnumeration
Global texte$, event.l
;}
;{ declaration des procedures
Declare CollisionSimple()
Declare BougerPersonnage()
;}
;{ cinitialisation & window
If InitSprite() =0 Or InitKeyboard() = 0 Or InitSprite3D()=0
MessageRequester("Erreur", "Erreur d'initialisation")
EndIf
OpenWindow(#window,0,0,800,600,"test jeu",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#window),0,0,800,600,0,0,0)
;{ creation de sprites
; le gentil perso
CreateSprite(#perso,64,64,#PB_Sprite_Texture)
CreateSprite3D(#perso,#perso)
StartDrawing(SpriteOutput(#perso))
Box(0,0,SpriteWidth(#perso),SpriteHeight(#perso),#White)
StopDrawing()
perso\hauteur = SpriteHeight(#perso)
perso\largeur = SpriteWidth(#perso)
perso\x = Random(800)
perso\y = Random(600)
perso\sprite = #perso
; le mechant
CreateSprite(#mechant,64,64,#PB_Sprite_Texture)
CreateSprite3D(#mechant,#mechant)
StartDrawing(SpriteOutput(#mechant))
Box(0,0,SpriteWidth(#mechant),SpriteHeight(#mechant),#Red)
StopDrawing()
mechant\hauteur = SpriteHeight(#mechant)
mechant\largeur = SpriteWidth(#mechant)
mechant\x = Random(800)
mechant\y = Random(600)
mechant\sprite = #mechant
;}
;}
;{ boucle principale
Repeat
event = WaitWindowEvent(1)
ClearScreen(0)
Start3D()
DisplaySprite3D(perso\sprite,perso\x,perso\y)
DisplaySprite3D(mechant\sprite,mechant\x,mechant\y)
Stop3D()
StartDrawing(ScreenOutput())
DrawText(50,50,texte$)
StopDrawing()
FlipBuffers()
CollisionSimple()
BougerPersonnage()
Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
;}
;{ procedure
Procedure CollisionSimple()
If perso\x +perso\largeur> mechant\x And perso\x < mechant\x+mechant\largeur And perso\y < mechant\y+mechant\hauteur And perso\y+perso\hauteur > mechant\y
texte$ = "Touché !"
Else
texte$ = "pas de collision !"
EndIf
EndProcedure
Procedure BougerPersonnage()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Right)
perso\x +2
EndIf
If KeyboardPushed(#PB_Key_Left)
perso\x-2
EndIf
If KeyboardPushed(#PB_Key_Up)
perso\y-2
EndIf
If KeyboardPushed(#PB_Key_Down)
perso\y+2
EndIf
EndProcedure
;}