Peur Basique
Publié : jeu. 26/juil./2007 17:03
La vie d'un fantôme n'est pas toujours facile, surtout lorsqu'on est piégé dans un labyrinthe, poursuivi par un dangereux glouton qui a perdu tout sens commun.
Aujourd'hui, c'est un petit fantôme qui a besoin de vous, alors aider le à grandir et à s'épanouir...
Pour accomplir cette quête, il vous faudra une souris 2 boutons et les touches "R", "F" et "Esc" de votre clavier vous seront utile aussi.
Aujourd'hui, c'est un petit fantôme qui a besoin de vous, alors aider le à grandir et à s'épanouir...
Pour accomplir cette quête, il vous faudra une souris 2 boutons et les touches "R", "F" et "Esc" de votre clavier vous seront utile aussi.
Code : Tout sélectionner
; ------------------------------------------------------------
; video game - PC -
; Peur Basique - 2007 - source PureBasic 4.02
; France - Toulouse - H. Philippe - pseudo: beauregard
; ------------------------------------------------------------
If InitMouse ()=0 Or InitSprite ()=0 Or InitKeyboard ()=0 Or InitSprite3D ()=0
MessageRequester ( "Error" , "Can't open DirectX 7 or later" , 0)
End
EndIf
Enumeration ; ici, on donne un petit nom à nos sprites( non, chuis pas un numéro !):
;
#logotitre
#logotitre3D
;
#fondA
#fondA3D
; dirigé par le joueur durand l'introduction:
#pb
#pb3D
; dirigé par le joueur durand la phase de jeu:
#ghost ;
#ghost3D
#oeil
#oeil3D
#drapA ; drap animation 1
#drapA3D
#drapB ; drap animation 2
#drapB3D
; barre d'énergie:
#sphoton
#sphoton3D
#photon
#photon3D
; bonbon pour remonter la barre d'énergie ( mais qui fait également grossir ! ):
#bonbon
#bonbon3D
#eonbon; enveloppe du bonbon
#eonbon3D
#pointA
#pointA3D
#pointB
#pointB3D
; vilain:
#elice
#elice3D
#pic
#pic3D
; permet au progammeur de repèrer les positions des divers objets qu'il teste à l'écran:
#repere
#repere3D
; intro:
#fleche
#fleche3D
#flechf
#flechf3D
#ghostB ;
#ghostB3D
EndEnumeration
Global gposX.w,gposY.w,ybonbon,d1fleche
Global nbreis ; nombre d'image par seconde ( appuyez sur la touche F).
Global page.w=0,niveau.w=1,etapeanim.w,etanT.w,mange.w,Tniveau.w
Global animdrap.w=0 ; animation du drap
Global ghostv.w=255 ; niveau de visibilité au regard des vilains gloutons.
Global energie.w=20,energid ; utilisé pour se rendre transparent, ou maigrir.
Global Tenergie.w=0 ; tempo pour établir la vitesse d'épuisement de la barre l'énergie.
Global gtaille.w=50 ; taille du ghost qui peut aller de 50 à 200.
Global ghostaie.w ; ghost subit contact mortel.
Global testX.w,testY.w ; position X et Y du curseur de la souris.
Global repereX.w,repereY.w
Global possx.w,memsx.w
Global zattract.w ; utilisé pour définir la zone d'attraction du ghost.
; variables globales utilisées pour clone elice:
Global eli_bord.w,eli_taille.w,eli_speed.w,eli_choix.w,eli_sensrot.w
Global tourne.w,tourne2.w=-180,tournf.w,tournf2.w=-180,tournestop.w
Global pointd.w,pointm.w,pointn.w,pointg.w,pointX.w,pointY.w,pointt.w
Global placemX=512,placemY=384
Structure objet
id.l
x.w
Y.w
sensx.l
sensy.l
sr.w
attract.w
EndStructure
Global NewList bonbon.objet();opération de clonage...
Global NewList elice.objet();
Global NewList bfond.objet(); bloc fond
Declare Fclonebfond()
Declare Fcloneb() ; bonbon
Declare Fclonee() ; elice
Declare Fghost(); ghost
Declare Freset() ; remise à 0 en appuyant sur la touche R
Declare Ftestcodeur()
Declare Fintro()
; Si votre PC ne peut pas afficher une haute résoution résolution en 32bit, Alors arrêt du programme.
;If OpenScreen (1440, 900, 32, "peur basique" )=0
If OpenScreen (1024, 768, 32, "peur basique" )=0
MessageRequester ( "Error" , "Can't open a 1024*768 - 32 bit screen !" , 0)
End
EndIf
; °°°°°°°°°°°°°°°°°°°° fonte °°°°°°°°°°°°°°°°°°°°°°°°°°
#font =1
LoadFont ( #font , "Arial" ,40)
FontID = LoadFont ( 1 , "arial" , 25, #PB_Font_Bold )
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
; logotitre
CreateSprite ( #logotitre ,256,256, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #logotitre ))
DrawingFont ( FontID ( #font ))
BackColor ( RGB (0,0,0))
FrontColor ( RGB (154,154,154))
DrawText (0+1,0+1, "PEUR BASIQUE")
FrontColor ( RGB (224,224,224))
DrawText (0,0, "PEUR BASIQUE")
StopDrawing ()
CreateSprite3D ( #logotitre3D , #logotitre )
; fond:
CreateSprite ( #fondA ,64,64, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #fondA ))
BackColor ( RGB (0,0,0))
Box (0,0, 64, 64, RGB (108,119,206))
Box (1,1, 62, 62, RGB (26,45,190))
Box (2,2, 60, 60, RGB (0,17,142))
Box (16,16, 32, 32, RGB (2,11,83))
Box (18,18, 30, 30, RGB (1,8,43))
StopDrawing ()
;CreateSprite3D ( #fondA3D , #fondA )
; icone souris( en forme de cartouche de jeu pour la console purebasiconsole):
CreateSprite ( #pb ,128,128, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #pb ))
BackColor ( RGB (164,21,21))
Box (0,0, 128, 9, RGB (158,5,5))
Box (10,10, 108, 118, RGB (241,224,224))
FrontColor ( RGB (255,255,255))
DrawText (28,22, " purebasic ")
DrawText (13,55, "PEUR BASIQUE")
Box (40+15,80, 4*4, 4, RGB (158,5,5))
Box (24/2+35,82, 4*8, 4, RGB (162,15,15))
Box (40/2+35,84, 4*4, 4, RGB (164,21,21)):Box (16/2+35,84, 4, 4, RGB (164,21,21)):Box (88/2+35,84, 4, 4, RGB (164,21,21))
Box (48/2+35,86, 4*2, 4, RGB (168,32,32)):Box (8/2+35,86, 4, 4, RGB (168,32,32)):Box (96/2+35,86, 4, 4, RGB (168,32,32))
Box (48/2+35,88, 4*2, 4, RGB (172,42,42)):Box (8/2+35,88, 4, 4, RGB (172,42,42)):Box (96/2+35,88, 4, 4, RGB (172,42,42))
Box (40/2+35,90, 4*4, 4, RGB (176,53,53)):Box (8/2+35,90, 4*2, 4, RGB (176,53,53)):Box (88/2+35,90, 4*2, 4, RGB (176,53,53))
Box (0+35,92, 4*14, 4, RGB (179,61,61))
Box (0+35,94, 4*14, 4, RGB (185,77,77))
Box (0+35,96, 4*14, 4, RGB (190,89,89))
Box (0+35,98, 4*14, 4, RGB (195,102,102))
Box (0+35,100, 4*14, 4, RGB (200,115,115))
Box (0+35,102, 4*14, 4, RGB (204,127,127))
Box (0+35,104, 4*4, 4, RGB (209,140,140)):Box (40/2+35,104, 4*4, 4, RGB (209,140,140)):Box (80/2+35,104, 4*4, 4, RGB (209,140,140))
Box (8/2+35,106, 4*2, 4, RGB (214,152,152)):Box (48/2+35,106, 4*2, 4, RGB (214,152,152)):Box (88/2+35,106, 4*2, 4, RGB (214,152,152))
StopDrawing ()
CreateSprite3D ( #pb3D , #pb )
; support photon (support pour chaque barre d'énergie du ghost):
CreateSprite ( #sphoton ,32,32, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #sphoton ))
BackColor ( RGB (0,0,0))
Box (0,0, 32, 20, RGB (255,255,255)):Box (2,2, 28, 16, RGB (55,25,25))
StopDrawing ()
CreateSprite3D ( #sphoton3D , #sphoton )
; photon (barre d'énergie du ghost):
CreateSprite ( #photon ,32,32, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #photon ))
BackColor ( RGB (0,0,0))
Box (2,2, 28, 16, RGB (255,0,0))
StopDrawing ()
CreateSprite3D ( #photon3D , #photon )
; ghost:
CreateSprite ( #ghost ,128,128, #PB_Sprite_Texture ) ; objet dirigé par le joueur.
StartDrawing ( SpriteOutput ( #ghost ))
BackColor ( RGB (0,0,0))
Box (40,0, 8*4, 8, RGB (48,231,225))
Box (24,8, 8*8, 8, RGB (64,233,227))
Box (40,16, 8*4, 8, RGB (80,235,229)):Box (16,16, 8, 8, RGB (80,235,229)):Box (88,16, 8, 8, RGB (80,235,229))
Box (24,16, 8*2, 8, RGB (255,255,255)):Box (24+(6*8),16, 8*2, 8, RGB (255,255,255))
Box (48,24, 8*2, 8, RGB (102,237,233)):Box (8,24, 8, 8, RGB (102,237,233)):Box (96,24, 8, 8, RGB (102,237,233))
Box (16,24, 8*4, 8, RGB (255,255,255)):Box (16+(6*8),24, 8*4, 8, RGB (255,255,255))
Box (48,32, 8*2, 8, RGB (123,240,236)):Box (8,32, 8, 8, RGB (123,240,236)):Box (96,32, 8, 8, RGB (123,240,236))
Box (16,32, 8*4, 8, RGB (255,255,255)):Box (16+(6*8),32, 8*4, 8, RGB (255,255,255))
Box (40,40, 8*4, 8, RGB (146,242,239)):Box (8,40, 8*2, 8, RGB (146,242,239)):Box (88,40, 8*2, 8, RGB (146,242,239))
Box (24,40, 8*2, 8, RGB (255,255,255)):Box (24+(6*8),40, 8*2, 8, RGB (255,255,255))
Box (0,48, 8*14, 8, RGB (168,245,242))
Box (0,56, 8*14, 8, RGB (191,248,246))
Box (0,64, 8*14, 8, RGB (211,250,249))
Box (0,72, 8*14, 8, RGB (228,252,251))
Box (0,80, 8*14, 8, RGB (238,253,252))
Box (0,88, 8*14, 8, RGB (244,254,253))
StopDrawing ()
CreateSprite3D ( #ghost3D , #ghost )
; beauregard du ghost:
CreateSprite ( #oeil ,128,128, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #oeil ))
BackColor ( RGB (0,0,0))
Box (24,24, 16, 16, RGB (0,30,255)):Box (72,24, 16, 16, RGB (0,30,255))
StopDrawing ()
CreateSprite3D ( #oeil3D , #oeil )
; drapA du ghost:
CreateSprite ( #drapA ,128,128, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #drapA ))
BackColor ( RGB (0,0,0))
Box (0,96, 8*2, 8, RGB (255,255,255)):Box (24,96, 8*3, 8, RGB (255,255,255))
Box (64,96, 8*3, 8, RGB (255,255,255)) :Box (96,96, 8*2, 8, RGB (255,255,255))
Box (0,104, 8, 8, RGB (255,255,255)):Box (32,104, 8*2, 8, RGB (255,255,255))
Box (64,104, 8*2, 8, RGB (255,255,255)) :Box (104,104, 8, 8, RGB (255,255,255))
StopDrawing ()
CreateSprite3D ( #drapA3D , #drapA )
; drapB du ghost:
CreateSprite ( #drapB ,128,128, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #drapB ))
BackColor ( RGB (0,0,0))
Box (0,96, 8*4, 8, RGB (255,255,255)):Box (40,96, 8*4, 8, RGB (255,255,255)):Box (80,96, 8*4, 8, RGB (255,255,255))
Box (8,104, 8*2, 8, RGB (255,255,255)):Box (48,104, 8*2, 8, RGB (255,255,255)):Box (88,104, 8*2, 8, RGB (255,255,255))
StopDrawing ()
CreateSprite3D ( #drapB3D , #drapB )
; bonbon:
CreateSprite ( #bonbon ,32,32, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #bonbon ))
BackColor ( RGB (0,0,0))
Circle(12,12, 12, RGB (251,161,194))
Circle(14,7, 4, RGB (255,201,230))
StopDrawing ()
CreateSprite3D ( #bonbon3D , #bonbon )
; eonbon: ( e comme enveloppe)
CreateSprite ( #eonbon ,32,32, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #eonbon ))
BackColor ( RGB (0,0,0))
Circle(16,16, 16, RGB (251,131,174))
StopDrawing ()
CreateSprite3D ( #eonbon3D , #eonbon )
; +10 --> chaque bonbon récolté rapporte, avec un ghost d'une taille<200, 10 points:
CreateSprite ( #pointA ,32,32, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #pointA ))
BackColor ( RGB (0,0,0))
FrontColor ( RGB (255,255,255)):DrawText (0,0, "+10")
StopDrawing ()
CreateSprite3D ( #pointA3D , #pointA )
; +100 --> chaque bonbon récolté rapporte, avec un ghost d'une taille=200, 100 points:
CreateSprite ( #pointB ,32,32, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #pointB ))
BackColor ( RGB (0,0,0))
FrontColor ( RGB (255,255,255)):DrawText (0,0, "+100")
StopDrawing ()
CreateSprite3D ( #pointB3D , #pointB )
; elice:
CreateSprite ( #elice ,64,64, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #elice ))
BackColor ( RGB (0,0,0))
Circle(32,32, 32, RGB (255,236,0)):Circle(32,32, 31, RGB (255,200,0))
Circle(32,32, 30, RGB (255,164,0)):Circle(32,32, 29, RGB (255,128,0))
Circle(32,32, 28, RGB (255,92,0)):Circle(32,32, 27, RGB (255,7,0))
StopDrawing ()
CreateSprite3D ( #elice3D , #elice )
; pale de l'elice:
CreateSprite ( #pic ,16,16, #PB_Sprite_Texture ) ; objet tournant autour du disque
StartDrawing ( SpriteOutput ( #pic ))
BackColor ( RGB (0,0,0))
LineXY (0,1, 16,1, RGB (245,245,245))
LineXY (16,1, 8,15, RGB (245,245,245))
LineXY (8,15, 0,1, RGB (245,245,245))
FillArea (8,4, RGB (245,245,245), RGB (245,245,245))
StopDrawing ()
CreateSprite3D ( #pic3D , #pic )
; repere ( utilisé uniquement par le programmeur):
CreateSprite ( #repere ,4,4, #PB_Sprite_Texture )
StartDrawing ( SpriteOutput ( #repere ))
BackColor ( RGB (0,0,0))
Box (0,0, 4, 4, RGB (255,255,255))
StopDrawing ()
CreateSprite3D ( #repere3D , #repere )
; grand ghost pour l'animé de l'intro:
CreateSprite ( #ghostB ,128,128, #PB_Sprite_Texture ) ; objet dirigé par le joueur.
StartDrawing ( SpriteOutput ( #ghostB ))
BackColor ( RGB (0,0,0))
Box (40,0, 8*4, 8, RGB (255,8,23))
Box (24,8, 8*8, 8, RGB (255,18,31))
Box (40,16, 8*4, 8, RGB (255,29,42)):Box (16,16, 8, 8, RGB (255,29,42)):Box (88,16, 8, 8, RGB (255,29,42))
Box (24,16, 8*2, 8, RGB (255,255,255)):Box (24+(6*8),16, 8*2, 8, RGB (255,255,255))
Box (48,24, 8*2, 8, RGB (255,43,55)):Box (8,24, 8, 8, RGB (255,43,55)):Box (96,24, 8, 8, RGB (255,43,55))
Box (16,24, 8*4, 8, RGB (255,255,255)):Box (16+(6*8),24, 8*4, 8, RGB (255,255,255))
Box (48,32, 8*2, 8, RGB (255,58,70)):Box (8,32, 8, 8, RGB (255,58,70)):Box (96,32, 8, 8, RGB (255,58,70))
Box (16,32, 8*4, 8, RGB (255,255,255)):Box (16+(6*8),32, 8*4, 8, RGB (255,255,255))
Box (40,40, 8*4, 8, RGB (255,75,86)):Box (8,40, 8*2, 8, RGB (255,75,86)):Box (88,40, 8*2, 8, RGB (255,75,86))
Box (24,40, 8*2, 8, RGB (255,255,255)):Box (24+(6*8),40, 8*2, 8, RGB (255,255,255))
Box (0,48, 8*14, 8, RGB (255,93,103))
Box (0,56, 8*14, 8, RGB (255,113,121))
Box (0,64, 8*14, 8, RGB (255,142,149))
Box (0,72, 8*14, 8, RGB (255,176,181))
Box (0,80, 8*14, 8, RGB (255,209,212))
Box (0,88, 8*14, 8, RGB (255,238,239))
StopDrawing ()
CreateSprite3D ( #ghostB3D , #ghostB)
; fleche pour l'intro:
CreateSprite ( #fleche ,32,32, #PB_Sprite_Texture ) ; objet dirigé par le joueur.
StartDrawing ( SpriteOutput ( #fleche ))
BackColor ( RGB (0,0,0))
LineXY (0,0, 16,0, RGB (250,250,250))
LineXY (16,0, 0,16, RGB (250,250,250))
LineXY (0,16, 0,0, RGB (250,250,250))
LineXY (12,6, 16,10, RGB (250,250,250))
LineXY (16,10, 10,16, RGB (250,250,250))
LineXY (5,11, 10,16, RGB (250,250,250))
StopDrawing ()
CreateSprite3D ( #fleche3D , #fleche)
; flechf pour l'intro:
CreateSprite ( #flechf ,32,32, #PB_Sprite_Texture ) ; objet dirigé par le joueur si pointe bonbon.
StartDrawing ( SpriteOutput ( #flechf ))
BackColor ( RGB (0,0,0))
LineXY (0,0, 16,0, RGB (255,6,59))
LineXY (16,0, 0,16, RGB (255,6,59))
LineXY (0,16, 0,0, RGB (255,6,59))
LineXY (12,6, 16,10, RGB (255,6,59))
LineXY (16,10, 10,16, RGB (255,6,59))
LineXY (5,11, 10,16, RGB (255,6,59))
StopDrawing ()
CreateSprite3D ( #flechf3D , #flechf)
Global colonne
DataSection ; read et data : comment... ça marche ( pour le débutant qui débute depuis le début).
Data.l 2,4,5,8,11,12,14
Data.l 1,2,4,7,8,9,12,14,15
Data.l 1,2,4,5,8,11,12,14,15
Data.l 1,2,4,7,9,12,14,15
Data.l 1,2,4,7,8,9,12,14,15
Data.l 4,7,8,9,12
Data.l 2,3,4,5,8,11,12,13,14
EndDataSection
MouseLocate(512-6,600)
Global zutA,zutB,zutC
; ******************************************************************************************************
Repeat ; Boucle principale
; ******************************************************************************************************
ExamineMouse():ExamineKeyboard ()
If page=0:Fintro():EndIf
If page=1
If MouseX ()>992-(gtaille/2):MouseLocate(992-(gtaille/2),testY):EndIf
testX=MouseX ()
If MouseY ()>704-(gtaille/2):MouseLocate(testX,704-(gtaille/2)):EndIf
StartDrawing ( ScreenOutput ())
AdresseMemoire = DrawingBuffer ()
Box (512-132,384-72, 264, 264, RGB (241,202,202))
Box (512-66,384-36, 132, 32, RGB (200,115,115))
Box (512-66,384-22, 132, 3, RGB (164,21,21))
Circle(512-94,536, 24, RGB (214,152,152))
Circle(512-94,536, 23, RGB (200,115,115))
Circle(512-94,536, 22, RGB (214,152,152))
Circle(512-94,536, 21, RGB (241,202,202))
Circle(512+94,536, 24, RGB (214,152,152))
Circle(512+94,536, 23, RGB (200,115,115))
Circle(512+94,536, 22, RGB (214,152,152))
Circle(512+94,536, 21, RGB (241,202,202))
; logo pb:
LineXY (500, 495-50, 524, 500-50, RGB (200,115,115))
LineXY (524, 500-50, 512, 512-50, RGB (200,115,115))
LineXY (512, 512-50, 524, 514-50, RGB (200,115,115))
LineXY (524, 514-50, 512, 526-50, RGB (200,115,115))
LineXY (512, 526-50, 500, 524-50, RGB (200,115,115))
LineXY (500, 524-50, 488, 536-50, RGB (200,115,115))
LineXY (488, 536-50, 524, 542-50, RGB (200,115,115))
LineXY (524, 542-50, 512, 554-50, RGB (200,115,115))
; souris gauche:
LineXY (175, 400, 275, 400, RGB (200,115,115))
LineXY (275, 400, 275, 550, RGB (200,115,115))
LineXY (275, 550, 175, 550, RGB (200,115,115))
LineXY (175, 550, 175, 400, RGB (200,115,115))
Box (180,405, 40, 50, RGB (164,21,21))
; souris droite:
LineXY (175+574, 400, 275+574, 400, RGB (200,115,115))
LineXY (275+574, 400, 275+574, 550, RGB (200,115,115))
LineXY (275+574, 550, 175+574, 550, RGB (200,115,115))
LineXY (175+574, 550, 175+574, 400, RGB (200,115,115))
Box (180+574+51,405, 40, 50, RGB (164,21,21))
;StartDrawing ( ScreenOutput ())
DrawingMode (1)
If KeyboardPushed ( #PB_Key_Right ):placemX+1:EndIf
If KeyboardPushed ( #PB_Key_Left ):placemX-1:EndIf
If KeyboardPushed ( #PB_Key_Down ):placemY+1:EndIf
If KeyboardPushed ( #PB_Key_Up ):placemY-1:EndIf
FrontColor ( RGB (164,21,21)):DrawText (464,552, "FredStation360")
FrontColor ( RGB (200,115,115))
DrawText (154,360, "souris, bouton gauche."):DrawText (734,360, "souris, bouton droit.")
FrontColor ( RGB (241,202,202))
DrawText (189,466, "transparent"):DrawText (780,466, "regime")
placemX$= Str (placemX)
; DrawText (1,500, "X: " +placemX$)
placemY$= Str (placemY)
; DrawText (1,520, "Y: " +placemY$)
StopDrawing ()
Start3D ()
DisplaySprite3D ( #pb3D , MouseX (), MouseY ()+40,255)
; Si joueur branche la cartouche, alors le jeu démarre:
If MouseX ()>430 And MouseX ()<465
If MouseY ()>180 And MouseY ()<210:page=2:score=0:EndIf
EndIf
Stop3D ()
EndIf
If page=2 ; ==============================================================================================
If niveau<21:Tniveau+1:EndIf
If Tniveau>600:Tniveau=0:niveau+1:EndIf ; chaque niveau dure 10 secondes.
Start3D ()
; fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
; fabrication du fond ( sous forme de bloc):
If nbrefond<1:nbrefond+1:Fclonebfond():EndIf
;- Affichage clone fondbloc si existe:
ForEach bfond()
;DisplaySprite3D ( bfond()\id , bfond()\x, bfond()\Y, 255)
DisplayTransparentSprite( bfond()\id , bfond()\x, bfond()\Y)
Next
;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
; fabrique de bonbon:
If ghostaie<2:tempoA+1:EndIf
If tempoA>150:tempoA=0:Fcloneb():EndIf ; >150
;Tbonzoom+1 ; j'essai des trucs... là j'ai désactivé, mais j'le garde sous l'coude.
;If Tbonzoom>10:Tbonzoom=0:bonzoom+2:EndIf
;If bonzoom=6:bonzoom=0:EndIf
; Affichage clone bonbon si existe.
ForEach bonbon()
If bonbon()\attract=0; Si ghost n'est pas à proximité d'un bonbon, alors ce dernier continu son chemin.
bonbon()\x=bonbon()\x+bonbon()\sensx
bonbon()\Y=bonbon()\Y+bonbon()\sensy
EndIf
;ZoomSprite3D(#eonbon3D, 32+bonzoom, 32-bonzoom) ; 32, 32)
DisplaySprite3D ( bonbon()\id , bonbon()\x, bonbon()\Y, 255)
DisplaySprite3D ( #eonbon3D , bonbon()\x-4, bonbon()\Y-4, 105)
zattract=(30+10)
If gtaille>80:zattract=(60+20):EndIf
If gtaille>120:zattract=(90+30):EndIf
If gtaille>160:zattract=(120+40):EndIf
bonbon()\attract=0; remise à 0 variable attraction
If bonbon()\x+8>repereX-zattract And bonbon()\x+8<repereX+zattract And ghostaie<2
If bonbon()\Y+8>repereY-zattract And bonbon()\Y+8<repereY+zattract
bonbon()\attract=1
If bonbon()\x+8>repereX
bonbon()\x-4
Else
bonbon()\x+4
EndIf
If bonbon()\Y+8>repereY
bonbon()\Y-4
Else
bonbon()\Y+4
EndIf
If bonbon()\x+8>repereX-10-(zattract/10) And bonbon()\x+8<repereX+10+(zattract/10)
If bonbon()\Y+8>repereY-10-(zattract/10) And bonbon()\Y+8<repereY+10+(zattract/10)
mange=1:pointd=1:pointm=0:pointt=255:pointg=gtaille:pointn=niveau:pointX=bonbon()\x+8:pointY=bonbon()\Y+8
EndIf
EndIf
EndIf
EndIf
; Si un clone sort de l'écran, alors il faut le supprimer, mais...
If bonbon()\x>1024+128 Or bonbon()\x<0-128 Or bonbon()\Y>768+128 Or bonbon()\Y<0-128
supprbonbon=1 ; ...soyons prudent...
EndIf
; si ghost mange bonbon, alors...
If mange=1 And ghostaie<2:supprbonbon=1:EndIf ; ...très prudent...
If supprbonbon=1
supprbonbon=0
DeleteElement(bonbon()):LastElement(bonbon()); <- ...car ces 2 là, faut pas en mettre partout.
If mange=1
If energie<20:energie+1:EndIf
If gtaille<200:gtaille+10:EndIf
If gtaille<200:score+(10*niveau):EndIf
If gtaille=200:score+(100*niveau):EndIf
mange=0
EndIf
EndIf
Next
;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
; plein de variables, afin d'afficher les points engrangé par le joueur( proportionnel au niveau atteind):
If pointd=1; d comme départ d'un affichage de point
For t=1 To pointn ; n comme niveau, le nbre de point est proportionel au nombre de niveau atteind.
If pointg<200
ZoomSprite3D(#pointA3D, 50,50)
DisplaySprite3D ( #pointA3D , pointX, pointY-(t*20),pointt)
EndIf
If pointg=200 ; g comme géant ( =gtaille au moment précis où le ghost mange le bonbon).
ZoomSprite3D(#pointB3D, 75,75)
DisplaySprite3D ( #pointB3D , pointX, pointY-(t*30),pointt)
EndIf
Next
If pointm<100 ; m comme mouvoir: s'élève dans le ciel tout en disparaissant, triste hein ?
pointm+1:pointY-2:pointt-2
If pointm=100:pointm=0:pointd=0:EndIf
EndIf
EndIf
;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
; fabrique d'elice:
If ghostaie<2:tempoB+1:EndIf
If (niveau<6 And tempoB>125) Or (niveau>5 And tempoB>100) Or (niveau>9 And tempoB>75)
tempoB=0:Fclonee()
EndIf
If (niveau>13 And tempoB>50) Or (niveau>17 And tempoB>40)
tempoB=0:Fclonee()
EndIf
tourne-niveau
If tourne<-360:tourne=0:EndIf
tourne2-niveau
If tourne2<-360:tourne2=0:EndIf
tournf+niveau
If tournf>360:tournf=0:EndIf
tournf2+niveau
If tournf2>360:tournf2=0:EndIf
; Affichage clone elice si existe.
ForEach elice()
zutB+1
elice()\x=elice()\x+elice()\sensx ; fait avancer les elices
elice()\Y=elice()\Y+elice()\sensy
; +24= position par rapport à l'elice ; +40 diamètre de la rotation de pic.
If elice()\sr=0
RotateSprite3D(#pic3D, -tourne, 0)
DisplaySprite3D ( #pic3D , elice()\x+24+40*Sin(tourne*0.0174532925), elice()\Y+24+40*Cos(tourne*0.0174532925),255)
RotateSprite3D(#pic3D, -tourne2, 0)
DisplaySprite3D ( #pic3D , elice()\x+24+40*Sin(tourne2*0.0174532925), elice()\Y+24+40*Cos(tourne2*0.0174532925),255)
EndIf
If elice()\sr=1
RotateSprite3D(#pic3D, -tournf, 0)
DisplaySprite3D ( #pic3D , elice()\x+24+40*Sin(tournf*0.0174532925), elice()\Y+24+40*Cos(tournf*0.0174532925),255)
RotateSprite3D(#pic3D, -tournf2, 0)
DisplaySprite3D ( #pic3D , elice()\x+24+40*Sin(tournf2*0.0174532925), elice()\Y+24+40*Cos(tournf2*0.0174532925),255)
EndIf
DisplaySprite3D ( elice()\id , elice()\x, elice()\Y, 255)
; test collision ( à l'ancienne) avec ghost, accrochez-vous bien:
;DisplaySprite3D ( #repere3D , elice()\x+64, elice()\y, 255) ; uniquement utilisé par le codeur.
If ghostaie<2
If gtaille>40
If (repereX+20>elice()\x And repereX+20<(elice()\x)+64) Or (repereX-20>elice()\x And repereX-20<(elice()\x)+64)
If (repereY+20>elice()\Y And repereY+20<(elice()\Y)+64) Or (repereY-20>elice()\Y And repereY-20<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
EndIf
; heu, oui, là, je vous l'accorde, c'est aussi fastidieu à lire, qu'à mettre au point...et ça continu:
If gtaille>80
If (repereX+40>elice()\x And repereX+40<(elice()\x)+64) Or (repereX-40>elice()\x And repereX-40<(elice()\x)+64)
If (repereY+40>elice()\Y And repereY+40<(elice()\Y)+64) Or (repereY-40>elice()\Y And repereY-40<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If repereX>elice()\x And repereX<(elice()\x)+64
If (repereY+40>elice()\Y And repereY+40<(elice()\Y)+64) Or (repereY-40>elice()\Y And repereY-40<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If (repereX+40>elice()\x And repereX+40<(elice()\x)+64) Or (repereX-40>elice()\x And repereX-40<(elice()\x)+64)
If repereY>elice()\Y And repereY<(elice()\Y)+64
ghostaie=1
EndIf
EndIf
EndIf
If gtaille>120
If (repereX+60>elice()\x And repereX+60<(elice()\x)+64) Or (repereX-60>elice()\x And repereX-60<(elice()\x)+64)
If (repereY+60>elice()\Y And repereY+60<(elice()\Y)+64) Or (repereY-60>elice()\Y And repereY-60<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If repereX>elice()\x And repereX<(elice()\x)+64
If (repereY+60>elice()\Y And repereY+60<(elice()\Y)+64) Or (repereY-60>elice()\Y And repereY-60<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If (repereX+60>elice()\x And repereX+60<(elice()\x)+64) Or (repereX-60>elice()\x And repereX-60<(elice()\x)+64)
If repereY>elice()\Y And repereY<(elice()\Y)+64
ghostaie=1
EndIf
EndIf
EndIf
If gtaille>160
If (repereX+80>elice()\x And repereX+80<(elice()\x)+64) Or (repereX-80>elice()\x And repereX-80<(elice()\x)+64)
If (repereY+80>elice()\Y And repereY+80<(elice()\Y)+64) Or (repereY-80>elice()\Y And repereY-80<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If (repereX+80>elice()\x And repereX+80<(elice()\x)+64) Or (repereX-80>elice()\x And repereX-80<(elice()\x)+64)
If (repereY+40>elice()\Y And repereY+40<(elice()\Y)+64) Or (repereY-40>elice()\Y And repereY-40<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If (repereX+40>elice()\x And repereX+40<(elice()\x)+64) Or (repereX-40>elice()\x And repereX-40<(elice()\x)+64)
If (repereY+80>elice()\Y And repereY+80<(elice()\Y)+64) Or (repereY-80>elice()\Y And repereY-80<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If repereX>elice()\x And repereX<(elice()\x)+64
If (repereY+80>elice()\Y And repereY+80<(elice()\Y)+64) Or (repereY-80>elice()\Y And repereY-80<(elice()\Y)+64)
ghostaie=1
EndIf
EndIf
If (repereX+80>elice()\x And repereX+80<(elice()\x)+64) Or (repereX-80>elice()\x And repereX-80<(elice()\x)+64)
If repereY>elice()\Y And repereY<(elice()\Y)+64
ghostaie=1
EndIf
EndIf
EndIf ; If gtaille>160
EndIf
; Si un clone sort de l'écran, alors il faut le supprimer:
;If (elice()\sensy>0 And elice()\Y>768+64) Or (elice()\sensy<0 And elice()\Y<-64) Or
;(elice()\sensx<0 And elice()\x<-64) Or (elice()\sensx>0 And elice()\x>1024+64)
;DeleteElement(elice()):NextElement(elice())
;EndIf
; ça rentre pas dans le forum, bon ben faut que je m'adapte alors :
elice()\attract=0
If (elice()\sensy>0 And elice()\Y>768+64) Or (elice()\sensy<0 And elice()\Y<-64):elice()\attract=1:EndIf
If (elice()\sensx<0 And elice()\x<-64) Or (elice()\sensx>0 And elice()\x>1024+64):elice()\attract=1:EndIf
If elice()\attract=1:DeleteElement(elice()):NextElement(elice()):EndIf
Next
If ghostv<200 And ghostaie<2:ghostaie=0:EndIf ; Si ghost transparent, alors il faut annuler l'ordre de gameover.
;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
; GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG GHOST GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
If ghostaie=0:Fghost():EndIf ; ghost que l'on déplace fébrilement à la souris.
If ghostaie>0 ; game over.
ghostaie=2
gtaille+2
If ghostv>85:ghostv-2:EndIf
ZoomSprite3D(#ghost3D, gtaille,gtaille)
DisplaySprite3D ( #ghost3D , testX, testY,ghostv)
ZoomSprite3D(#oeil3D, gtaille,gtaille)
DisplaySprite3D ( #oeil3D , testX, testY,ghostv)
; Animation du drap du fantome
animdrap+1
If animdrap=21:animdrap=1:EndIf
If animdrap<11
ZoomSprite3D(#drapA3D, gtaille,gtaille)
DisplaySprite3D ( #drapA3D , testX, testY,ghostv)
EndIf
If animdrap>10
ZoomSprite3D(#drapB3D, gtaille,gtaille)
DisplaySprite3D ( #drapB3D , testX, testY,ghostv)
EndIf
If gtaille>400:page=3:Freset():EndIf
EndIf
; GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
Ftestcodeur()
; support barre d'énergie.
For a=0 To 19
DisplaySprite3D(#sphoton3D, 16, 728-32-(a*32))
Next
; barre d'énergie:
For t=1 To energie
DisplaySprite3D ( #photon3D , 16, 728-(t*32), 255)
Next
Freset()
Stop3D ()
EndIf ; il s'agit du Endif de "If page=2" ==============================================================================
If page>0 And ghostaie=0:testX=MouseX ():testY=MouseY ():EndIf
; ligne de test afin de connaître la valeur des variables:
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
ghostv$= Str (ghostv)
tempoB$= Str (tempoB)
testX$= Str (testX)
testY$= Str (testY)
page$= Str (page)
niveau$= Str (niveau)
score$= Str (score)
gtaille$= Str (gtaille)
ghostaie$= Str (ghostaie)
tourne$= Str (tourne)
pointd$= Str (pointd)
eli_sensrot$= Str (eli_sensrot)
zutA$= Str (zutA)
zutB$= Str (zutB)
zutC$= Str (zutC)
ybonbon$= Str (ybonbon)
; DrawText (50,1+20, "ghostv: " +ghostv$)
; DrawText (50,1+40, "tempoB: " +tempoB$)
; DrawText (50,1+60, "testX: " +testX$)
; DrawText (50,1+80, "testY: " +testY$)
; DrawText (50,1+100, "page: " +page$)
; DrawText (50,1+120, "gtaille: " +gtaille$)
; DrawText (50,1+160, "ghostaie: " +ghostaie$)
; DrawText (50,1+180, "tourne: " +tourne$)
; DrawText (50,1+200, "pointd: " +pointd$)
; DrawText (50,1+220, "eli_sensrot: " +eli_sensrot$)
; DrawText (50,1+260, "zutA: " +zutA$);:zutA=0
; DrawText (50,1+280, "zutB: " +zutB$):zutB=0
; DrawText (50,1+300, "zutC: " +zutC$);:zutC=0
; DrawText (50,1+340, "ybonbon: " +ybonbon$)
If page=2
If niveau>9
FrontColor ( RGB (164,21,21)) :DrawText (450+1,750+1, "NIVEAU: " +niveau$)
FrontColor ( RGB (253,201,255)) :DrawText (450,750, "NIVEAU: " +niveau$)
EndIf
If niveau<10
FrontColor ( RGB (164,21,21)) :DrawText (450+1,750+1, "NIVEAU: " +niveau$)
FrontColor ( RGB (253,201,255)) :DrawText (450,750, "NIVEAU: "+niveau$)
EndIf
If niveau=21
FrontColor ( RGB (164,21,21)) :DrawText (400+1,720+1, "C'est bien toi le meilleur !")
FrontColor ( RGB (253,201,255)) :DrawText (400,720, "C'est bien toi le meilleur !")
EndIf
EndIf
If page>0
FrontColor ( RGB (154,154,154)) :DrawText (450+1,1+1, "SCORE: " +score$)
FrontColor ( RGB (224,224,224)) :DrawText (450,1, "SCORE: "+score$)
EndIf
StopDrawing ()
If KeyboardPushed ( #PB_Key_F ) And nbreis=0:nbreis+1:EndIf
If KeyboardPushed ( #PB_Key_F )=0 And nbreis=1:nbreis+1:EndIf
If KeyboardPushed ( #PB_Key_F ) And nbreis=2:nbreis+1:EndIf
If KeyboardPushed ( #PB_Key_F )=0 And nbreis=3:nbreis=0:EndIf
Gosub fps ; nombre d'image par seconde ( à placer dans tout vos jolis programmes, jeune étourdis !)
;FlipBuffers (60)
FlipBuffers ()
ClearScreen ( RGB (0,0,0))
; ******************************************************************************************************
Until KeyboardPushed ( #PB_Key_Escape ): End ; fin de la boucle principale (appuyez sur la touche Esc)
; ******************************************************************************************************
fps:
If Val ( FormatDate ( "%ss" , Date ()))=sek ; regardez pas là, c'est trop compliqué. Arrêtez j'vous dis! Bon ben, je
; vous aurez prévenu...
fps+1
Else
FPS$= Str (fps)
fps=0
EndIf
sek= Val ( FormatDate ( "%ss" , Date ()))
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
If nbreis=1 Or nbreis=2:DrawText (1,1, "FPS: " +FPS$):EndIf
StopDrawing ()
Return
; ***********************************************************************************************
; ********************************* ici commence les procedures *********************************
; ***********************************************************************************************
Procedure Fclonebfond()
; placement clone fond sous forme de simple bloc:
For t=1 To 7; ligne 2
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64
Next
For t=1 To 9; ligne 3
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64*3
Next
For t=1 To 9; ligne 4
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64*4
Next
For t=1 To 8; ligne 5
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64*6
Next
For t=1 To 9; ligne 6
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64*7
Next
For t=1 To 5; ligne 7
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64*9
Next
For t=1 To 9; ligne 8
Read colonne
LastElement(bfond())
AddElement(bfond())
bfond()\id=#fondA;3D
bfond()\x=colonne*64:bfond()\Y=64*10
Next
EndProcedure
Procedure Fcloneb() ; bonbon 32*32
LastElement(bonbon())
AddElement(bonbon())
bonbon()\id=#bonbon3D
; placement et sens de deplacement du bonbon:
If MouseX ()<448:bonbon()\x=1024+32:bonbon()\sensx=-2:EndIf
If MouseX ()>447:bonbon()\x=0-32:bonbon()\sensx=2:EndIf
If MouseY ()<320:bonbon()\Y=768+32:bonbon()\sensy=-2:EndIf
If MouseY ()>319:bonbon()\Y=0-32:bonbon()\sensy=2:EndIf
EndProcedure
Procedure Fclonee() ; elice 64*64
LastElement(elice())
AddElement(elice())
elice()\id=#elice3D
; placement et sens de deplacement de l'elice:
If eli_sensrot=0
eli_bord+1; décide de quel bord de l'écran surgira le prochain clone elice.
If eli_bord=5:eli_bord=1:eli_choix+1:EndIf
EndIf
If eli_sensrot=1
eli_bord-1; décide de quel bord de l'écran surgira le prochain clone elice.
If eli_bord=0:eli_bord=4:eli_choix+1:EndIf
EndIf
If eli_choix=2
eli_choix=0:eli_sensrot=Random(1):elice()\sr=eli_sensrot
EndIf
If eli_bord=1 ; de haut en bas:
If gtaille<90:elice()\x=MouseX ()-10:EndIf
If gtaille>80 And gtaille<130:elice()\x=MouseX ()+10:EndIf
If gtaille>120 And gtaille<170:elice()\x=MouseX ()+20:EndIf
If gtaille>160:elice()\x=MouseX ()+30:EndIf
elice()\Y=-64:elice()\sensy=1
If niveau>1:elice()\sensy=2:EndIf
If niveau>5:elice()\sensy=3:EndIf
If niveau>9:elice()\sensy=4:EndIf
If niveau>13:elice()\sensy=5:EndIf
If niveau>17:elice()\sensy=6:EndIf
EndIf
If eli_bord=2 ; droite à gauche:
If gtaille<90:elice()\Y=MouseY ()+30:EndIf
If gtaille>80 And gtaille<130:elice()\Y=MouseY ()+40:EndIf
If gtaille>120 And gtaille<170:elice()\Y=MouseY ()+50:EndIf
If gtaille>160:elice()\Y=MouseY ()+60:EndIf
elice()\x=1024:elice()\sensx=-1
If niveau>2:elice()\sensx=-2:EndIf
If niveau>6:elice()\sensx=-3:EndIf
If niveau>10:elice()\sensx=-4:EndIf
If niveau>14:elice()\sensx=-5:EndIf
If niveau>18:elice()\sensx=-6:EndIf
EndIf
If eli_bord=3 ; bas en haut:
If gtaille<90:elice()\x=MouseX ()-10:EndIf
If gtaille>80 And gtaille<130:elice()\x=MouseX ()+10:EndIf
If gtaille>120 And gtaille<170:elice()\x=MouseX ()+20:EndIf
If gtaille>160:elice()\x=MouseX ()+30:EndIf
elice()\Y=768:elice()\sensy=-1
If niveau>3:elice()\sensy=-2:EndIf
If niveau>7:elice()\sensy=-3:EndIf
If niveau>11:elice()\sensy=-4:EndIf
If niveau>15:elice()\sensy=-5:EndIf
If niveau>19:elice()\sensy=-6:EndIf
EndIf
If eli_bord=4 ; gauche à droite:
If gtaille<90:elice()\Y=MouseY ()+30:EndIf
If gtaille>80 And gtaille<130:elice()\Y=MouseY ()+40:EndIf
If gtaille>120 And gtaille<170:elice()\Y=MouseY ()+50:EndIf
If gtaille>160:elice()\Y=MouseY ()+60:EndIf
elice()\x=-64:elice()\sensx=1
If niveau>4:elice()\sensx=2:EndIf
If niveau>8:elice()\sensx=3:EndIf
If niveau>12:elice()\sensx=4:EndIf
If niveau>16:elice()\sensx=5:EndIf
If niveau>20:elice()\sensx=6:EndIf
EndIf
EndProcedure
Procedure Fghost()
If MouseX ()>992-(gtaille/2):MouseLocate(992-(gtaille/2),testY):EndIf
testX=MouseX ()
If MouseY ()>704-(gtaille/2):MouseLocate(testX,704-(gtaille/2)):EndIf
ghostv=210
If energie>0 And MouseButton(1) ; Si joueur appui sur bouton gauche, alors transparence du ghost = invulnérable.
ghostv=100
Tenergie+1
If Tenergie>8
Tenergie=0:energid+1
EndIf
EndIf
If energie>0 And MouseButton(2) ; Si joueur appui sur bouton droite, alors ghost maigri.
Tenergie+1
If Tenergie>8
Tenergie=0
If gtaille>50:energid+1:gtaille-10:EndIf
EndIf
EndIf
If energid>1:energid=0:energie-1:EndIf
; corps du ghost:
ZoomSprite3D(#ghost3D, gtaille,gtaille)
DisplaySprite3D ( #ghost3D , MouseX (), MouseY ()+40,ghostv)
; yeux du ghost:
ZoomSprite3D(#oeil3D, gtaille,gtaille)
possx=MouseX ()
If memsx<possx:possx+4:EndIf
If memsx>possx:possx-4:EndIf
DisplaySprite3D ( #oeil3D , possx, MouseY ()+40,ghostv)
memsx=MouseX ()
; Animation du drap du fantôme ( ghost en anglais):
animdrap+1
If animdrap=15
animdrap=0
EndIf
If animdrap<8
ZoomSprite3D(#drapA3D, gtaille,gtaille)
DisplaySprite3D ( #drapA3D , MouseX (), MouseY ()+40,ghostv)
EndIf
If animdrap>7
ZoomSprite3D(#drapB3D, gtaille,gtaille)
DisplaySprite3D ( #drapB3D , MouseX (), MouseY ()+40,ghostv)
EndIf
EndProcedure
Procedure Freset() ; remise à 0
If KeyboardPushed ( #PB_Key_R ) Or page=3 ; RESET (retour écran intro)
MouseLocate(512-6,600)
page=0:niveau=1:Tniveau=0:tempoA=0:tempoB=0:mange=0
ghostaie=0:animdrap=0:ghostv=255:energie=20:Tenergie=0:gtaille=50
eli_bord=0:eli_choix=0:eli_sensrot=0:eli_bord=0
; supprime clone bonbon si existe.
ForEach bonbon()
FirstElement(bonbon())
DeleteElement(bonbon())
Next
; supprime clone elice si existe.
ForEach elice()
FirstElement(elice())
DeleteElement(elice())
Next
EndIf
EndProcedure
Procedure Ftestcodeur()
;ghost 128*128
If gtaille=50 Or gtaille=60 Or gtaille=70 Or gtaille=80
repereX=((MouseX () )+6)+(gtaille/3)
repereY=((MouseY ()+40 )+6)+(gtaille/3)
repereX=repereX-2:repereY=repereY-2
; DisplaySprite3D ( #repere3D , repereX-20, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX+20, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY-20, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY+20, 255)
EndIf
If gtaille=90 Or gtaille=100 Or gtaille=110 Or gtaille=120
repereX=((MouseX () )+10)+(gtaille/3)
repereY=((MouseY ()+40 )+12)+(gtaille/3)
repereX=repereX-2:repereY=repereY-2
; DisplaySprite3D ( #repere3D , repereX-40, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX+40, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY-40, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY+40, 255)
EndIf
If gtaille=130 Or gtaille=140 Or gtaille=150 Or gtaille=160
repereX=((MouseX () )+16)+(gtaille/3)
repereY=((MouseY ()+40 )+16)+(gtaille/3)
repereX=repereX-2:repereY=repereY-2
; DisplaySprite3D ( #repere3D , repereX-60, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX+60, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY-60, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY+60, 255)
EndIf
If gtaille=170 Or gtaille=180 Or gtaille=190 Or gtaille=200
repereX=((MouseX () )+22)+(gtaille/3)
repereY=((MouseY ()+40 )+18)+(gtaille/3)
repereX=repereX-2:repereY=repereY-2
; DisplaySprite3D ( #repere3D , repereX-80, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX+80, repereY, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY-80, 255)
; DisplaySprite3D ( #repere3D , repereX, repereY+80, 255)
EndIf
; DisplaySprite3D ( #repere3D , repereX, repereY, 255)
EndProcedure
Procedure Fintro()
StartDrawing ( ScreenOutput ())
AdresseMemoire = DrawingBuffer ()
DrawingMode (1)
If KeyboardPushed ( #PB_Key_Right ):placemX+1:EndIf
If KeyboardPushed ( #PB_Key_Left ):placemX-1:EndIf
If KeyboardPushed ( #PB_Key_Down ):placemY+1:EndIf
If KeyboardPushed ( #PB_Key_Up ):placemY-1:EndIf
FrontColor ( RGB (18,114,111))
DrawText (350+1,650+1, "Auteur: H. Philippe - Toulouse - France - pseudo: beauregard")
FrontColor ( RGB (35,219,212))
DrawText (350,650, "Auteur: H. Philippe - Toulouse - France - pseudo: beauregard")
FrontColor ( RGB (18,114,111))
DrawText (300+1,675+1, "ma devise: Le jeu vidéo, c'est du contenu, avec plus ou moins de contenant.")
FrontColor ( RGB (35,219,212))
DrawText (300,675, "ma devise: Le jeu vidéo, c'est du contenu, avec plus ou moins de contenant.")
FrontColor ( RGB (154,154,154))
DrawText (255+1,700+1, "Co-Auteur: ")
FrontColor ( RGB (224,224,224))
DrawText (255,700, "Co-Auteur: ")
placemX$= Str (placemX)
; DrawText (1,500, "X: " +placemX$)
placemY$= Str (placemY)
; DrawText (1,520, "Y: " +placemY$)
StopDrawing ()
Start3D ()
;zutA=gposX
;zutB=etapeanim
;zutC=etanT
; ********************** animé ( codé sans grande inteligence): **********************
d1fleche=0
If etapeanim<2 Or (etapeanim>5 And etapeanim<8) Or (etapeanim=8 And etanT<65)
If ybonbon<530:ybonbon+4:EndIf
DisplaySprite3D ( #bonbon3D , 496, ybonbon, 255)
If MouseX ()>496-8 And MouseX ()<496+24
If MouseY ()>ybonbon-8 And MouseY ()<ybonbon+24
d1fleche=1
EndIf
EndIf
EndIf
If etapeanim=0;
testX=1024+50:testY=520:gtaille=50:gposX=1024:gposY=520-44:ybonbon=-64
etanT+1
If etanT>150:etanT=0:etapeanim=1:EndIf
EndIf
If etapeanim=1 ; ghost se dirige vers le bonbon
testX-4
If testX<502
pointd=1:pointm=0:pointt=255:pointg=gtaille
pointn=1:pointX=496+8:pointY=530+8
etapeanim=2
EndIf
EndIf
If etapeanim=2 ; ghost se dirige vers la sortie...
testX-4
If testX<300:etapeanim=3:EndIf ;... et remarque la présence du joueur !
EndIf
If etapeanim=3 ; il revient de quelque pas afin de bien voir...
etanT+1; il regarde le joueur quelques instand,
If etanT>30:testX+4:EndIf; puis reviens un peu sur ces pas...
If testX>355:etanT=0:etapeanim=4:EndIf ;... et panique !
EndIf
If etapeanim=4
etanT+1; il regarde plus longuement
If etanT>45
If testX>-64:testX-8:EndIf
EndIf ;... et c'est la panique !
If testX<-32 And etanT=150:etanT=0:etapeanim=5:EndIf
EndIf
If etapeanim=5 ; le grand ghost arrive doucement
etanT+1
If etanT>30 And etanT<60:testX+4:EndIf
If etanT>80 And etanT<100:testX-8:EndIf
If gposX>1024-44 And etanT>99:gposX-1:EndIf
If etanT>200:etanT=0:ybonbon=0:etapeanim=6:EndIf
EndIf
If etapeanim=6 ; regarde le bonbon tomber
gposX-1
If etanT<50:etanT+1:EndIf
If etanT=50 And ybonbon>529:etanT=0:etapeanim=7:EndIf
EndIf
If etapeanim=7 ;
If etanT<50:etanT+1:EndIf
If etanT=50:etanT=0:etapeanim=8:EndIf
EndIf
If etapeanim=8 ;
If gposX>612
gposX-3:testX+4 ; les 2 fantomes se s'approchent du 2ème bonbon...
EndIf
If gposX<613 And etanT<25
etanT+1:testX+1
EndIf
If gposX<613 And etanT>24 And etanT<34; le grand fait savoir qui est le chef
etanT+1:gposX-6:testX+1
EndIf
If etanT>29 And testX>-64:testX-8:EndIf ; le petit ghost prend peur et fuit à toute vitesse.
If etanT>33 ;le grand s'empare du bonbon
If etanT<64:etanT+1:EndIf
If etanT=64:gposX-3:EndIf
If gposX<502-32 And pointd=0 And etanT<65
pointd=1:pointm=0:pointt=255:pointg=200
pointn=1:pointX=496+8:pointY=530+8
ybonbon=-64:etanT=65
EndIf
EndIf
If etanT=65
gposX-3
If gposX<-128:etanT=66:EndIf
EndIf
If etanT>65:etanT+1:EndIf
If etanT>80 ;fin animé
testX=1024+50:testY=520:gtaille=50:gposX=1024:gposY=520-44
etanT=0:etapeanim=0:ybonbon=-64
EndIf
EndIf
ZoomSprite3D(#ghost3D, gtaille,gtaille)
DisplaySprite3D ( #ghost3D , testX, testY, 210)
; yeux du ghost:
ZoomSprite3D(#oeil3D, gtaille,gtaille)
possx=testX
If memsx<possx:possx+4:EndIf
If memsx>possx:possx-4:EndIf
DisplaySprite3D ( #oeil3D , possx, testY,ghostv)
memsx=testX
; Animation du drap du fantome
animdrap+1
If animdrap=21:animdrap=1:EndIf
If animdrap<11
ZoomSprite3D(#drapA3D, gtaille,gtaille)
DisplaySprite3D ( #drapA3D , testX, testY, 210)
ZoomSprite3D(#ghostB3D, 100,100):DisplaySprite3D ( #ghostB3D , gposX, gposY, 210)
ZoomSprite3D(#drapA3D, 100,100):DisplaySprite3D ( #drapA3D , gposX, gposY, 210)
EndIf
If animdrap>10
ZoomSprite3D(#drapB3D, gtaille,gtaille)
DisplaySprite3D ( #drapB3D , testX, testY, 210)
ZoomSprite3D(#ghostB3D, 100,100):DisplaySprite3D ( #ghostB3D , gposX, gposY, 210)
ZoomSprite3D(#drapB3D, 100,100):DisplaySprite3D ( #drapB3D , gposX, gposY, 210)
EndIf
; yeux du grand fantome:
If etapeanim=5 Or etapeanim=7; regarde le joueur en face:
ZoomSprite3D(#oeil3D, 100,100)
DisplaySprite3D ( #oeil3D , gposX, gposY,ghostv)
EndIf
If etapeanim=6 Or etapeanim=8; regarde à gauche:
ZoomSprite3D(#oeil3D, 100,100)
DisplaySprite3D ( #oeil3D , gposX-4, gposY,ghostv)
EndIf
If pointd=1; d comme départ d'un affichage de point
For t=1 To pointn ; n comme niveau, le nbre de point est proportionel au nombre de niveau atteind.
If pointg<200
ZoomSprite3D(#pointA3D, 50,50)
DisplaySprite3D ( #pointA3D , pointX, pointY-(t*20),pointt)
EndIf
If pointg=200 ; g comme géant ( =gtaille au moment précis où le ghost mange le bonbon).
ZoomSprite3D(#pointB3D, 75,75)
DisplaySprite3D ( #pointB3D , pointX, pointY-(t*30),pointt)
EndIf
Next
If pointm<100 ; m comme mouvoir: s'élève dans le ciel tout en disparaissant, triste hein ?
pointm+1
pointY-2
pointt-2
If pointm=100:pointm=0:pointd=0:EndIf
EndIf
EndIf
If d1fleche=0:DisplaySprite3D ( #fleche3D , MouseX (), MouseY (), 255):EndIf
If d1fleche=1
DisplaySprite3D ( #flechf3D , MouseX (), MouseY (), 255)
If MouseButton(1)
testX=1024+50:testY=520:gtaille=50:gposX=1024:gposY=520-44
etanT=0:etapeanim=0:ybonbon=-64
tourne=0:tourne2=-180:page=1:MouseLocate(449,62)
EndIf
EndIf
; titre
If page=0
tourne-2
If tourne<-360:tourne=0:EndIf
tourne2-1
If tourne2<-360:tourne2=0:EndIf
ZoomSprite3D(#logotitre3D, 175*2,350)
DisplaySprite3D ( #logotitre3D , 350+24+40*Sin(tourne*0.0174532925), 210+24+40*Cos(tourne*0.0174532925), 155)
ZoomSprite3D(#logotitre3D, 175*2,350)
DisplaySprite3D ( #logotitre3D , 350+24+40*Sin(tourne2*0.0174532925), 210+24+40*Cos(tourne2*0.0174532925), 155)
EndIf
Stop3D ()
EndProcedure
; IDE Options = PureBasic v4.02 (Windows - x86)