le plus beau casse brique de tout les temps !

Programmation avancée de jeux en PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

le plus beau casse brique de tout les temps !

Message par Backup »

voici le plus beau casse brique de tout les temps fait en purebasic !!
attention il faut une config tres puissante pour le faire tourner !!
au moins 8Ghz !

et voici le code ultra perfectionné ! rien que pour vous !
.... ne le redistribué pas , c'est du top de chez top !!


Code : Tout sélectionner


; Version Purebasic 4.00
 ; Prg réalisé par Dobro le 24/05/2005
debut:

Resultat = OpenConsole ()
EnableGraphicalConsole(1)
ConsoleCursor (0)
ConsoleTitle ( " le plus beau casse brique de tout les temps " )

;{; Preambule :
ConsoleColor (12,0 )
ConsoleLocate (17,1)
Print ( " le plus beau casse brique de tout les temps " )
ConsoleColor (15,0 )
ConsoleLocate (3,2)
Print ( " ce programme necessite un pentium4 a 8 Ghz pour tourner correctement " )
ConsoleColor (14,0 )
ConsoleLocate (22,5)
Print ( " Votre Score est de: " + Str (point)+ " points" )
point=0
ConsoleColor (10,0 )
ConsoleLocate (10,10)
Print ( " pour jouer" )
ConsoleLocate (10,11)
Print ( " puis appuis sur la touche [espace] pour lancer la balle " )
ConsoleLocate (10,12)
Print ( " les fleches dirigent la raquette " )
ConsoleColor (15,0 )
ConsoleLocate (1,25)
Print ( " Programme realise par Dobro en purebasic v3.93 sur un Cray !! " )
yy:
Chaine$ = Inkey ()
Resultat = RawKey()
If Str(Resultat)<> "32" ;
  Chaine$= ""
  Goto yy
EndIf
;}

ClearConsole ()

Chaine$= ""
xr=35
yr=20
ybal=19
xbal=35
sensy=-1
sensx=1
bord$= "bas"

Dim brique(60,15)
Dim couleur(15)
; initialise le tableau
For yb=5 To 15 Step 2
  For xb=15 To 59 Step 2
    brique(xb,yb)=1
  Next xb
Next yb

; initialise les couleurs des briques
For coul=1 To 15
  couleur(coul)= Random (10)+5
Next coul
; **********************************

Gosub affiche


Repeat
  
  
  ; ********** position de la balle ****************************
  Gosub position_balle
  ; ****************************************************************
  Delay (50)
  
  
  ;{; ************ le clavier ******************
  Chaine$ = Inkey ()
  Resultat = RawKey()
  
  If Str(Resultat)= "39" ; fleche droite
    xr=xr+4 : If xr>58: xr=58: EndIf ; ceci determine le blocage de la raquette
  EndIf
  If Str(Resultat)= "37"  ; fleche gauche
    xr=xr-4: If xr<4: xr=4: EndIf
  EndIf
  If Str(Resultat)= "32"  ; espace
    start=1
  EndIf
  ; ****************************************
  ;}
  
  
  If start=1 ; la balle est lancé (gachette)
    ybal=ybal+sensy
    xbal=xbal+sensx
    
  EndIf
  ;{ ; *************** collision bord ****************
  
  If xbal >66 ; (touche bord droit)
    Gosub position_balle
    sensx=-sensx
    bord$= "droit"
  EndIf
  If xbal <8 ; (touche bord gauche)
    Gosub position_balle
    sensx=-sensx
    bord$= "gauche"
  EndIf
  
  If ybal >22 ; (touche bord bas)
    Gosub position_balle
    sensy=-sensy
    bord$= "bas"
  EndIf
  If ybal <2 ; (touche bord haut)
    Gosub position_balle
    sensy=-sensy
    bord$= "haut"
  EndIf
  ; ******************************************
  ; ************ si collision entre ball et raquette ***********
  If start=1
    If ( xbal=xr+4 Or xbal=xr+5 Or xbal=xr+6 Or xbal=xr+7 ) And ybal=20
      raquette=1
    EndIf
    
    If ( xbal=xr+3 Or xbal=xr+8 ) And ybal=20
      raquette=2
    EndIf
  EndIf
  
  ; *****************************************************************
  ;}
  
  Gosub affiche
ForEver

