FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Panorabrique Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Panorabrique Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Panorabrique Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Panorabrique Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Panorabrique Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Panorabrique Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Panorabrique Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Panorabrique Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Panorabrique Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Panorabrique Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Panorabrique Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Panorabrique Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Panorabrique Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Panorabrique Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Panorabrique Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Panorabrique

Aller en bas 
+2
JL35
Jicehel
6 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Panorabrique   Panorabrique EmptyJeu 23 Fév 2012 - 0:48

Bon pour faire plaisir à JL35, je me remet un peu au code ...

Début d'un casse-brique, il me faudra encore un peu de temps pour le finir, mais bon il y a les briques, la raquette qui bouge et la balle aussi (pour le moment pas de gestion des collision en dehors des bords car il est déjà tard, je verrais ça un autre jour Smile )

Code:

label trace_brique, dessine_raquette, boucle_principale, lance_balle, deplace_balle
label dessine_briques, fin, retrace, init_niveau, recommence
dim h,l : h=400: l=600
dim hauteur_b, largeur_b : hauteur_b = 10 : largeur_b=30
dim c, xb, yb, i, j, r , N, n_picture
dim Nb_b_ligne : Nb_b_ligne = int((l - 60)/(largeur_b+10))
dim Nb_lignes, Nb_briques_restantes
dim x_r , y_r, hauteur_r, largeur_r : hauteur_r = 10 : largeur_r=70 : y_r = h-60-hauteur_r
dim vies : vies = 3
dim x_ball,y_ball, r_ball, n_ball : r_ball = 10
dim score : score = 0
dim objet% : objet% = 1
dim ecran%, aff_vies%, aff_score%
dim Nb_couleur%: Nb_couleur% = 18
dim t_c(Nb_couleur%,3)
dim ombre  : ombre=30
dim lumiere : lumiere = 30

height 0, h: width 0,l : caption 0, "PANORABRIQUE - V1.0" : border_small 0

data  0,  0,  0, 255,255,255, 155,155, 55,  180,180,80,  80, 80, 80,  80, 80,215
data 215, 80, 80,  80,215, 80, 155,133,155,  100,215,100, 215, 80,215, 215,215, 80
data  80,215,215, 100,100,215,  55,215,133,  133, 55,215, 215,133, 55,  55, 55,133

for i = 1 to Nb_couleur%: for j = 1 to 3 : read c : t_c(i,j)=c : next j : next i

ecran% = objet% : picture ecran% : top ecran%,0: left ecran%,1
height ecran%, h-35: width ecran%,l-18
2D_target_is ecran%: objet% = objet% +1

2D_pen_width 3
' Trace le contour
2D_pen_color t_c(3,1), t_c(3,2), t_c(3,3) : 2D_fill_color t_c(3,1), t_c(3,2), t_c(3,3)
2D_rectangle 0,h-35,8,0 : 2D_rectangle 8,0,l-15,20 : 2D_rectangle l-25,10,l-15,h-35

aff_vies% = objet% : alpha aff_vies% : color aff_vies%, t_c(3,1), t_c(3,2), t_c(3,3): top aff_vies%,4 : left aff_vies%, 40
width aff_vies%,80 : caption aff_vies%, "Vies = "+str$(vies) : objet% = objet% + 1

aff_score% = objet% : alpha aff_score% : color aff_score%, t_c(3,1), t_c(3,2), t_c(3,3) : top aff_score%,4 : left aff_score%, 150
width aff_score%,80 : caption aff_score%, "Score = "+str$(score) : objet% = objet% + 1

gosub init_niveau
' timer pour déplacements
timer 20 : timer_interval 20,25
on_timer 20,boucle_principale
end

init_niveau:
  Nb_lignes = 6: gosub dessine_briques
  x_r = 0.5 * (l - largeur_r - 35)
  gosub Dessine_raquette
  gosub Lance_balle
return

dessine_briques:
if variable("t_br")=1 then free t_br
dim t_br(Nb_lignes*Nb_b_ligne,5)
dim k: k=0 : Nb_briques_restantes = 0
For i= 1 to Nb_lignes
  yb = 25 + (hauteur_b + 15) * i
  For j = 1 to Nb_b_ligne
    xb = 30 + (largeur_b + 10) * (j-1)
    k=k+1 : t_br(k,1) = 1 : t_br(k,5) = 100
    t_br(k,2) = t_c(5+i,1): t_br(k,3) = t_c(5+i,2): t_br(k,4) = t_c(5+i,3)
    Nb_briques_restantes = Nb_briques_restantes + 1
    gosub trace_brique
  Next j
