Aranoîde

Programmation avancée de jeux en PureBasic
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Aranoîde

Message par garzul »

:D Bonjour me revoila ( retour de vacance d'espagne ) , donc bah pendant mes vacance j'ai programmer un petit jeux utilisant les liste chainée , sans média et simple d'utilisation essayez le et ditee moi si il y à des bug @++
Le lien pour Aranoîde ==> http://purebasicmeslog.chez.tiscali.fr/aranoide.exe

Touche : F1 = Aides utilisez la :D

PS : Pour telechargez faîte clic droit puis enregistrez sous sinon couic sa marche pas
Dernière modification par garzul le mar. 02/nov./2004 23:32, modifié 1 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Tu devrais remplacer le pointeur par un journal enroulé. et quand on écrase l'araigné, la dessiner sous forme de patée qui disparait lentement avec un DisplayTranslucideSprite( :D
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)]
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

C'est pas pour tout de suite :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

je ne peux pas télécharger , même en faisant enregistrer sous ...
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Comtois normalement c'est bon ( sinon vous pouvais me dire pourquoi vous pouvez pas le telecharger :D )
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

c'est bon ça marche

wow , ça s'améliore ! chapeau .

j'ai fait 115 , niveau 7 !
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Ta utiliser les MégaBombe :D ( 50 point de plus si tu l'utilise :) et toute les araigner tuer :D ) PS : Lisez l'aide = F1 :D
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Héhé moi j'ai fait Level 13 et 215 Point Héhé degainer votre souris bon dieu :D
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Bonjour me revoila avec la source du jeux ====> Code ^^

Code : Tout sélectionner

;/*********************************************
;/*               \\ Aranoîde  //             * 
;/*       \\  Crée par Garzul | 2004  //      * 
;/* \\JaPBe > 2.4.7.17 || Purebasic > 3.91 // * 
;/********************************************* 



#Ecran_Largeur = 900 ;Definie la largeur de l'écran
#Ecran_Hauteur = 600 ;Definie la hauteur de l'écran



;Enumeration des constant
Enumeration
 
  #Souris
  #Spider
  #MegaBombe
 
EndEnumeration


;Variable global et variable du jeux
Global Intro , AvanceParticle , AffichePerdu , Font1 , Font2 , Font3 , Score , x1 , y1 , Level , LevelVery , Temps , hwnd , MegaBombe , Aides

Intro          = 1
AvanceParticle = 0
AffichePerdu   = 0
Score          = 0
Level          = 5
LevelVery      = 0
MegaBombe      = 1
Aides          = 0


;chargement d'une police
Font1 = LoadFont(#PB_Any,"Comic Sans MS",50)
Font2 = LoadFont(#PB_Any,"Comic Sans MS",60)
Font3 = LoadFont(#PB_Any,"Comic Sans MS",20)

;- On crée la fenêtre.
hwnd = OpenWindow(0, 0, 0, #Ecran_Largeur, #Ecran_Hauteur, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Invader")

;- On ouvre l'openscreen.

If InitSprite() = 0
  MessageRequester("Erreur", "Impossible d'initialiser la souris ,le clavier ou l'écran. Vérifiez la présence de DirectX 7 ou supérieur.", 0  | #MB_IconError)
  End
EndIf

If InitKeyboard() = 0
  MessageRequester("Erreur", "Impossible d'initialiser le clavier veuillez verifier si il est bien connecter à votre ordinateur.", 0 | #MB_IconError)
  End
EndIf

If InitMouse() = 0
  MessageRequester("Erreur", "Impossible d'initialiser la souris veuillez verifier si elle est bien connecter à votre ordinateur.", 0 | #MB_IconError)
  End
EndIf

If OpenWindowedScreen(hwnd, 0, 0, #Ecran_Largeur, #Ecran_Hauteur, 1, 0, 0) = 0
  MessageRequester("Erreur", "Impossible d'ouvrir l'écran.", 0  | #MB_IconError )
  End
EndIf


;-Linked list spider
Structure Spider
 
  x.l
  y.l
  Vitesse.l
 
EndStructure

NewList Spider.Spider()

ExamineKeyboard() ;Pour sieur Aranoth :D

;-Sprite
;Création des sprite du jeux
CreateSprite(#Souris,40,40,0)
StartDrawing(SpriteOutput(#Souris)) : DrawingMode(4)
LineXY(5,20,35,20,RGB($FF,250,$80))
LineXY(20,0,20,40,RGB($FF,250,$80))
Circle(20,20,10,RGB($EC,$6,$C))
Circle(20,20,20,RGB($EC,$6,$C))
StopDrawing()

CreateSprite(#Spider,40,40,0)
StartDrawing(SpriteOutput(#Spider)) : DrawingMode(4)
Circle(20,20,10,RGB($EC,$6,$C))
Circle(15,15,2,RGB($29,$ED,$38))
Circle(20,15,2,RGB($29,$ED,$38))
Line(0,11,10,10,RGB($E2,$DA,$34))
Line(0,17,10,10,RGB($E2,$DA,$34))
Line(0,5,10,10,RGB($E2,$DA,$34))
Line(20,10,10,10,RGB($E2,$DA,$34))
Line(20,17,10,10,RGB($E2,$DA,$34))
Line(20,5,10,10,RGB($E2,$DA,$34))
StopDrawing()

CreateSprite(#MegaBombe,40,40,0)
StartDrawing(SpriteOutput(#MegaBombe)) : DrawingMode(1)
Box(0,0,10,50,RGB($63,$D6,$41))
StopDrawing()

;Ajout et disposition des spider
For i = 0 To Level
 
  AddElement(Spider())
 
  Spider()\x = 10  + Random(870)
  Spider()\y = 600 + Random(150)
  Spider()\Vitesse = 2
 
Next i


;-Temps pour les clic
Procedure TimerProc(hnd.l, uMsg.l, idEvent.l, dwTime.l)
  Select uMsg
    Case #WM_TIMER
      Select idEvent
        Case 1
          If Temps = 1
             Temps = 0
          EndIf
      EndSelect
  EndSelect
EndProcedure


;-Afficher les spider
Procedure AffichageSpider()
 
  ResetList(Spider())
 
  ForEach Spider()
   
   
    If Spider()\y < 100
     
      AffichePerdu = 1
     
    EndIf
   
    DisplayTransparentSprite(#Spider , Spider()\x ,  Spider()\y )
   
    Spider()\y - Spider()\Vitesse
   
  Next
 
EndProcedure


;-Affichage du plato de jeux
Procedure AffichePlato()
 
  StartDrawing(ScreenOutput())
 
  Line(0 , 100 , 900 , 0 , RGB($29,$ED,$38))
  Line(0 , 597 , 900 , 0 , RGB($2F,$3D,$E8))
 
  DrawingFont(UseFont(Font1))
  DrawingMode(1)
 
  FrontColor($C0,$C0,$C0) : Locate(10,5)
  DrawText("Level " + Str(LevelVery))
  FrontColor(255,0,0) : Locate(10,10)
  DrawText("Level " + Str(LevelVery))
 
  FrontColor($C0,$C0,$C0) : Locate(530,5)
  DrawText("Score : " + Str(Score))
  FrontColor(255,0,0) : Locate(530,10)
  DrawText("Score : " + Str(Score))
 
  StopDrawing()
 
EndProcedure


;-Intro
Procedure Intro()
 
  StartDrawing(ScreenOutput())
 
  For i = 0 To 1000
   
    Box(i * Cos(i),i,1,1,RGB($D0,$46,$88))
    box(i * Sin(i),i,1,1,RGB($4E,$DD,$39))
    Line(i + Cos(i),AvanceParticle * Sin(i),1,1,RGB($42,$51,$D5))
    Line(i + Sin(i),AvanceParticle + Sin(i),1,1,RGB($45,$C7,$D1))
   
  Next
 
  If AvanceParticle > 70
   
    DrawingFont(UseFont(Font2))
    DrawingMode(1)
   
    FrontColor($C0,$C0,$C0) : Locate(220,70)
    DrawText("ARANOÏDE")
    FrontColor(100,150,250) : Locate(220,75)
    DrawText("ARANOÏDE")   
   
    DrawingFont(UseFont(Font3))
    FrontColor($C0,$C0,$C0) : Locate(353,160)
    DrawText("Garzul | 2004")
    FrontColor(150,250,150) : Locate(353,163)
    DrawText("Garzul | 2004")
   
    FrontColor($C0,$C0,$C0) : Locate(370,270)
    DrawText("F1 = AIDES")
    FrontColor(200,50,100) : Locate(370,273)
    DrawText("F1 = AIDES")   
   
    FrontColor( 0 , 250 , 0 )
    DrawingMode(1)
    Locate( 250 , 450 )
    DrawText(" Appuyer sur entrer pour jouer ")
 
  EndIf
 
 
  StopDrawing()
 
  AvanceParticle + 2
 
  If AvanceParticle > 600
   
    AvanceParticle  = 600
   
  EndIf
 
  If KeyboardPushed(#PB_Key_Return)
   
    Intro = 0
   
  EndIf
 
EndProcedure


;-Perdu
Procedure Perdu()
 
  StartDrawing(ScreenOutput())
 
  DrawingFont(UseFont(Font2))
  DrawingMode(1)
 
  FrontColor($C0,$C0,$C0) : Locate(220,100)
  DrawText("ARANOÏDE")
  FrontColor(0,250,250) : Locate(220,105)
  DrawText("ARANOÏDE")   
 
  FrontColor($C0,$C0,$C0) : Locate(150,300)
  DrawText("Vous avez perdu")
  FrontColor(255,0,0) : Locate(150,307)
  DrawText("Vous avez perdu")
 
  FrontColor(0,255,0) : Locate(100 ,400)
  DrawingFont(UseFont(Font1))
  DrawText("Recommencer = Entrer")
 
  FrontColor(0,0,255) : Locate(270,480)
  DrawingFont(UseFont(Font1))
  DrawText("Score = " + Str(Score))
 
  DrawingFont(UseFont(Font3))
  FrontColor($C0,$C0,$C0) : Locate(360,220)
  DrawText("Garzul | 2004")
  FrontColor(150,250,150) : Locate(360,223)
  DrawText("Garzul | 2004")
 
  FrontColor($C0,$C0,$C0) : Locate(370,260)
  DrawText("F1 = AIDES")
  FrontColor(200,50,100) : Locate(370,263)
  DrawText("F1 = AIDES")   
 
  StopDrawing()
 
  ;Si on appui sur entrer on reload ^^
  If KeyboardReleased(#PB_Key_Return)
   
    Score        = 0
    Level        = 5
    LevelVery    = 0
    AffichePerdu = 0
    Intro        = 0
    MegaBombe    = 1
   
    ForEach Spider()
     
      Spider()\Vitesse = 2
      Spider()\x = 10  + Random(870)
      Spider()\y = 600 + Random(150)
     
    Next
   
  EndIf
 
EndProcedure


;-Collision
Procedure Collision()
 
  ForEach Spider()
   
    If SpriteCollision(#Souris , x1 , y1 , #Spider , Spider()\x , Spider()\y) And MouseButton(1) And Temps = 0
     
      DeleteElement(Spider())
      Score + 1
     
    EndIf
   
  Next 
 
  If CountList(Spider()) = 0
   
    Level            + 1
    LevelVery        + 1
   
    ForEach Spider()
     
      Spider()\Vitesse + 1
     
    Next
   
    For i = 0 To Level
     
      AddElement(Spider())
     
      Spider()\x = 10  + Random(870)
      Spider()\y = 600 + Random(150)
      Spider()\Vitesse = 2
     
    Next i
   
  EndIf
 
    If KeyboardPushed(#PB_Key_Space) And MegaBombe = 1
     
      MegaBombe = 0
      Score     + 50
     
      ForEach Spider()
       
        ClearList(Spider())
       
      Next
     
    EndIf
 
EndProcedure
 


;-Aide
Procedure Aides()
 
  StartDrawing(ScreenOutput())
 
  DrawingFont(UseFont(Font2))
  DrawingMode(1)
 
  FrontColor($C0,$C0,$C0) : Locate(75,0)
  DrawText("ARANOÏDE AIDES")
  FrontColor(0,250,250) : Locate(75,5)
  DrawText("ARANOÏDE AIDES")   
 
  FrontColor(0,255,0) : Locate(100 ,580)
  DrawingFont(UseFont(Font1))
  DrawText("Recommencer = Entrer")
 
  DrawingFont(UseFont(Font3))
  FrontColor($C0,$C0,$C0) : Locate(360,100)
  DrawText("Garzul | 2004")
  FrontColor(150,250,150) : Locate(360,103)
  DrawText("Garzul | 2004")
 
  FrontColor(150,0,0) : Locate(200,200)
  DrawText("Bienvenue et merci de jouer à Aranoîde")
 
  FrontColor($C0,$C0,$C0) : Locate(350,270) 
  DrawText("BUT DU JEUX :")
  FrontColor(150,150,0) : Locate(350,273) 
  DrawText("BUT DU JEUX :")
 
  FrontColor(0,150,150) : Locate(0,340)
  DrawText("Le but de ce jeux est de tuer toute les araignée avant quelle n'arrivent")
  FrontColor(0,150,150) : Locate(0,375) 
  DrawText("à la ligne limite . Pour cela vous avez à votre disposition deux armes : ")
  FrontColor(150,0,150) : Locate(0,430) 
  DrawText("Le fusil = Clic gauche : Arme normale pour éradiquer les araignée .")
  FrontColor(150,0,125) : Locate(0,480) 
  DrawText("La MegaBombe = Espace : Arme lourde pour exploser les araignée .")
 
  FrontColor($C0,$C0,$C0) : Locate(390,530) 
  DrawText("TOUCHE :")
  FrontColor(150,150,0) : Locate(390,533) 
  DrawText("TOUCHE :")
 
  FrontColor(50,0,250) : Locate(75,562) 
  DrawText("F1 = Aides | Echap = Quitter | Pour quitter l'aides : Entrer")
 
  StopDrawing()
  DisplaySprite(#Souris,850,430)
  DisplaySprite(#MegaBombe,870,480)
 
  If KeyboardReleased(#PB_Key_Return)
   
    Score        = 0
    Level        = 5
    LevelVery    = 0
    AffichePerdu = 0
    Intro        = 1
    MegaBombe    = 1
    Aides        = 0
   
    ForEach Spider()
     
      Spider()\Vitesse = 2
      Spider()\x = 10  + Random(870)
      Spider()\y = 600 + Random(150)
     
    Next
   
  EndIf
 
EndProcedure


Temps = 1
Timer = SetTimer_(WindowID(),1,100,@TimerProc())

;*______________________________________*__**__*__**__*__**__*___________________________________________*
;/****************************************  //\\ BOUCLE //\\  *********************************************
;/****************************************  \\//*||**||*\\//  *********************************************
;*______________________________________*__**__*__**__*__**__*___________________________________________*
Repeat
 
  Select WindowEvent()
    Case #WM_LBUTTONDOWN
      Temps = 1
    Case #WM_LBUTTONUP
      Temps = 0
  EndSelect
 
  ExamineMouse()
  x1 = MouseX()
  y1 = MouseY()
 
 
  ;Si on appui sur F1 l'aides apparaît :D
  If KeyboardReleased(#PB_Key_F1)
   
    Aides = 1
   
  EndIf
  If Aides = 1
   
    Aides()
     
  EndIf
 
 
  If MegaBombe = 1 And AffichePerdu = 0 And Intro = 0 And Aides = 0
   
    DisplaySprite(#MegaBombe,870,550)
   
  EndIf
 
  If AffichePerdu = 1 And Aides = 0
   
    Perdu()
   
  EndIf 
 
  If Intro = 0 And AffichePerdu = 0 And Aides = 0
   
    AffichePlato()
    DisplayTransparentSprite(#Souris,x1,y1)
    AffichageSpider()
    Collision()
   
  EndIf
 
  If Intro = 1 And Aides = 0
   
    Intro()
   
  EndIf
 
  FlipBuffers() ;Inversion des deux buffer
  ClearScreen( 0 , 0 , 0 )
 
  If IsScreenActive() = 0
    End
  EndIf
 
  ;Fin du programme si appuyer sur echap .   
  ExamineKeyboard()
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
Heu il est un peu mal fait le code mais bon ^^ c'est du Garzul :D .
Dernière modification par garzul le mer. 03/nov./2004 22:09, modifié 1 fois.
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

manque un ExamineKeyboard() quelque part que le compilo il me dit
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Bah tu le met au début tu es tranquille aprés :D
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

non

quand un code marche pas je cherche pas loin (sauf si j'en ai vraiment besoin), c'est à toi de faire en sorte que ton code source fonctionne :s
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

C'est bon modifier ( Je me suis aperçus que j'utilise JapBe mais en faîte c'est pas un bon compilateur car j'ai passer les erreur que aranoth ma dit avec JapBe et quand j'ai voulu compiler avec le compilateur normale de PureBasic il ma indiquer plein d'erreur , donc j'en conclu que JapBe n'est pas vraiment bien si il laisse des erreur :/
Répondre