Pour GARZUL
Pour moi le C est un tres bon langage d'un point de vue pédagogique... Il est tres rigoureux et donc en cas d'erreur on le sait immédiatement...
Par exemple en PB si tu as une variable 'langage' et qu'un moment tu écris 'language' ca va créer une deuxieme variable et parfois on met du temps à trouver ce genre d'erreur (encore hier ca m'est arrivé...)
La philosophie du C est tres différente et sa rigueur risque de te décourager... Aussi faut pas partir là dedans avec l'idée de créer un super truc... Le mieux pour apprendre à coder c'est de se contenter de programmes simples avec l'affichage du résultat dans la console...
Dri
Par exemple en PB si tu as une variable 'langage' et qu'un moment tu écris 'language' ca va créer une deuxieme variable et parfois on met du temps à trouver ce genre d'erreur (encore hier ca m'est arrivé...)
La philosophie du C est tres différente et sa rigueur risque de te décourager... Aussi faut pas partir là dedans avec l'idée de créer un super truc... Le mieux pour apprendre à coder c'est de se contenter de programmes simples avec l'affichage du résultat dans la console...
Dri
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
-
Le Soldat Inconnu
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
utilises la fonction spritepixelcollision() pour savoir si ils se rentrent dedans.
je te laisse chercher un peu et si tu trouves pas, on t'aideras
je te laisse chercher un peu et si tu trouves pas, on t'aideras
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
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 -
Aranoth
- Messages : 293
- Inscription : sam. 24/janv./2004 12:00
- Localisation : Toulouse (31)
- Contact :
c'est lui meme lol
je plaisante bien sur
je plaisante bien sur
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Vous souhaitez apprendre ?
- Planet-DEV, le site (bientot)
- Le forum