Next i
free k
return

Lance_balle:
  y_ball = y_r - 25
  x_ball = int(rnd(l-60)) + 15
  r=1
RETURN

recommence:
  vies = 3 : score = 0
  ' Efface ancienne raquette
  2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) :  2D_fill_color t_c(2,1), t_c(2,2), t_c(2,3)
  2D_rectangle x_r,y_r,x_r+largeur_r,y_r+hauteur_r

' Efface la balle
  2D_rectangle x_ball,y_ball,x_ball+2*r_ball,y_ball+2*r_ball
  gosub init_niveau
  timer_on 20
return

retrace:
dim k: k=0
For i= 1 to Nb_lignes
  yb = 25 + (hauteur_b + 15) * i
  For j = 1 to Nb_b_ligne
    xb = 30 + (largeur_b + 10) * (j-1)
    k=k+1
    gosub trace_brique
  Next j
Next i
free k
return

trace_brique:
if t_br(k,1)=1
  2D_pen_color t_br(k,2), t_br(k,3), t_br(k,4)
  2D_fill_color t_br(k,2), t_br(k,3), t_br(k,4)
  2D_rectangle xb+2,yb+2,xb+largeur_b-2, yb+hauteur_b-2
  2D_pen_color t_br(k,2)+lumiere, t_br(k,3)+lumiere, t_br(k,4)+lumiere
  2D_poly_from xb,yb+hauteur_b : 2D_poly_to xb,yb : 2D_poly_to xb+largeur_b,yb
  2D_pen_color t_br(k,2)-ombre, t_br(k,3)-ombre, t_br(k,4)-ombre
  2D_poly_to xb+largeur_b,yb+hauteur_b : 2D_poly_to xb,yb+hauteur_b
end_if
return

deplace_balle:
  IF x_ball> l-29 -2*r_ball THEN c = 2 : ELSE : IF x_ball < 12 THEN c = 1
'  IF y_ball > h-35-2*r_ball THEN r = 1 : ELSE : IF y_ball < 24 THEN r = 2
  IF y_ball < 24 THEN r = 2
  IF c<2 THEN x_ball = x_ball + 2 : ELSE: x_ball = x_ball - 2
  IF r<2 THEN y_ball = y_ball - 2 : ELSE: y_ball = y_ball + 2   
RETURN

dessine_raquette:
  2D_pen_color t_c(5,1), t_c(5,2), t_c(5,3): 2D_fill_color t_c(5,1), t_c(5,2), t_c(5,3)
  2D_rectangle x_r+4,y_r+4,x_r+largeur_r-4,y_r+hauteur_r-4
  2D_pen_color t_c(5,1)+lumiere, t_c(5,2)+lumiere, t_c(5,3)+lumiere
  2D_poly_from x_r+2,y_r+hauteur_r-2 : 2D_poly_to x_r+2,y_r+2 : 2D_poly_to x_r+largeur_r-2,y_r+2
  2D_pen_color t_c(5,1)-ombre, t_c(5,2)-ombre, t_c(5,3)-ombre
  2D_poly_to x_r +largeur_r-2,y_r+hauteur_r-2 : 2D_poly_to x_r+2,y_r+hauteur_r-2
return

boucle_principale:
if variable("temp") = 0 then dim temp
timer_off 20
if scancode=27 then goto fin

' Efface ancienne raquette
  2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) :  2D_fill_color t_c(2,1), t_c(2,2), t_c(2,3)
  2D_rectangle x_r,y_r,x_r+largeur_r,y_r+hauteur_r

' Efface la balle
  2D_rectangle x_ball,y_ball,x_ball+2*r_ball,y_ball+2*r_ball