;{ ; AFFICHE
affiche:

; ClearConsole()
; ************* les briques *******************************
For yb=5 To 15 Step 2
  For xb=15 To 59 Step 2
    ConsoleColor (couleur(yb), 0)
    ConsoleLocate (xb,yb)
    
    If ybal>20 ; partie perdu
      Chaine$= ""
      CloseConsole ()
      Goto debut
    EndIf
    
    ; ************* si collision entre balle et brique *************
    If (xbal=xb And ybal=yb) And start=1 And brique(xb,yb)=1
      brique(xb,yb)=0 ; la brique disparait
      point=point+10 ; le score
      Gosub position_balle
      If bord$= "gauche" Or bord$= "droit" :sensx=-sensx: EndIf
      If bord$= "bas" Or bord$= "haut" : sensy=-sensy : EndIf
    EndIf
    ; ****************************************************************
    If raquette=1
      raquette=0
      sensy=-sensy
    EndIf
    If raquette=2
      raquette=0
      sensy=-sensy
      sensx=-sensx
    EndIf
    If brique(xb,yb)=1
      Print ( "=" )
    Else
      Print ( " " )
    EndIf
  Next xb
Next yb


; **************************************************

; ********* affiche la raquette **********************
ConsoleLocate (xr,yr) ; position la raquette
ConsoleColor (15, 0)
Print ( Chr(32)+"   =====   "+Chr(32)) ; la raquette
ConsoleLocate (0,yr-1)
Print ( Space (66)) ; efface les résidus
ConsoleLocate (0,yr+1)
Print ( Space (66)) ; efface les résidus
; ****************************************************
; ************** les bords *******************
For y=0 To 24
  ConsoleLocate (7,y)
  Print ( "|" )
  ConsoleLocate (67,y)
  Print ( "|" )
Next y

For x=0 To 79
  ConsoleLocate (x,1)
  Print ( "-" )
  ConsoleLocate (x,23)
  Print ( "-" )
Next x
  ; ********** LE SCORE ********************
ConsoleLocate (70,3)
ConsoleColor (11, 0)
Print ( "points" )
ConsoleLocate (72,4)
ConsoleColor (11, 0)
Print ( Str (point))
; *********************************************
Return
;}

;{;POSITION BALLE
position_balle:
If sensy<0 And sensx>0 ; va a droite ; ça monte
  ConsoleColor (14, 0)
  ConsoleLocate (xbal,ybal) ; position la balle
  Print ( "o" ) ; la balle
  ConsoleLocate (xbal-1,ybal+1) ; position la balle
  Print ( " " ) ; la balle
  Goto su2
EndIf
    
If sensy<0 And sensx<0 ; va a gauche ; ça monte
  ConsoleColor (14, 0)
  ConsoleLocate (xbal,ybal) ; position la balle
  Print ( "o" ) ; la balle
  ConsoleLocate (xbal+1,ybal+1) ; position la balle
  Print ( " " ) ; la balle
  Goto su2
EndIf
    
If sensy>0 And sensx>0 ; va a droite ça descend
  ConsoleColor (14, 0)
  ConsoleLocate (xbal,ybal) ; position la balle
  Print ( "o" ) ; la balle
  ConsoleLocate (xbal-1,ybal-1) ; position la balle
  Print ( " " ) ; la balle
  Goto su2
EndIf
    
If sensy>0 And sensx<0 ; va a gauche ça descend
  ConsoleColor (14, 0)
  ConsoleLocate (xbal,ybal) ; position la balle
  Print ( "o" ) ; la balle
  ConsoleLocate (xbal+1,ybal-1) ; position la balle
  Print ( " " ) ; la balle
  Goto su2
EndIf
su2:
Return
;}


Dernière modification par Backup le lun. 24/juil./2006 14:11, modifié 3 fois.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

8O Impressionant, mon PC ne permet pas de le faire tourner correctement, mais bon.....Il fallait au moins un cray pour le faire :lol:

Sinon c'est une bonne idée :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je trouve ça trop génial :D , par contre c'est trop dur!

Ma carte vidéo a beaucoup de mal à suivre, ça m'embête y a pas très longtemps que je l'ai changé. :roll: :wink:
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

8O très impressionnant, les graphismes sont de toute beauté :D
Mais où vas-tu chercher ton inspiration :wink:
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message par Gratteur »

Chapeau bas monsieur Dobro, ce casse brique va révolutionner la vie de nos ordinateurs !
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

Trop de la balle! :lol:


P'tite correction sur le Random car il donne une valeur entre 0 et 10 inclus:

Code : Tout sélectionner

For coul=1 To 15 
  couleur(coul)=Random(10)+5 
Next coul
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Trop dur !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

800 points à ma deuxieme partie

Dri
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Ha, ça jette !

J'ai tout de même avec le debugger l'erreur à la ligne 142

Console color must be between 0 and 15


lorsque je lance une deuxième fois
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Moi, c'est au bout de la troisième fois !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Sympa.

Moi dès la 1ère fois.
J'ai créer un EXE et là ca passe sans pb...

Faudrait penser à changer le nom du topic !!! : Le plus génialisime Pong de que l'Homme n'est jamais connu !!!
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Dräc a écrit :Trop de la balle! :lol:


P'tite correction sur le Random car il donne une valeur entre 0 et 10 inclus:

Code : Tout sélectionner

For coul=1 To 15 
  couleur(coul)=Random(10)+5 
Next coul
corrigé !! Merci :D ; je sais pas d'ou sort ce +6 !! :lol:
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Vraiment excellent :)
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

lol ! Je m'attendais pas à ca, plus oldschool que ça, tu meurs ! J'adore :D
Par contre, c'est un pwal dur :-p
"Qui baise trop bouffe un poil." P. Desproges
Répondre