le fichier 010908 est le fichier source normalement ou je n y comprends plus rien
Code : Tout sélectionner
;modi 070808
;apparition enva sur score
If InitEngine3D()=0 Or InitMouse ()=0 Or InitSprite ()=0 Or InitKeyboard ()=0 Or InitSprite3D ()=0 Or InitSound()=0 Or InitMovie()=0
MessageRequester ( "Error" , "Can't open DirectX 7 or later" , 0)
End
EndIf
UsePNGImageDecoder()
UseOGGSoundDecoder()
Enumeration
#explos1wav;son explosion
#galax ;sprite fond d'ecran
#vaisseau ;sprite vaisseau
#tir1 ;missile 1ee
#aster1;asteroide 1
#aster2;asteroide 2
#explosion ;=60 frame anim explosion 1
#explovai;=30 frame anim explosion 2
#cinq;musique
#enemi1
#boum ;explosion vaisseau joueur
#boum3d;pour zoom
#encadre
#envahis
#enva
EndEnumeration
Global ta2=0,ta1=0,te1=0,score=200,t=0 ,r=Random(2),scrolling=0,vie=10,vitesse=5
Global explosion.AnimSprite,explovai.animsprite,jouani=0,animx,animy,jouani2=0,animx2,animy2
Global eva1=0,depx=0,depbord=1,nbenva;asteroide1=40+Random(700)
Global MouseExClic.b, MouseClic.b, MousePressed.b, MouseReleased.b,pericer=0,rayon=500
OpenScreen(800,600,32,"ecranjeu")
;son musique******************************************
LoadSound(#explos1wav,"c:\space\explos1.wav")
LoadSound(#cinq,"c:\space\54.wav")
;image et sprite**************************************************************
LoadSprite(#encadre,"c:\space\encadre.png")
TransparentSpriteColor(#encadre,$ffffff)
LoadSprite(#galax,"c:\space\gala1.png") ;
LoadSprite(#aster1,"c:\space\aster1.png")
TransparentSpriteColor(#aster1,$ffffff)
LoadSprite(#aster2,"c:\space\aster2.png")
TransparentSpriteColor(#aster2,$ffffff)
LoadSprite(#vaisseau,"c:\space\vaisseau.png",0)
TransparentSpriteColor(#vaisseau,$ffffff)
LoadSprite(#tir1,"c:\space\tir1.png",0)
TransparentSpriteColor(#tir1,$ffffff)
MouseLocate(385,520)
LoadSprite(#enemi1,"c:\space\enemi1.png",0)
TransparentSpriteColor(#enemi1,$ffffff)
LoadSprite(#boum,"c:\space\spiro.png",#PB_Sprite_Texture)
CreateSprite3D(#boum3d,#boum)
LoadSprite(#explosion,"c:\space\explosion.png",0)
CreateAnimSprite(explosion,#explosion,70,70,50);explosion 1variable animsprite
TransparentSpriteColor(#explosion,$ffffff)
LoadSprite(#explovai,"c:\space\explovai.png",0)
CreateAnimSprite(explovai,#explovai,98,100,100);explosion 2 vaisseau
TransparentSpriteColor(#explovai,$ffffff)
;**************************************************
;declare les procedures
Declare addtir(posx.l,posy.l)
Declare gestiontir()
Declare addenva()
Declare addaster1(posx.l,posy.l)
Declare affaster1()
Declare detectclic()
Declare affaster2()
Declare addaster2(posx.l,posy.l)
#maxenva=30
;************************************************************
Structure s_sprite
id.l
posx.l
posy.l
EndStructure
Global NewList tirjoueur.s_sprite()
Global NewList enva.s_sprite()
Global enva.s_sprite
Global NewList asteroide1.s_sprite()
Global asteroide1.l
Global NewList asteroide2.s_sprite()
Global asteroide2.l
;*********************************************
;sprite grille
For nbenva=#enva To #enva+#maxenva
LoadSprite(nbenva,"c:\space\envah1.png",0)
Next nbenva
For ay=50 To 150 Step 50
For ax=104 To 680 Step 64
k+1
AddElement(enva())
enva()\id=#enva+k
enva()\posx=ax
enva()\posy=ay
Next ax
Next ay
;*********************************************
;** programme principale **
;*********************************************
Repeat
DisplaySprite(#galax,0,scrolling)
DisplaySprite(#galax,0,scrolling-600)
scrolling+2:If scrolling>600:scrolling=0:EndIf
ExamineMouse()
ExamineKeyboard()
addtir(posx,posy)
DetectClic()
gestiontir()
If jouani=1:DisplayAnimSprite(explosion,animx,animy) ;l'astuce
If 60=CurrentAnimFrame(explosion):jouani=0
EndIf
EndIf
If jouani2=1:ReleaseMouse(1):DisplayAnimSprite(explovai,animx2,animy2)
; If 29=CurrentAnimFrame(explovai):gestionvie(): MouseLocate(385,520):jouani2=0:ReleaseMouse(0): EndIf
EndIf
;-------------------------------------
Select r;affiche au hasard different obstacles
Case 0:addaster1(posx.l,posy.l):
Case 1:addaster2(posx.l,posy.l)
Case 2:r=Random(2);addaster1(posx.l,posy.l)
EndSelect
;--------------------------------------
If jouani2<>1;gestion souris
DisplayTransparentSprite(#vaisseau,MouseX(),MouseY())
If MouseX()<42 :MouseLocate(42,MouseY()):EndIf
If MouseX()>728 :MouseLocate(728,MouseY()):EndIf
If MouseY()<42 :MouseLocate(MouseX(),42):EndIf
If MouseY()>496 :MouseLocate(MouseX(),496):EndIf
EndIf
;difficulte niveau suivant scoreenvah1x
If score>20 And score <40 :vitesse=7:EndIf
If score>40 And score <80 :vitesse=9:EndIf
If score>80 And score <100 :vitesse=11:EndIf
If score>100 And score <200 :vitesse=13:EndIf
;-------------------------------------------
If score>200: addenva() :EndIf
;--------------------------------------
DisplayTransparentSprite(#encadre,0,0)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(50,570,"VIE "+Str(vie))
DrawText(200,570,"SCORE "+Str(score)+" enva"+Str(r))
StopDrawing()
FlipBuffers()
Until KeyboardPushed (#PB_Key_Escape)
End
;*******************************************************
;procedures ********************************************
;*******************************************************
Procedure addtir(posx.l,posy.l)
AddElement(tirjoueur())
tirjoueur()\posx=posx
tirjoueur()\posy=posy
EndProcedure
;***************************************
Procedure gestiontir()
Select Mousereleased;on a relache la souris
Case 0
t=1
Case 1
t=0
EndSelect
If t=0
tirjoueur()\posx=MouseX()+13
tirjoueur()\posy=MouseY()
EndIf
If t=1
ForEach tirjoueur()
tirjoueur()\posy-5
DisplayTransparentSprite(#tir1,tirjoueur()\posx,tirjoueur()\posy)
If tirjoueur()\posy=0:score+1
t=0
tirjoueur()\posy=MouseY()
DeleteElement(tirjoueur())
Continue
EndIf
;-------------------------------------------------
ForEach enva() ;controle si tir reussi
If SpritePixelCollision(#tir1,tirjoueur()\posx,tirjoueur()\posy,enva()\id,enva()\posx,enva()\posy) And score > 201
DeleteElement(tirjoueur())
DeleteElement(enva())
PlaySound(#explos1wav)
t=0
;Break
EndIf
;-------------------------------------------------
ForEach asteroide1(); controle tir reussi
If SpritePixelCollision(#tir1,tirjoueur()\posx,tirjoueur()\posy,#aster1,asteroide1()\posx,asteroide1()\posy)
DeleteElement(tirjoueur())
DeleteElement(asteroide1())
PlaySound(#explos1wav)
t=0
;Break
EndIf
;------------------------------------------------
ForEach asteroide2(); controle tir reussi
If SpritePixelCollision(#tir1,tirjoueur()\posx,tirjoueur()\posy,#aster2,asteroide1()\posx,asteroide1()\posy)
DeleteElement(tirjoueur())
DeleteElement(asteroide2())
PlaySound(#explos1wav)
t=0
;Break
EndIf
;-------------------------------------------------
Next
Next
Next
Next
EndIf
EndProcedure
;***************************************
Procedure addenva()
depx=depx+depbord
If depx=31:depbord=-1:EndIf
If depx=-31:depbord=1:EndIf
ForEach enva()
DisplayTransparentSprite(enva()\id,enva()\posx+depx,enva()\posy)
TransparentSpriteColor(enva()\id,$ffffff)
Next
EndProcedure
;******************************************************
Procedure addaster1(posx.l,posy.l)
If CountList(asteroide1())=0
AddElement(asteroide1())
asteroide1()\posy=-100:asteroide1()\posx=40+Random(700)
EndIf
affaster1()
EndProcedure
;***************************************
Procedure affaster1()
ForEach asteroide1()
asteroide1()\posy+vitesse
DisplayTransparentSprite(#aster1,asteroide1()\posx,asteroide1()\posy)
If asteroide1()\posy>600
DeleteElement(asteroide1())
r=Random(2)
;Break
EndIf
Next
EndProcedure
;*******************************************************
Procedure addaster2(posx.l,posy.l)
If CountList(asteroide2())=0
AddElement(asteroide2())
asteroide2()\posy=-100:asteroide2()\posx=40+Random(700)
EndIf
affaster2()
EndProcedure
;*********************************************************************
Procedure affaster2()
ForEach asteroide2()
asteroide2()\posy+vitesse
DisplayTransparentSprite(#aster2,asteroide2()\posx,asteroide2()\posy)
If asteroide2()\posy>600
DeleteElement(asteroide2())
r=Random(2)
;Break
EndIf
Next
EndProcedure
;****************************************************************
Procedure DetectClic() ;permet le tir coup par coup je remercie untel du forum j'ai pas le nom
MouseClic = #Null
MouseReleased = #Null
If MouseButton(1) And MouseExClic = #Null
MouseClic = #True
EndIf
If MouseButton(1)=0 And MouseExClic = #True
MouseReleased = #True
EndIf
MouseExClic = MouseButton(1)
MousePressed = MouseButton(1)
EndProcedure