

Code : Tout sélectionner
;#################################PIECEMAN###########################################################
;# J'ai fait sa en 2 semaine lol################################################non moin################
;#################################Creer par garzul###################################################
;enumeration des constant
Enumeration
;joueur
#Joueur_1
;enemis
#Ennemis
;au cas ou
#Garzul=1
#Police=1
;objet
#Piece_1
#Sprite3D
EndEnumeration
Structure Piece
x.l
y.l
EndStructure
NewList Piece.Piece() ; Liste chainée pour la gestion des pieces
; ************ Declaration des procedures **********************
Declare MovePlayer()
Declare Collision()
Declare InitPiece()
Declare AffichePiece()
Declare MoveEnnemis()
Declare IaEnnemis()
Declare collisionEnnemis()
;global
Global x
Global y
Global z
Global e
;les dimension du cercle
Width=200
Height=100
;fin
Global Afiche_piece_1
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;
WindowID = OpenWindow(1, 0, 0, 320, 200, #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "Pieceman")
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID,0,0, 320, 200, 1, 0,0)
MessageRequester("Information : But du jeux","Le but du jeux de pieceman et de manger toute les pieces avant que le traceur vous mange . Aide = F1 touche flechéé pour se deplacer .Bon courage et bon jeux",#PB_MessageRequester_Ok|#MB_ICONinformation)
;-sprite joueur
CreateSprite(#Joueur_1, 10, 10 ) :;
StartDrawing(SpriteOutput(#Joueur_1)) :
DrawingMode(0)
Circle(0, 0, 10 ,RGB(Random(255),Random(242),Random(185))) :
:; voila on a fini de dessiner notre sprite
StopDrawing()
;-sprite objet
;creation du sprite des pieces.
CreateSprite(#Piece_1, 10, 10 )
StartDrawing(SpriteOutput(#Piece_1)) :
DrawingMode(0)
Circle(5, 5, 5 ,RGB($FF,$FE,$00)) :StopDrawing()
;fin des sprite
CreateSprite(#Ennemis, 10, 10 )
StartDrawing(SpriteOutput(#Ennemis)) :
DrawingMode(0)
Circle(10, 5, 5 ,RGB($FF,$FE,$00)) :StopDrawing()
z=100 :
e=100
sensz=6 :
sense=6 :
Afiche_piece_1 = #True :
;fin
;-boucle et evenement
InitPiece()
Repeat
Event =WindowEvent() :
Delay(5)
x+sensx :;on ajoute (10) a la position colonne actuel du sprite
y+sensy :; ;on ajoute (10) a la position ligne actuel du sprite
If x>320-20 :; si le sprite arrive vers le bord droit de l'ecran - la largeur du sprite (10)
sensx=-sensx :; alors on inverse les coordonées en x (colonne) ceci va faire repartir le sprite dans l'autre sens
EndIf
If x<1
sensx=-sensx : ; si le sprite arrive a gauche de l'ecran on inverse ses coordonees !!
;(pas besoin de compter la largeurdu sprite puisque c'est le coin superieur GAUCHE qui compte !!)
EndIf
If y>200-10 : ; pareille si le sprite arrive en bas (c'est a dire le bas de l'ecran - la hauteur du sprite)
sensy=-sensy ; on inverse les coordonees (il rebondit)
EndIf
If y<1
sensy=-sensy :; pareille si le sprite arrive en haut !!
EndIf
;pour sprite ennemis
z+sensz :
e+sense :
If z>320-20 :
sensz=-sensz :
EndIf
If z<1
sensz=-sensz :
EndIf
If e>200-10 :
sense=-sense
EndIf
If e<1
sense=-sense :
EndIf
;racourci clavier de l'aide
InitKeyboard()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_F1)
MessageRequester("Information : But du jeux","Le but du jeux de pieceman et de manger toute les pieces avant que le traceur vous mange .:Aide = F1 touche flechéé pour se deplacer ,Bon courage et bon jeux",#PB_MessageRequester_Ok|#MB_ICONinformation)
EndIf
DisplaySprite(#Joueur_1, x, y) :
DisplaySprite(#Ennemis, z, e) :
AffichePiece()
Collision()
MovePlayer()
FlipBuffers()
ClearScreen(0, 0, 0)
Until Event=#PB_Event_CloseWindow
;* ******************* Les PROCEDURES !!!!! **********************************
;-mouvement ennemis
Procedure MoveEnnemis()
If z < 12 :z = 12 :EndIf
If z > 298 :z = 298 :EndIf
If e < 12 :e = 12 :EndIf
If e > 182 :e = 182 :EndIf
EndProcedure
;-ia de l'ennemis
Procedure IaEnnemis()
If z < 12 :z = 12 :EndIf
If z > 298 :z = 298 :EndIf
If e < 12 :e = 12 :EndIf
If e > 182 :e = 182 :EndIf
EndProcedure
;-mouvement du joueur
Procedure MovePlayer()
InitKeyboard()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Right) :x + 2 :EndIf
If KeyboardPushed(#PB_Key_Left) :x - 2 :EndIf
If x < 12 :x = 12 :EndIf
If x > 298 :x = 298 :EndIf
If KeyboardPushed(#PB_Key_Up) :y - 2 :EndIf
If KeyboardPushed(#PB_Key_Down) :y + 2 :EndIf
If y < 12 :y = 12 :EndIf
If y > 182 :y = 182 :EndIf
EndProcedure
Procedure Collision()
; test chaque piece contenue dans la liste chainée
ForEach Piece()
If SpriteCollision(#Joueur_1, x, y, #Piece_1, Piece()\x, Piece()\y) = 1
; si le joueur touche une piece ,on la supprime de la liste
DeleteElement(Piece())
EndIf
If CountList(Piece()) = 0
result = MessageRequester("Finie","Le jeux et finie vous avez ramasser toute les piece ,BRAVO",#PB_MessageRequester_Ok)
quit = 0
EndIf
Next
EndProcedure
Procedure AffichePiece()
ForEach Piece()
DisplaySprite(#Piece_1, Piece()\x, Piece()\y)
Next
EndProcedure
Procedure InitPiece()
For spy=20 To 170 Step 20 :; la boucle des lignes !!!
For spx=30 To 280 Step 20:; la boucle des colonnes
AddElement(Piece())
Piece()\x = spx
Piece()\y = spy
DisplaySprite(#Piece_1,spx,spy)
Next spx
Next spy
EndProcedure
Code : Tout sélectionner
Procedure CollisionEnnemis()
ForEach Piece()
If SpritePixelCollision(#Ennemis, z, e, #Joueur_1,Joueur_1()\a, Joueur_1()\b) = 1
DeleteElement(Joueur_1())
EndIf
Next
EndProcedure
Code : Tout sélectionner
;#################################PIECEMAN###########################################################
;# J'ai fait sa en 2 semaine lol###############################################n moin################
;#################################Creer par garzul###################################################
;enumeration des constant
Enumeration
;joueur
#Joueur_1
;enemis
#Ennemis
;au cas ou
#Garzul=1
#Police=1
;objet
#Piece_1
#Sprite3D
EndEnumeration
Structure Piece
x.l
y.l
EndStructure
NewList Piece.Piece() ; Liste chainée pour la gestion des pieces
; ************ Declaration des procedures **********************
Declare MovePlayer()
Declare Collision()
Declare InitPiece()
Declare AffichePiece()
Declare MoveEnnemis()
Declare IaEnnemis()
Declare collisionEnnemis()
;global
Global x
Global y
Global z
Global e
;les dimension du cercle
Width=200
Height=100
;fin
Global Afiche_piece_1
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;
WindowID = OpenWindow(1, 0, 0, 320, 200, #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "Pieceman")
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID,0,0, 320, 200, 1, 0,0)
MessageRequester("Information : But du jeux","Le but du jeux de pieceman et de manger toute les pieces avant que le traceur vous mange . Aide = F1 touche flechéé pour se deplacer .Bon courage et bon jeux",#PB_MessageRequester_Ok|#MB_ICONinformation)
;-sprite joueur
CreateSprite(#Joueur_1, 10, 10 ) :;
StartDrawing(SpriteOutput(#Joueur_1)) :
DrawingMode(0)
Circle(0, 0, 10 ,RGB(Random(255),Random(242),Random(185))) :
:; voila on a fini de dessiner notre sprite
StopDrawing()
;-sprite objet
;creation du sprite des pieces.
CreateSprite(#Piece_1, 10, 10 )
StartDrawing(SpriteOutput(#Piece_1)) :
DrawingMode(0)
Circle(5, 5, 5 ,RGB($FF,$FE,$00)) :StopDrawing()
;fin des sprite
CreateSprite(#Ennemis, 10, 10 )
StartDrawing(SpriteOutput(#Ennemis)) :
DrawingMode(0)
Circle(10, 5, 5 ,RGB($FF,$FE,$00)) :StopDrawing()
z=100 :
e=100
sensz=6 :
sense=6 :
Afiche_piece_1 = #True :
;fin
;-boucle et evenement
InitPiece()
Repeat
Event =WindowEvent() :
Delay(5)
x+sensx :;on ajoute (10) a la position colonne actuel du sprite
y+sensy :; ;on ajoute (10) a la position ligne actuel du sprite
If x>320-20 :; si le sprite arrive vers le bord droit de l'ecran - la largeur du sprite (10)
sensx=-sensx :; alors on inverse les coordonées en x (colonne) ceci va faire repartir le sprite dans l'autre sens
EndIf
If x<1
sensx=-sensx : ; si le sprite arrive a gauche de l'ecran on inverse ses coordonees !!
;(pas besoin de compter la largeurdu sprite puisque c'est le coin superieur GAUCHE qui compte !!)
EndIf
If y>200-10 : ; pareille si le sprite arrive en bas (c'est a dire le bas de l'ecran - la hauteur du sprite)
sensy=-sensy ; on inverse les coordonees (il rebondit)
EndIf
If y<1
sensy=-sensy :; pareille si le sprite arrive en haut !!
EndIf
;pour sprite ennemis
z+sensz :
e+sense :
If z>320-20 :
sensz=-sensz :
EndIf
If z<1
sensz=-sensz :
EndIf
If e>200-10 :
sense=-sense
EndIf
If e<1
sense=-sense :
EndIf
;racourci clavier de l'aide
InitKeyboard()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_F1)
MessageRequester("Information : But du jeux","Le but du jeux de pieceman et de manger toute les pieces avant que le traceur vous mange .:Aide = F1 touche flechéé pour se deplacer ,Bon courage et bon jeux",#PB_MessageRequester_Ok|#MB_ICONinformation)
EndIf
DisplaySprite(#Joueur_1, x, y) :
DisplaySprite(#Ennemis, z, e) :
AffichePiece()
Collision()
MovePlayer()
FlipBuffers()
ClearScreen(0, 0, 0)
Until Event=#PB_Event_CloseWindow
;* ******************* Les PROCEDURES !!!!! **********************************
;-mouvement ennemis
Procedure MoveEnnemis()
If z < 12 :z = 12 :EndIf
If z > 298 :z = 298 :EndIf
If e < 12 :e = 12 :EndIf
If e > 182 :e = 182 :EndIf
EndProcedure
;-ia de l'ennemis
Procedure IaEnnemis()
If z < 12 :z = 12 :EndIf
If z > 298 :z = 298 :EndIf
If e < 12 :e = 12 :EndIf
If e > 182 :e = 182 :EndIf
EndProcedure
;-mouvement du joueur
Procedure MovePlayer()
InitKeyboard()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Right) :x + 2 :EndIf
If KeyboardPushed(#PB_Key_Left) :x - 2 :EndIf
If x < 12 :x = 12 :EndIf
If x > 298 :x = 298 :EndIf
If KeyboardPushed(#PB_Key_Up) :y - 2 :EndIf
If KeyboardPushed(#PB_Key_Down) :y + 2 :EndIf
If y < 12 :y = 12 :EndIf
If y > 182 :y = 182 :EndIf
EndProcedure
Procedure Collision()
; test chaque piece contenue dans la liste chainée
ForEach Piece()
If SpriteCollision(#Joueur_1, x, y, #Piece_1, Piece()\x, Piece()\y) = 1
; si le joueur touche une piece ,on la supprime de la liste
DeleteElement(Piece())
EndIf
If CountList(Piece()) = 0
Result = MessageRequester("Finie","Le jeux et finie vous avez ramasser toute les piece ,BRAVO",#PB_MessageRequester_Ok)
quit = 0
EndIf
Next
; ************* rajout de DOBRO ************************
If SpriteCollision(#Joueur_1, x, y, #Ennemis, z, e) = 1
MessageRequester("touché", "l'ennemi ta touché", #PB_MessageRequester_Ok )
; ici faut faire disparaitre soit l'ennemi soit le joueur e toi de choisir!!
EndIf
EndProcedure
Procedure AffichePiece()
ForEach Piece()
DisplaySprite(#Piece_1, Piece()\x, Piece()\y)
Next
EndProcedure
Procedure InitPiece()
For spy=20 To 170 Step 20 :; la boucle des lignes !!!
For spx=30 To 280 Step 20:; la boucle des colonnes
AddElement(Piece())
Piece()\x = spx
Piece()\y = spy
DisplaySprite(#Piece_1,spx,spy)
Next spx
Next spy
EndProcedure