' Test si collision avec une brique
  if (r= 1 and y_ball < (25 + hauteur_b + (hauteur_b + 15) * Nb_lignes))

    i = int((x_ball - 30) / (largeur_b + 10))+1
    temp = int ((y_ball -25 -hauteur_b) / (hauteur_b +15))+1
    N = (temp-1)*Nb_b_ligne +i
    if N <= (Nb_lignes*Nb_b_ligne) and N>0
      if t_br(N,1) = 1
          r=2 : t_br(N,1) = 0
          ' Efface les briques
          2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3)
          2D_fill_color t_c(2,1), t_c(2,2), t_c(2,3)
          2D_rectangle 30,25 + (hauteur_b + 15),l -30, 26 + hauteur_b + (hauteur_b + 15) * Nb_lignes
          Nb_briques_restantes = Nb_briques_restantes - 1 : score = score + t_br(N,5)
          gosub retrace
      end_if
    end_if
  else
    if (r= 2 and  (y_ball  > (40 + hauteur_b)) and (y_ball < (25 + hauteur_b + (hauteur_b + 15) * Nb_lignes) ))
      i = int((x_ball - 30) / (largeur_b + 10)) +1
      temp = int (((y_ball+2*r_ball) -25 -hauteur_b) / (hauteur_b +15))
      N = (temp-1)*Nb_b_ligne +i
      if N <= (Nb_lignes*Nb_b_ligne) and N>0
        if t_br(N,1) = 1
          r=1 : t_br(N,1) = 0
          ' Efface les briques
          2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3)
          2D_fill_color t_c(2,1), t_c(2,2), t_c(2,3)
          2D_rectangle 30,25 + (hauteur_b + 15),l -30, 26 + hauteur_b + (hauteur_b + 15) * Nb_lignes
          Nb_briques_restantes = Nb_briques_restantes - 1 : score = score + t_br(N,5)
          gosub retrace
        end_if
      end_if
    end_if
  end_if

' Trace la balle
  gosub deplace_balle
  2D_pen_color t_c(3,1)-ombre, t_c(3,2)-ombre, t_c(3,3)-ombre
  2D_fill_color t_c(3,1), t_c(3,2), t_c(3,3)
  2D_Circle x_ball+r_ball, y_ball+r_ball, r_ball
  2D_pen_color t_c(4,1), t_c(4,2), t_c(4,3)
  2D_fill_color t_c(4,1)+lumiere, t_c(4,2)+lumiere, t_c(4,3)+lumiere
  2D_Circle x_ball+r_ball-3, y_ball+r_ball-3, r_ball-6

' Actualise la raquette
  x_r = mouse_x_position(1)
  if x_r < 10 then x_r=10
  if x_r > l - largeur_r-28 then x_r = l - largeur_r-28
  gosub dessine_raquette

' Verifie si la balle touche la raquette
  if r=2 and y_ball > y_r - 2 * r_ball
      if ((x_ball > (x_r - r_ball)) and (x_ball < (x_r + largeur_r)))
        r = 1
            score=score+1
      else
        if r=2 and y_ball > y_r
            ' Balle perdue
            wait 30
            ' Efface la balle
            2D_pen_color  t_c(2,1), t_c(2,2), t_c(2,3)
            2D_fill_color t_c(2,1), t_c(2,2), t_c(2,3)
            2D_rectangle x_ball,y_ball,x_ball+2*r_ball,y_ball+2*r_ball
            wait 100
            gosub Lance_balle
            vies = vies-1
        end_if
      end_if
  end_if
  caption aff_vies%, "Vies = "+str$(vies)
  caption aff_score%, "Score = "+str$(score)
  if Nb_briques_restantes = 0
    Message "Bravo, niveau suivant ..."
    ' Efface la balle
    2D_pen_color t_c(2,1), t_c(2,2), t_c(2,3) :  2D_fill_color t_c(2,1), t_c(2,2), t_c(2,3)
    2D_rectangle x_ball,y_ball,x_ball+2*r_ball,y_ball+2*r_ball
    gosub init_niveau
  end_if
  if vies < 1 then goto fin
  free temp
  timer_on 20
return

fin:
  if message_confirmation_yes_no ("Voulez-vous recommencer une partie ?") = 1 then goto recommence
terminate


Dernière édition par Jicehel le Sam 25 Fév 2012 - 3:48, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyJeu 23 Fév 2012 - 9:13

C'est pas mal pour un début, joli, mais je n'ai plus qu'à aller faire recorder ma raquette, avec la balle qui passe à travers à chaque fois Very Happy
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyJeu 23 Fév 2012 - 9:48

mdr Smile La raquette c'est simple pour savoir s'il y a rebond ou non, mais bon, je ne voulais pas commencer hier par ce que sinon, j'aurais voulu faire les briques aussi et là c'est plus compliqué puisqu'il faut calculer les 4 type de rebond possible (par le haut, à droite, à gauche ou en bas) en fonction du sens de la balle et de l'état de la brique (présente ou cassée). Bon, il n'y a pas mort d'homme mais il faut le faire alors commencer à une heure du mat... j'ai préféré repousser ça à un autre jour. Ce soir sans doute sauf imprévu Smile
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptySam 25 Fév 2012 - 3:53

Bon, j'ai rajouté dans le code du premier post la gestion des collisions (enfin les tests peuvent être améliorés si quelqu'un a un peu de temps et l'esprit clair pour le faire ...), la gestion du score et de la fin de partie (plus de vie, plus de briques ou appuie sur 'echap')

Amusez-vous bien mais je vous ais prévenu, la gestion des collisions des briques peut vraiment être mieux faites. J'avais fait un truc plus complexe, mais ça ne fonctionnait pas, j'ai donc simplifié et là c'est jouable, mais il manque un test qui empêche de casser la brique de gauche de la ligne supérieure quand on tire sur le bord gauche et une meilleure gestion des limites de la balle et des briques ...
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptySam 25 Fév 2012 - 15:48

Amusant, bien fait, joli petit jeu ! mais un peu monotone à la longue, ça manque un peu de variété et d'imprévus, la baballe a une direction bien déterminée et prévisible. Mais par contre je ne vois pas trop ce que tu pourrais faire de plus.
Au moins ça ne perce plus ma raquette.
Les niveaux supplémentaires ajoutent des briques, c'est tout ? la vitesse reste la même apparemment. Je ne sais pas si tu peux l'augmenter (je n'ai pas étudié ton programme Very Happy ), ou alors peut-être diminuer progressivement la largeur de la raquette, pour augmenter la difficulté ?

Ca me rappelle un peu un jeu d'autrefois (space invaders, ou quelque chose comme ça), avec un canon qui se déplaçait au sol et qui tirait à la verticale sur des vaisseaux extra-terrestres qui descendaient lentement, il fallait les détruire avant qu'ils touchent le sol... ça doit être archi-connu.
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptySam 25 Fév 2012 - 23:09

Pour l'améliorer, tu peux faire beaucoup de choses : Ajouter des niveaux, jouer en mode aventure avec un scénario, vaincre des boss protégés par des brigands, etc...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyDim 26 Fév 2012 - 1:37

Merci pour vos commentaires.
Bon, tout d'abord, juste un ajustement, ce n'est qu'un casse briques et n'a pas d'autres prétentions.

En effets, augmenter la vitesse, faire des niveaux serait facile à faire et dans l'esprit de ce que je veux en faire. Par contre, un scénario avec des boss et tout, j'avoue que c'est autre chose... Ce n'est pas dans l'esprit du petit jeu que je pensais coder, mais tu peux toujours adapter le code après si tu as envie de te lancer la dedans.

Pour ce code, je préférerais d'abord le faire bien avec une gestion correcte des collisions sans un premier temps.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyDim 26 Fév 2012 - 13:50

C'est bien évident !
Revenir en haut Aller en bas
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyDim 26 Fév 2012 - 23:22

Normal, la gestion des collisions c'est la base dans ce genre de jeu, pas besoin d'aller plus avant si ce truc là n'est pas au point.
Je ne savais pas que ce n'étais pas au point, je proposais juste des améliorations pour palier aux problèmes cités ici :
Citation :
mais un peu monotone à la longue, ça manque un peu de variété et d'imprévus, la baballe a une direction bien déterminée et prévisible. Mais par contre je ne vois pas trop ce que tu pourrais faire de plus.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyLun 27 Fév 2012 - 0:00

Pas de problème exdragon, les sugestions peuvent donner des idées, mais bon, là, ce sera un petit jeu sans prétention que j'essayerais de faire proprement. Il sera sans doute monotone au moins dans cet état. Après, s'il est propre et fonctionne bien, quelqu'un pourra toujours sans servir pour le reprendre et le rendre moins monotone (Peut être même que ce sera moi plus tard Smile qui sait)
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyLun 27 Fév 2012 - 13:34

Je ne pensais pas non plus à rajouter des plaies et des... boss, mais bien à rester dans l'optique simple du casse-briques, en variant un peu la difficulté, vitesse, largeur de raquette, rebonds parfois aléatoires, etc.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyLun 27 Fév 2012 - 14:00

Demandes recevables JL35.

Je le mets dans la todo list pour une prochaine soirée de programmation (ou je le ferais dans la version 3D car je pense que je referais plus tard une version 2D après en essayant avec scene2D et des sprites pour voir si je peux anuler ce cintillement insupportable (enfin pour moi)).

La version 3D est propre au niveau affichage et rajouter des briques en tant qu'objet 3D pour lesquels on fait un 3D_COLLIISON_AS_CUBE avec la balle (3D_COLLISION_AS_SPHERE) puis une boucle où l'on teste O3D_COLLISION par une boucle sur le nombre de briques me parait très simple. Il faut juste que je teste pour voir si ce n'est pas trop consommateur en temps.

Ca permettrait que je ne me prenne pas la tête à réfléchir sur les tests de collisions, fainéant comme je suis Smile

Après la variation de vitesse et de rebond, c'est vraiment simple à faire...

La largeur de la raquette aussi (d'ailleurs, pour encore simplifier je vais essayer aussi le test de collision entre le balle et la raquette)
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyLun 27 Fév 2012 - 14:30

Ben voilà, il suffit de demander gentiment Very Happy maintenant en vieux fossile que je suis je ne fais pas trop la différence entre 2D et 3D pour du casse-briques... quoique j'imagine que c'est parce qu'il y a en 3D des fonctions bien pratiques qui n'existent pas en 2D.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyLun 27 Fév 2012 - 15:25

Woui, exactement, enfin pour le moment je ne crois pas que Jack ait déjà implémenté le test de collision des sprites à ce jour enfin sauf si j'ai oublié une des nombreuses choses ajoutées par Jack récemment Smile
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 0:39

Voilà, j'ai ajouté les briques et les test de collisions d'objets 3D natifs dans Panoramic. Voici donc le source équivalent approximativement à la version 2D mais en plus fluide qu'en 2D (enfin je trouve).

Code:
label Boucle_principale, Lance_balle, Fin, Init_niveau, Dessine_briques, Trace_brique

dim i,j, c, xpad, s, vies  : s=0 : vies = 3
dim xball,zball : rem ball position
dim dx,dz : ' direction de la balle
dim vx,vz : ' vitesse de la balle

dim largeur_r : largeur_r = 3.6 : ' Largeur de la raquette

dim Nb_b_ligne : Nb_b_ligne = 7
dim Nb_lignes, Nb_briques_restantes
dim hauteur_b, largeur_b : largeur_b=1.55 :  hauteur_b=0.75

rem numbers of 3D objects:
rem 1=ball; 2= back wall; 3= left wall;  4 = rigth wall; 5=pad; 6=score

' Paramètrage de la fenêtre principale du jeu
left 0,0 : top 0,0 : width 0, 690 : height 0,450 : caption 0,"PANORABRIQUE 3D"
scene3d 1 : full_space 1 : color 1,170, 170, 255 :  ' cree le monde 3D avec un fond bleu clair
cam_x_position 0  : cam_y_position 7    : cam_z_position 13  : ' positionne la camera
point_x_position 0 : point_y_position 0  : point_z_position -0.5 : ' objectif dirigé vers le centre
light_x_position -5 : light_y_position 15 : light_z_position -50  : ' positionne la lumiere

' Gère les couleurs par un tableau de couleurs
dim Nb_couleur%: Nb_couleur% = 18
dim t_c(Nb_couleur%,3)

data  0,  0,  0, 255,255,255, 155,155, 55,  180,180,80,  80, 80, 80,  80, 80,215
data 215, 80, 80,  80,215, 80, 155,133,155,  100,215,100, 215, 80,215, 215,215, 80
data  80,215,215, 100,100,215,  55,215,133,  133, 55,215, 215,133, 55,  55, 55,133

for i = 1 to Nb_couleur%: for j = 1 to 3 : read c : t_c(i,j)=c : next j : next i

' Création des objets (balle, murs, raquette...)
3d_sphere 1, 0.3 : 3d_color 1,0,0,0 : 3d_collision_as_sphere 1 : ' balle created at the center
3d_box 2,  15.5, 0.4, 0.5 : 3d_color 2,155,155,55 : ' Mur du fond
3d_x_position 2, 0 : 3d_y_position 2, 0 : 3d_z_position 2, -7.75
3d_box 3, 0.5, 0.5, 15  : 3d_color 3,155,155,55 : ' Mur gauche
3d_x_position 3, -7.5 : 3d_y_position 3, 0 : 3d_z_position 3, 0.25
3d_box 4, 0.5, 0.5, 15  : 3d_color 4,155,155,55 : ' Mur droit
3d_x_position 4, 7.5 : 3d_y_position 4, 0 : 3d_z_position 4, 0.25

3d_box 5, largeur_r , 0.5, 0.5 : 3d_color 5,80,80,80: ' raquette
3d_x_position 5, 0 : 3d_y_position 5, 0 : 3d_z_position 5, 7.75

3D_text 6, "Score: 0" : 3d_color 6,250,250,0 : ' score
3d_x_position 6, -6 : 3d_y_position 6, 5.5 : 3d_z_position 6, 5
3d_x_scale 6, 1.2  : 3d_y_scale 6, 1.2  : 3d_z_scale 6, 1.2

gosub Init_niveau

' timer pour déplacements
timer 20 : timer_interval 20,30
on_timer 20,boucle_principale
end


Init_niveau:
  Nb_lignes = 6: gosub Dessine_briques
  gosub Lance_balle
return

Dessine_briques:
if variable("t_br")=1 then free t_br
if variable("k")=1 then free k

dim t_br(Nb_lignes*Nb_b_ligne,5)
dim k: k=0 : Nb_briques_restantes = 0

For i= 1 to Nb_lignes
  For j = 1 to Nb_b_ligne
    k=k+1 : t_br(k,1) = 1 : t_br(k,5) = 100
    t_br(k,2) = t_c(5+i,1): t_br(k,3) = t_c(5+i,2): t_br(k,4) = t_c(5+i,3)
    Nb_briques_restantes = Nb_briques_restantes + 1
    gosub Trace_brique
  Next j
Next i
free k
return

Trace_brique:
if O3D_OBJECT_EXISTS(50+k)=0 then 3d_box 50+k, largeur_b, hauteur_b, hauteur_b
  3d_color 50+k,t_br(k,2),t_br(k,3),t_br(k,4)
  3d_x_position 50+k, -7.43 + j*(largeur_b + 0.33) : 3d_y_position 50+k, 0 : 3d_z_position 50+k, i - 7 + (i-1)*0.33
  3d_collision_as_cube 50+k
return

Lance_balle:
  xball=0  : zball=6 :dx=1.5-rnd(1):dz=-1.5+rnd(1) : vx = 0.25 : vz = 0.25
return


Boucle_principale:

timer_off 20
' lecture position souris en X et positionne la raquette
xpad=(mouse_x_position(1)-340)/15
if xpad>8 then xpad=8
if xpad<-8 then xpad=-8
3d_x_position 5,xpad

' Test rebond sur les bords
xball=xball+dx*vx
if xball > 7  then xball=7 :dx=-1.5 + rnd (1): ' Rebond à droite
if xball < -7 then xball=-7:dx=1.5 - rnd(1) : ' Rebond à gauche
3d_x_position 1,xball

zball=zball+dz*vz
if zball < -7 then zball=-7:dz=1 : ' Rebond sur le fond

' Teste si la balle touche la raquette
if (zball>=7)and((xpad-(largeur_r/2))<xball)and(xball<(xpad+(largeur_r/2)))
  zball=7:dz=-1.5+rnd(1):s=s+1:3D_text_change 6,"Score: " + str$(s)
end_if


' Teste si la balle touche une brique
c=1
For i= 1 to Nb_lignes
  For j = 1 to Nb_b_ligne
    If O3D_OBJECT_EXISTS(50+c) = 1
      If O3D_collision (1,50+c) = 1
        3D_Delete 50+c
        Nb_briques_restantes = Nb_briques_restantes - 1
        s = s + t_br(c,5)
        If dz=1
          dz=-1
        Else
          dz=1
        End_if
      End_if
    End_if
    c=c+1
  Next j
Next i

if vies > 1
  3d_text_change 6,"Score: " +str$(s) + "      Vies: "+str$(vies)
else
  if vies <= 0
    3d_text_change 6,"Score: " +str$(s) + "      Vie: "+str$(vies)
    gosub fin
  else
    3d_text_change 6,"Score: " +str$(s) + "      Vie: "+str$(vies)
  end_if
end_if

if zball>= 8 then vies=vies-1 : wait 200 : gosub Lance_balle

if Nb_briques_restantes = 0
'  Message "Bravo, niveau suivant ..."
    gosub init_niveau
end_if

3d_z_position 1,zball

if scancode = 27 then gosub fin
timer_on 20
return

Fin:
c=0
if vies <= 0
  if message_confirmation_yes_no ("Voulez-vous rejouer une partie ?") = 1
    vies = 3 : s = 0
    gosub init_niveau
  else
    c=1
  end_if
else
  if message_confirmation_yes_no ("Voulez-vous vraiment quitter ?") = 1 then c=1
end_if
if c=0 then return
terminate
Revenir en haut Aller en bas
lodchjo

lodchjo


Nombre de messages : 162
Age : 53
Localisation : Anvers
Date d'inscription : 26/12/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 9:34

Bravo, c'est magnifique, vraiment, je suis très impressionné!! cheers
A mon avis, c'est le début d'un jeu que tu pourrait vraiment commercialiser! J'en ai vu des juex "briques", mais pas en 3D comme celui-ci!
Bonne continuation!!
Lode
Revenir en haut Aller en bas
http://lode.weebly.com
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 10:19

Merci Lodchjo, perso je suis de l'ancienne école, je préfère ne même pas envisager de vendre ce type de programme. Pour moi, c'est un hobby que je partage avec d'autres passionnés et je suis content quand on trouve une solution ou que l'on fait un petit programme sympa, mais merci beaucoup pour tes encouragements Smile
Revenir en haut Aller en bas
lodchjo

lodchjo


Nombre de messages : 162
Age : 53
Localisation : Anvers
Date d'inscription : 26/12/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 10:54

D'accord, je comprends! J'ai pas l'esprit commerciale non plus.
Pourtant, on est une bonne équipe ici et une programme commerciale pourrait avoir 2 avantages:
  1. donner du préstige a Panoramic
  2. faire gagner un peu d'argent a Jack pour son boulot Wink

C'est juste une idée, c'est pas pour pousser ou quoi que ce soit; je respecte ton point de vu! Mais si on s'y met tous, ça pourrait devenir un petit succès.
Lode
Revenir en haut Aller en bas
http://lode.weebly.com
carpathe




Nombre de messages : 14
Age : 73
Localisation : Pres Toulouse
Date d'inscription : 28/02/2012

Panorabrique Empty
MessageSujet: Prestige or not prestige   Panorabrique EmptyVen 2 Mar 2012 - 16:00

Salut lodjo,je lis que tu souhaite donner du prestige a"Panoramic".Je doit te mettre en garde.Jack n'ouvre pas son code,moi j'en connais la raison,que je ne peut pas te communiquer,puisque lui meme ne le veux pas.Je te certifie,qu'il est dans son interet,et dans le notre,que"Panoramic" reste en comite restreint.Je suis conscient que ce n'est pas tres 'fair play'.Mais nous vivons dans un monde,ou les naifs ne sont pas a la fete.A+
Revenir en haut Aller en bas
lodchjo

lodchjo


Nombre de messages : 162
Age : 53
Localisation : Anvers
Date d'inscription : 26/12/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 16:10

Je comprends toute a fait que Jack veut garder son code pour lui et il a raison et je ne vois aucune problème avec ça, et a mon avis ça nous empêche pas du tout pour donner un peu plus de prestige et popularité et ainsi obtenir plus d'utilisateurs de Panoramic, non?

Je trouve très dommage que le forum anglais est quasi mort. Il y a des panoramiciens qui essaient d'avoir Panoramic parmi les autres "dialectes" de basic dans des revues et autres sites internet, mais le monde ne semble pas encore très intéressé, car ils sont ignorants.

Je crois que quelques jolis exemples du potentiel de Panoramic peut ouvrir des yeux.
(Bien sur, on pourrait aussi faire un gratuiciel de Panorabrique.)
Revenir en haut Aller en bas
http://lode.weebly.com
carpathe




Nombre de messages : 14
Age : 73
Localisation : Pres Toulouse
Date d'inscription : 28/02/2012

Panorabrique Empty
MessageSujet: Jicehel viens tu de naitre?   Panorabrique EmptyVen 2 Mar 2012 - 16:38

Le forum anglais est quasi mort! En voila une bonne nouvelle. Parceque je peux te dire que si les americains mettent le nez dans nos affaires, Jack pourra aller se coucher. Tu veux plus de d'utilisateurs? Va donc sur les forums 'Linux'ou 'python', tu va savoir ce que le mot capharnaum veux dire. Moi je ne tiens pas a parcourir dix mille pages.Sans compter que la gestion croit avec le volume.Pour ce qui est du gratuiciel. Je te conseille de lire attentivement les docs wikipedia sur les:'Creatives commons' et sur la 'gnu gpl'. Tu va peut etre comprendre pas mal de choses.A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 16:42

Wouah, et dire que ce petit programme est basé sur l'exemple disponiible sur la page Panoramic de Jack et que je l'ai "personnalisé" en y passant quelques heures pendant deux fin de soirées pour le faire correspondre à mon casse-briques Smile Ca illustre bien qu'il est vraiment facile de faire des petits programmes sympas en Panoramic. En tout cas je suis flatté que vous pensiez que cela puisse être distribuable.

A la base, j'ai juste voulu coder un petit jeu pour répondre à JL35 qui me disait que cela faisait longtemps que je n'avais pas posté un code !! ^^ J'ai pensé à mon petit Pong comme je voulais en faire un casse brique, mais pas an ASCII pour arréter de donner l'image d'un logiciel des années 80 (je ne voulais pas contribuer à l'image, par ce que ce n'est pas par ce que j'aime bien ce côté retro, que Panoramic ne sait faire que ça Wink )
Revenir en haut Aller en bas
carpathe




Nombre de messages : 14
Age : 73
Localisation : Pres Toulouse
Date d'inscription : 28/02/2012

Panorabrique Empty
MessageSujet: Erreur de personne Jicehel pour Lodchjo   Panorabrique EmptyVen 2 Mar 2012 - 16:43

Sans objet
Revenir en haut Aller en bas
Invité
Invité




Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique EmptyVen 2 Mar 2012 - 18:35

Citation :
Je doit te mettre en garde.Jack n'ouvre pas son code,moi j'en connais la raison,que je ne peut pas te communiquer,puisque lui meme ne le veux pas.Je te certifie,qu'il est dans son interet,et dans le notre,que"Panoramic"
Citation :
quasi mort! En voila une bonne nouvelle. Parceque je peux te dire que si les americains mettent le nez dans nos affaires, Jack pourra aller se coucher.
Je suis désolé, mais je ne comprends plus ce forum. Ce fut agréable auparavant, mais depuis quelque temps, certains nouveaux qui s'inscrivent ou se réinscrivent ont des propos bizarres. Ils bénéficient d'un langage gratuit, pour lequel ils n'ont rien fait, et ils estiment qu'on doit tout leur donner. Qu'ont-ils donnés eux? Dans la vie j'ai constaté qu'il y avait au moins deux sortes de personnes. Ceux qui aident, ou qui donnent, et ceux qu'ils estiment que tout ce que fait l'autre, c'est pour eux (et avec l'ingratitude avec). Y aurait-il des personnes d'un autre forum pour un autre langage qui viendrait ici pour démolir Panoramic? D'où ils viennent ces gens? Où étaient-ils avant? On peut savoir?
Et pour les autres? Chacun a son centre d'intérêt, j'en conviens. Mais combien de fois j'ai laissé un code de côté quand je pouvais pour jeter un oeil sur celui d'un autre qui proposait le sien, alors que je n'étais pas vraiment intéressé. Et cela par politesse. Car je sais par expérience qu'ignorer le travail d'un autre, c'est vraiment pire qu'une engueulade. C'est comme si vous le considérez comme un moins que rien.

Il y a quelqu'un qui doit se sentir seul dans son coin, je pense à Nicola et je me tate pour lui tenir compagnie.
J'espère que pour Jack, les choses vont s'améliorer. J'en arrive à penser qu'il serait bon qu'il y ait un MD qui vienne mettre ses pieds ici.
Qu'elle dommage de d'avoir des propos négatifs, et être obligé de devoir intervenir pour remettre un peu d'ordre, ou pour que la sérénité revienne.
Revenir en haut Aller en bas
carpathe




Nombre de messages : 14
Age : 73
Localisation : Pres Toulouse
Date d'inscription : 28/02/2012

Panorabrique Empty
MessageSujet: Reponse au désolé   Panorabrique EmptyVen 2 Mar 2012 - 19:44

Mon cher désolé,quand on ne comprend pas,on se tait,on écoute,on regarde,on analyse les faits et les propos.Tu veux savoir qui je suis et d'ou je viens.Je vais te le dire:Je suis celui qui par les conseils avisés de quelqu'un qui sait beaucoup de choses,va dissuader quelqu'un de faire une enorme bétise.Qui va à coup sur lui couter cher ,car il n'a pas tenu compte d'un premier avertissement.Je doute que cette description t'apporte éclaircissement.Car tu n'a pas analysé,ni les faits,ni les propos.D'ou je viens,ça n'a pas grand interet.Sache seulement une chose,c'est que j'oeuvre pour le bien.Et que j'ai la plus grande admiration pour le projet de Jack.J'espere que cela te rassure.Sache également qu'une fréquentation excessive du web rend parano.Reste calme et bois frais.A+
Revenir en haut Aller en bas
Contenu sponsorisé





Panorabrique Empty
MessageSujet: Re: Panorabrique   Panorabrique Empty

Revenir en haut Aller en bas
 
Panorabrique
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Panorabrique 3D
» Panorabrique pour Android

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les jeux faits avec Panoramic-
Sauter vers: