FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Calculatrice
par papydall Hier à 22:54

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Mer 19 Sep 2018 - 15:58

» Planétarium virtuel.
par Pedro Alvarez Mer 19 Sep 2018 - 9:28

» Demande pour Jack concernant PanExpress
par Marc Mar 18 Sep 2018 - 23:56

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Orbites de l’ensemble de Mandelbrot
par Jean Claude Lun 10 Sep 2018 - 21:08

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Panorabriques à la mode des menus

Aller en bas 
Aller à la page : Précédent  1, 2
AuteurMessage
papydall

avatar

Nombre de messages : 5991
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Panorabriques à la mode des menus   Ven 17 Aoû 2012 - 12:12

Parfois, me vient à l’esprit, une idée…heu….un peu …..saugrenue ! monkey

Dans ce jeu, il n’y a ni fichier à ouvrir, ni fichier à charger, ni fichier à enregistrer. clown
Dans ce cas, pourquoi donner à un SUB_MENU le CAPTION no%, "FICHIER" Question
Il est plus judicieux de faire CAPTION no%, "Jeu" Exclamation
Ha Ha la belle trouvaille !!
cheers cheers sunny sunny
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Panorabriques à la mode des menus   Ven 17 Aoû 2012 - 21:12

OK Papydall, je change .. Bon, je vais réfléchir et essayer de faire un truc pour 2 ou 3 options Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 1:21

Bon, à moins que quelqu'un sache faire du son sans ralentir le jeu, je ne le garderais pas.
Je mais le source du jeu avec son, mais du coup, je trouve que ça donne un aspect saccadé au jeu que je n'aime pas.
Perso, je virrerais les sons pour avoir une meilleure fluidité (sauf si quelqu'un me dit comment les garder et garder la fluidité Wink )
Code:
' Panorabrique V2 par Jean-Charles (Aout 2012)
'
' Bon après quelques mois, je pense qu'il est bon de reprendre ses vieux programmes
' et de les perfectionner un peu
'
' Objectif de cette version: structurer et commenter mieux
' Enrichir et améliorer un peu le jeu

  label labels : gosub labels
  gosub constantes
  gosub variables
  gosub donnees
  gosub initialisations
  gosub form0
  gosub menu
  gosub GUI
end

labels:
  label constantes, variables, donnees
  label form0, menu, GUI, initialisations
  label sortir,start, tick, restart, key
  label config, close_config, defaut, aide, close_aide
  label apropos, close_apropos, change_config, stopit
  label Lance_balle, Fin, Dessine_briques, Trace_brique
return

constantes:
  dim version$ : version$ = "V02.00"
  dim date_cre$ : date_cre$ = "15 Août 2012"
  dim taille% : taille% = 25 : ' taille des cases
  dim speed% : speed% = 30  : ' milli-secondes entre chaque mouvement
  dim Nb_b_ligne : Nb_b_ligne = 7  : ' Nombre de lignes de briques
  dim hauteur_b, largeur_b : largeur_b=1.55 :  hauteur_b=0.75
  dim Nb_couleur%: Nb_couleur% = 18 : ' Nombre de couleurs définies
  dim M1% : M1% = 0 - 1
return

variables:
  dim no%, no1%, no2% : ' Numméro d'objets temporaires
  dim w%, h%, px%, py%: ' Largeur, Hauteur, Position en x et en y de la fenêtre 0
  dim i%, j%, k%, n%, s$ : ' Déclaration de variables temporaires diverses
  dim no_timer%, no_apropos%, no_aide%, no_config% : ' Numéro des objets importants utilisés
  dim no_config_v%, no_config_speed%          : ' Timer, numéro des fenêtres, ...
  dim no_stop%, no_play%, no_start%
  dim xpad        : ' Position de la souris
  dim s, vies    : ' Score et nombre de balles restantes
  dim xball,zball : ' position de la balle
  dim dx,dz      : ' direction de la balle
  dim vx,vz,v    : ' vitesse de la balle
  dim largeur_r  : ' Largeur de la raquette
  dim Nb_lignes  : ' Nombre de lignes de briques
  dim Nb_briques_restantes : ' Compte combien il reste de briques à détruire pour finir le niveau
  dim Nb_vies    : ' Définit le nombre de balles au démarrage
  dim Hauteur_cam : ' Définit la hauteur de la caméra
  dim Pause%      : ' Bascule pour mettre le jeu en pause ou reprendre
  dim Niveau%    : ' Niveau en cours
  dim t_c(Nb_couleur%,3)  : ' Gère les couleurs par un tableau de couleurs avec 3 composantes
return

donnees:
  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
return

form0:
  ' Paramètrage de la fenêtre principale du jeu
  left 0,px% : top 0,py% : ' Position initale de la fenêtre 0
  width 0, w% : 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 Hauteur_cam : 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
  on_key_down 0,key
  no% = no% + 1
return

menu:
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Partie"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : no_start% = no%
    caption no%,"Nouveau jeu" : on_click no%,start
  no% = no% + 1 : sub_menu no% : parent no%,no2% : no_stop% = no%
    caption no%,"Stop" : inactive no% : on_click no%,stopit
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Sortir" : on_click no%,sortir
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Options"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Configuration" : on_click no%,config
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Défauts" : on_click no%,defaut
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Aide"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Mode d'emploi" : on_click no%,aide
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"A-propos" : on_click no%,apropos
  return

GUI:

  ' Création des objets (balle, murs, raquette...)
  ' Numéro des objets 3D: 1=ball; 2= back wall; 3= left wall;  4 = rigth wall; 5=pad; 6=score

  hide 1
  3d_sphere 1, 0.3 : 3d_color 1,0,0,0 : 3d_collision_as_sphere 1 : ' Balle

  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_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


  no% = no% + 1 : timer no% : no_timer% = no% : ' Definit le timer principal du jeu
  timer_interval no_timer%,speed% : on_timer no%,tick : timer_off no%

  no% = no% + 1 : form no% : hide no% : no_apropos% = no% : ' Définit la fenêtre "A propos"
    top no%,200 : left no%,200 : caption no%,"A-propos"
    on_close no%,close_apropos
  no% = no% + 1 : alpha no% : parent no%,no_apropos%
    top no%,20 : left no%,20 : font_size no%,12
    s$ = "Jeu PANORABRIQUE 3D"+chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "Version: "+version$+chr$(13)+chr$(10)
    s$ = s$ + "Du: "+date_cre$+chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "Auteur: Jean-Charles"+chr$(13)+chr$(10)+chr$(10)
    caption no%,s$

  no% = no% + 1 : form no% : hide no% : no_aide% = no% : width no%,450 : ' Définit la fenêtre du Mode d'emploi
  caption no%,"Mode d'emploi" : on_close no%,close_aide
  no% = no% + 1 : alpha no% : parent no%,no_aide%
    top no%,20 : left no%,20 : font_size no_aide%,10 : k% = 2
    s$ = "Bienvenu dans PANORABRIQUE 3D !" + chr$(13)+chr$(10)+chr$(10) : k%=k%+1
    s$ = s$ + "Vous dirigez la raquette (rectangle gris) à l'aide de " + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "la souris. (Si vous déplacez la souris à droite, " + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "la raquette va à droite et réciproquement." + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "Vous devez faire rebondir la balle sur la raquette pour" + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + " éviter qu'elle ne tombe" + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "La balle rebondit sur la raquette et les murs." + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "La balle brise les briques et rebondit."  + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "Vous marquez des points en brisant les briques." + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "Quand il ne reste plus de briques, vous passez au" + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "niveau suivant..." + chr$(13)+chr$(10)+ chr$(13)+chr$(10): k%=k%+2
    s$ = s$ + "Cliquez pour lancer la balle" + chr$(13)+chr$(10)+ chr$(13)+chr$(10): k%=k%+2
    s$ = s$ + "Appuyez sur une touche quelconque pour mettre le jeu en pause": k%=k%+2
    top no%-1,150 : left no%-1,200 : height no%-1,20*k%
    caption no%,s$

  no% = no% + 1 : form no% : hide no% : no_config% = no% : ' Définit la fenêtre de configuration
    top no%,200 : left no%,200 : caption no%,"Configuration"
    width no%,450
    on_close no%,close_config

    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,20 : left no%,10 : caption no%,"Vitesse de la balle :"
    no% = no% + 1 : edit no% : parent no%,no_config% : no_config_v% = no%
      top no%,20 : left no%,120 : width no%,30
      text no%,str$(v)
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,20 : left no%,160 : caption no%,"(1 (très lent) à 10 (très rapide))"
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,50 : left no%,10 : caption no%,"Vitesse du jeu (en ms):"
    no% = no% + 1 : edit no% : parent no%,no_config% : no_config_speed% = no%
      top no%,50 : left no%,120 : width no%,30
      text no%,str$(speed%)
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,50 : left no%,160 : caption no%,"(10 (très rapide) à 100 (très lent))"
    no% = no% + 1 : alpha no% : parent no%,no_config%
  return

initialisations:
  w%= 690 : h% = 450  : ' Largeur et Hauteur de la fenêtre 0
  px% = 0 : py% = 0  : ' Position en x et en y de la fenêtre 0
  for i% = 1 to Nb_couleur% : ' Charge le tableau des couleurs avec leur 3 composantes
    for j% = 1 to 3 : read k% : t_c(i%,j%)=k% : next j%
  next i%

  largeur_r = 3.6  : ' largeur par défaut de la raquette
  v = 3            : ' vitesse par défaut
  Nb_vies = 3      : ' 3 balles en stock
  Hauteur_cam = 7  : ' Hauteur par défaut de la caméra
return

sortir:
  timer_off no_timer%
  terminate

defaut:
  v = 3  : ' Rétablir les valeurs par défaut du jeu
  Nb_vies = 3
  largeur_r = 3.6
  Hauteur_cam = 7
  gosub change_config
return


stopit:
  timer_off no_timer%
  inactive no_stop%
  active no_start%
  midi_off
return

start:
  midi_on
  active no_stop%
  inactive no_start%
  show 1
  Pause% = 0
  vies = Nb_vies  : ' Initialise le compteur de balles restantes
  vx = 0.10 + v*0.05 : vz = 0.10 + v*0.05
  s=0        : ' Score à 0
  niveau%= 0

restart:
  timer_off no_timer%
  if O3D_OBJECT_EXISTS(5) = 1 then 3D_Delete 5
  if largeur_r > 0.75 then largeur_r = largeur_r - 0.1
  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
  niveau% = niveau% + 1
  Nb_lignes = 6: gosub Dessine_briques
  caption 0,"PANORABRIQUE 3D - Niveau actuel :" + str$(Niveau%)
  gosub Lance_balle
  timer_on no_timer%
return

Dessine_briques:
  if variable("t_br")=1 then free t_br
  dim t_br(Nb_lignes*Nb_b_ligne,5)
  Nb_briques_restantes = 0
  For i%= 1 to Nb_lignes
    For j% = 1 to Nb_b_ligne
      Nb_briques_restantes=Nb_briques_restantes+1
      t_br(Nb_briques_restantes,1) = 1    : ' Brique non cassée
      t_br(Nb_briques_restantes,5) = 100  : ' Valeur en point de la brique
      t_br(Nb_briques_restantes,2) = t_c(5+i%,1): ' Valeur rouge
      t_br(Nb_briques_restantes,3) = t_c(5+i%,2): ' Valeur verte
      t_br(Nb_briques_restantes,4) = t_c(5+i%,3): ' Valeur bleue
      gosub Trace_brique
    Next j%
  Next i%
return

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

Lance_balle:
  zball=7 : xball= xpad : 3d_x_position 1,xball : 3d_z_position 1,zball
  while pause% = 0
      if (mouse_left_up(1)=1 and mouse_left_down(1)=0) then exit_while
  end_while
  dx=1.5-rnd(1):dz=-1
return

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

  ' Teste le rebond sur les bords
  xball=xball+dx*vx
  if xball > 7  then xball=7 : dx=-1.5 + rnd (1) : Midi_Instrument 24 : Midi_play 60,10 : ' Rebond à droite
  if xball < -7 then xball=-7: dx= 1.5 - rnd(1)  : Midi_Instrument 24 : Midi_play 60,10 : ' Rebond à gauche
  3d_x_position 1,xball

  zball=zball+dz*vz
  if zball < -7 then zball=-7:dz=1 : Midi_Instrument 24 : Midi_play 60,10 : ' 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)
    Midi_Instrument 24 : Midi_play 60,10
  end_if


  ' Teste si la balle touche une brique
  k%=1
  For i%= 1 to Nb_lignes
    For j% = 1 to Nb_b_ligne
      If O3D_OBJECT_EXISTS(50+k%) = 1
        If O3D_collision (1,50+k%) = 1
          3D_Delete 50+k%
          Midi_Instrument 127 : Midi_play 60,10
          Nb_briques_restantes = Nb_briques_restantes - 1
          s = s + t_br(k%,5)
          dz = dz*M1% : ' on inverse la direction en Z
        End_if
      End_if
      k%=k%+1
    Next j%
  Next i%

  if vies > -1
  if vies > 1
      3d_text_change 6,"Score: " +str$(s) + "      Balles: "+str$(vies)
  else
      3d_text_change 6,"Score: " +str$(s) + "      Balle : "+str$(vies)
  end_if
  end_if
  if zball>= 8
    if vies > 0
      vies=vies-1 : wait 200 : gosub Lance_balle
    else
      goto fin
    end_if
  end_if
  if Nb_briques_restantes = 0
    Message "Bravo, niveau suivant ..."
    gosub restart
  end_if

  3d_z_position 1,zball
  timer_on no_timer%
return

key:
if pause% = 0
  pause% = 1
  caption 0,"PANORABRIQUE 3D - jeu en pause -"
  timer_off no_timer%
else
  pause% = 0
  caption 0,"PANORABRIQUE 3D - Niveau actuel :" + str$(Niveau%)
  timer_on no_timer%
end_if

return


config:
  inactive 0
  show no_config%
return

close_config:
  s$ = text$(no_config_v%)
  if numeric(s$)=0
    message "La vitesse de la balle est invalide !"
    text no_config_v%,str$(v%)
    active 0
    return
  end_if
  k% = val(s$)
  if (k%<1) or (k%>10)
    message "La vitesse de la balle est invalide !"
    text no_config_v%,str$(v%)
    active 0
    return
  end_if
  s$ = text$(no_config_speed%)
  if numeric(s$)=0
    message "La vitesse du jeu est invalide !"
    text no_config_speed%,str$(speed%)
    active 0
    return
  end_if
  n% = val(s$)
  if (n%<10) or (n%>100)
    message "La vitesse du jeu est invalide !"
    text no_config_speed%,str$(speed%)
    active 0
    return
  end_if
  v = k%
  speed%=n%
  gosub change_config
  active 0
return

change_config:
  timer_interval no_timer%, speed%
  vx = 0.10 + v*0.05 : vz = 0.10 + v*0.05
return

aide:
  inactive 0
  show no_aide%
return

close_aide:
  active 0
return

apropos:
  inactive 0
  show no_apropos%
return

close_apropos:
  active 0
return

fin:
  gosub stopit
  message "Dommage, vous avez épuisé toutes vos balles"
  midi_off
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5991
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 1:43

C’est très bien ce que tu as fais.
Certes ce n’est pas parfait, mais ça fait sortir les connaisseurs
de leur antre pour apporter la solution si solution il y a !

cheers lol! lol! lol! lol! cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 18 Aoû 2012 - 2:08

Je confirme, on dirait que ta bille danse le smurf.... Laughing Laughing Laughing

heu...je dirai même plus ... lol! lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 3021
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 6:21

oui c'est intéressant et ca a le mérite d'etre creusé

les jeux pourraient etre beaucoup plus sympa.
encore un casse-tete de plus a resoudre. confused Suspect drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 8:35

Peut-être que Klaus ou Jack pouuront me dire ce que je ne fais pas correctement ou comment je devrais faire pour faire des bruitage qui ne ralentissent pas le jeu (je ne doit peut-être pas utiliser du midi mais bon, je ne voulais pas faire appel à des fichiers externes)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Minibug

avatar

Nombre de messages : 3021
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 8:57

oui je pense qu'il serait plus facile d'utiliser des fichiers wav.

je crois qu'en plus klaus a developpé des dll pour les executer dans panoranic (il me semble...)
reste a voir si c'est adapté a l'usage d'un jeu (pour ne pas provoquer de ralentissements).

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 9:19

Est-ce qu'avec la commande PLAY, ça ralentit le jeu ? Cette commande lance le son, mais revient immédiatement et laisse le son jouer en parallèle, sans pénaliser Panoramic.

Une autre solution consisterait à utiliser la commande EXECUTE pour lancer un média player quelconque avec le son choisi. Tu serais alors totalement indépendant de Panoramic.

Et si ces solutions ne t'aident pas, le pourrais étudier une solution personnalisée, si tu me donnes un peu plus d'informations sur ce que tu veux faire exactement...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 9:24

En fait je voudrais simplement jouer des sons quand certains événements se produisent sans ralentir le jeu ni avoir recours à des fichiers externes inutiles (mais bon ne fait pas de DLL, s'il n'y a pas de solution purement Panoramic, je mettrais 2 ou 3 wav et puis c'est tout, mais bon c'est dommage d'avoir à faire télécharger des sons alors que de petites notes auraient suffit)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 9:42

C'est vrai qu'avec la commande MIDI_PLAY, Panoramic attend la fin du son pour continuer; contrairement à la commande PLAY. Mais si c'est juste un petit son, une ou deux notes simple genre croche ou double croche, est-ce que l'attente est vraiment pénalisante ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
bignono

avatar

Nombre de messages : 1127
Age : 61
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 10:15

Bonjour à tous,
Comme le dit Klaus, la commande midi_play bloque le programme en attendant la fin du son.
Il n'y a que la commande play avec un fichier sound en wav ou mp3 qui permet de jouer un son en parallèle du programme sans le bloquer. Ce qui oblige à mettre des fichiers supplémentaires pour un petit jeu.
Jicehel, ce que tu peux faire, c'est récupérer sur mon web dev les petits fichiers sons de mon métronome ou de ma drum_box!
Une autre solution ce serait peut-être d'utiliser les commandes beep, beep_error, beep_exclamation, beep_information ou beep_question des sons systèmes de windows, mais là, tout dépend des règlages que chacun a fait dans windows.
A plus Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 10:22

Tu n'as qu'à jouer un peu Klaus Wink Oui, c'est pénible, j'ai mis des note courte mais ça saccade quand même le jeu. La balle n'a plus un mouvement fluide. toutefois en trichant un peu, ça devient tolérable. J'ai fais une petite modif pour fluidifié un peu le jeu quand on joue une triple croche. La balle est légèrement ralenti à ce moment la mais c'est beaucoup moins choquant et on peu garder le son:
Code:
' Panorabrique V2 par Jean-Charles (Aout 2012)
'
' Bon après quelques mois, je pense qu'il est bon de reprendre ses vieux programmes
' et de les perfectionner un peu
'
' Objectif de cette version: structurer et commenter mieux
' Enrichir et améliorer un peu le jeu

  label labels : gosub labels
  gosub constantes
  gosub variables
  gosub donnees
  gosub initialisations
  gosub form0
  gosub menu
  gosub GUI
end

labels:
  label constantes, variables, donnees
  label form0, menu, GUI, initialisations
  label sortir,start, tick, restart, key
  label config, close_config, defaut, aide, close_aide
  label apropos, close_apropos, change_config, stopit
  label Lance_balle, Fin, Dessine_briques, Trace_brique
return

constantes:
  dim version$ : version$ = "V02.00"
  dim date_cre$ : date_cre$ = "15 Août 2012"
  dim speed% : speed% = 2  : ' milli-secondes entre chaque tour
  dim Nb_b_ligne : Nb_b_ligne = 7  : ' Nombre de lignes de briques
  dim hauteur_b, largeur_b : largeur_b=1.55 :  hauteur_b=0.75
  dim Nb_couleur%: Nb_couleur% = 18 : ' Nombre de couleurs définies
  dim M1% : M1% = 0 - 1
return

variables:
  dim no%, no1%, no2% : ' Numméro d'objets temporaires
  dim w%, h%, px%, py%: ' Largeur, Hauteur, Position en x et en y de la fenêtre 0
  dim i%, j%, k%, n%, s$ : ' Déclaration de variables temporaires diverses
  dim no_timer%, no_apropos%, no_aide%, no_config% : ' Numéro des objets importants utilisés
  dim no_config_v%, no_config_speed%          : ' Timer, numéro des fenêtres, ...
  dim no_stop%, no_play%, no_start%
  dim xpad        : ' Position de la souris
  dim s, vies    : ' Score et nombre de balles restantes
  dim xball,zball : ' position de la balle
  dim dx,dz      : ' direction de la balle
  dim vx,vz,v    : ' vitesse de la balle
  dim largeur_r  : ' Largeur de la raquette
  dim Nb_lignes  : ' Nombre de lignes de briques
  dim Nb_briques_restantes : ' Compte combien il reste de briques à détruire pour finir le niveau
  dim Nb_vies    : ' Définit le nombre de balles au démarrage
  dim Hauteur_cam : ' Définit la hauteur de la caméra
  dim Pause%      : ' Bascule pour mettre le jeu en pause ou reprendre
  dim Niveau%    : ' Niveau en cours
  dim Attente%    : ' Pour lisser le mouvement attendre si on ne joue pas de son
  dim t_c(Nb_couleur%,3)  : ' Gère les couleurs par un tableau de couleurs avec 3 composantes
return

donnees:
  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
return

form0:
  ' Paramètrage de la fenêtre principale du jeu
  left 0,px% : top 0,py% : ' Position initale de la fenêtre 0
  width 0, w% : 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 Hauteur_cam : 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
  on_key_down 0,key
  no% = no% + 1
return

menu:
  no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Partie"
  no% = no% + 1 : sub_menu no% : parent no%,no2% : no_start% = no%
    caption no%,"Nouveau jeu" : on_click no%,start
  no% = no% + 1 : sub_menu no% : parent no%,no2% : no_stop% = no%
    caption no%,"Stop" : inactive no% : on_click no%,stopit
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"-"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Sortir" : on_click no%,sortir
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Options"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Configuration" : on_click no%,config
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Défauts" : on_click no%,defaut
  no% = no% + 1 : sub_menu no% : parent no%,no1% : no2% = no%
    caption no%,"Aide"
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"Mode d'emploi" : on_click no%,aide
  no% = no% + 1 : sub_menu no% : parent no%,no2%
    caption no%,"A-propos" : on_click no%,apropos
  return

GUI:
  ' Création des objets (balle, murs, raquette...)
  ' Numéro des objets 3D: 1=ball; 2= back wall; 3= left wall;  4 = rigth wall; 5=pad; 6=score

  hide 1
  3d_sphere 1, 0.3 : 3d_color 1,0,0,0 : 3d_collision_as_sphere 1 : ' Balle

  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_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

  no% = no% + 1 : timer no% : no_timer% = no% : ' Definit le timer principal du jeu
  timer_interval no_timer%,speed% : on_timer no%,tick : timer_off no%

  no% = no% + 1 : form no% : hide no% : no_apropos% = no% : ' Définit la fenêtre "A propos"
    top no%,200 : left no%,200 : caption no%,"A-propos"
    on_close no%,close_apropos
  no% = no% + 1 : alpha no% : parent no%,no_apropos%
    top no%,20 : left no%,20 : font_size no%,12
    s$ = "Jeu PANORABRIQUE 3D"+chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "Version: "+version$+chr$(13)+chr$(10)
    s$ = s$ + "Du: "+date_cre$+chr$(13)+chr$(10)+chr$(10)
    s$ = s$ + "Auteur: Jean-Charles"+chr$(13)+chr$(10)+chr$(10)
    caption no%,s$

  no% = no% + 1 : form no% : hide no% : no_aide% = no% : width no%,450 : ' Définit la fenêtre du Mode d'emploi
  caption no%,"Mode d'emploi" : on_close no%,close_aide
  no% = no% + 1 : alpha no% : parent no%,no_aide%
    top no%,20 : left no%,20 : font_size no_aide%,10 : k% = 2
    s$ = "Bienvenu dans PANORABRIQUE 3D !" + chr$(13)+chr$(10)+chr$(10) : k%=k%+1
    s$ = s$ + "Vous dirigez la raquette (rectangle gris) à l'aide de " + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "la souris. (Si vous déplacez la souris à droite, " + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "la raquette va à droite et réciproquement." + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "Vous devez faire rebondir la balle sur la raquette pour" + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + " éviter qu'elle ne tombe" + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "La balle rebondit sur la raquette et les murs." + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "La balle brise les briques et rebondit."  + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "Vous marquez des points en brisant les briques." + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "Quand il ne reste plus de briques, vous passez au" + chr$(13)+chr$(10): k%=k%+1
    s$ = s$ + "niveau suivant..." + chr$(13)+chr$(10)+ chr$(13)+chr$(10): k%=k%+2
    s$ = s$ + "Cliquez pour lancer la balle" + chr$(13)+chr$(10)+ chr$(13)+chr$(10): k%=k%+2
    s$ = s$ + "Appuyez sur une touche quelconque pour mettre le jeu en pause": k%=k%+2
    top no%-1,150 : left no%-1,200 : height no%-1,20*k%
    caption no%,s$

  no% = no% + 1 : form no% : hide no% : no_config% = no% : ' Définit la fenêtre de configuration
    top no%,200 : left no%,200 : caption no%,"Configuration"
    width no%,450
    on_close no%,close_config

    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,20 : left no%,10 : caption no%,"Vitesse de la balle :"
    no% = no% + 1 : edit no% : parent no%,no_config% : no_config_v% = no%
      top no%,20 : left no%,120 : width no%,30
      text no%,str$(v)
    no% = no% + 1 : alpha no% : parent no%,no_config%
      top no%,20 : left no%,160 : caption no%,"(1 (très lent) à 10 (très rapide))"
  return

initialisations:
  w%= 690 : h% = 450  : ' Largeur et Hauteur de la fenêtre 0
  px% = 0 : py% = 0  : ' Position en x et en y de la fenêtre 0
  for i% = 1 to Nb_couleur% : ' Charge le tableau des couleurs avec leur 3 composantes
    for j% = 1 to 3 : read k% : t_c(i%,j%)=k% : next j%
  next i%

  largeur_r = 3.6  : ' largeur par défaut de la raquette
  v = 3            : ' vitesse par défaut
  Nb_vies = 3      : ' 3 balles en stock
  Hauteur_cam = 7  : ' Hauteur par défaut de la caméra
return

sortir:
  timer_off no_timer%
  terminate

defaut:
  v = 3  : ' Rétablir les valeurs par défaut du jeu
  Nb_vies = 3
  largeur_r = 3.6
  Hauteur_cam = 7
  gosub change_config
return

stopit:
  timer_off no_timer%
  inactive no_stop%
  active no_start%
return

start:
  midi_on
  active no_stop%
  inactive no_start%
  show 1
  Pause% = 0
  vies = Nb_vies  : ' Initialise le compteur de balles restantes
  vx = 0.10 + v*0.05 : vz = 0.10 + v*0.05
  s=0        : ' Score à 0
  niveau%= 0

restart:
  timer_off no_timer%
  if O3D_OBJECT_EXISTS(5) = 1 then 3D_Delete 5
  if largeur_r > 0.75 then largeur_r = largeur_r - 0.1
  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
  niveau% = niveau% + 1
  Nb_lignes = 6: gosub Dessine_briques
  caption 0,"PANORABRIQUE 3D - Niveau actuel :" + str$(Niveau%)
  gosub Lance_balle
  timer_on no_timer%
return

Dessine_briques:
  if variable("t_br")=1 then free t_br
  dim t_br(Nb_lignes*Nb_b_ligne,5)
  Nb_briques_restantes = 0
  For i%= 1 to Nb_lignes
    For j% = 1 to Nb_b_ligne
      Nb_briques_restantes=Nb_briques_restantes+1
      t_br(Nb_briques_restantes,1) = 1    : ' Brique non cassée
      t_br(Nb_briques_restantes,5) = 100  : ' Valeur en point de la brique
      t_br(Nb_briques_restantes,2) = t_c(5+i%,1): ' Valeur rouge
      t_br(Nb_briques_restantes,3) = t_c(5+i%,2): ' Valeur verte
      t_br(Nb_briques_restantes,4) = t_c(5+i%,3): ' Valeur bleue
      gosub Trace_brique
    Next j%
  Next i%
return

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

Lance_balle:
  zball=7 : xball= xpad : 3d_x_position 1,xball : 3d_z_position 1,zball
  while pause% = 0
      if (mouse_left_up(1)=1 and mouse_left_down(1)=0) then exit_while
  end_while
  dx=1.5-rnd(1):dz=-1
return

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

  ' Teste le rebond sur les bords
  xball=xball+dx*vx
  if xball > 7      : ' Rebond à droite
    xball=7 : dx=-1.5 + rnd (1)
    beep_information
  else
    if xball < -7  : ' Rebond à gauche
      xball=-7: dx= 1.5 - rnd(1)
      beep_information
    else
      Attente% = 1
    end_if
  end_if
  3d_x_position 1,xball

  zball=zball+dz*vz
  if zball < -7 then zball=-7:dz=1 : beep_information : ' 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)
    beep
  end_if

  ' Teste si la balle touche une brique
  k%=1
  For i%= 1 to Nb_lignes
    For j% = 1 to Nb_b_ligne
      If O3D_OBJECT_EXISTS(50+k%) = 1
        If O3D_collision (1,50+k%) = 1
          3D_Delete 50+k%
          Attente% = 0
          Midi_Instrument 127 : Midi_play 60,10
          Nb_briques_restantes = Nb_briques_restantes - 1
          s = s + t_br(k%,5)
          dz = dz*M1% : ' on inverse la direction en Z
        End_if
      End_if
      k%=k%+1
    Next j%
  Next i%

  if vies > -1
  if vies > 1
      3d_text_change 6,"Score: " +str$(s) + "      Balles: "+str$(vies)
  else
      3d_text_change 6,"Score: " +str$(s) + "      Balle : "+str$(vies)
  end_if
  end_if
  if zball>= 8
    if vies > 0
      vies=vies-1 : wait 100 : gosub Lance_balle
    else
      goto fin
    end_if
  end_if
  if Nb_briques_restantes = 0
    Message "Bravo, niveau suivant ..."
    gosub restart
  end_if

  3d_z_position 1,zball
  If Attente%=1 then wait 30
  timer_on no_timer%
return

key:
if pause% = 0
  pause% = 1
  caption 0,"PANORABRIQUE 3D - jeu en pause -"
  timer_off no_timer%
else
  pause% = 0
  caption 0,"PANORABRIQUE 3D - Niveau actuel :" + str$(Niveau%)
  timer_on no_timer%
end_if

return

config:
  inactive 0
  show no_config%
return

close_config:
  s$ = text$(no_config_v%)
  if numeric(s$)=0
    message "La vitesse de la balle est invalide !"
    text no_config_v%,str$(v%)
    active 0
    return
  end_if
  k% = val(s$)
  if (k%<1) or (k%>10)
    message "La vitesse de la balle est invalide !"
    text no_config_v%,str$(v%)
    active 0
    return
  end_if
  v = k%
  gosub change_config
  active 0
return

change_config:
  vx = 0.10 + v*0.05 : vz = 0.10 + v*0.05
return

aide:
  inactive 0
  show no_aide%
return

close_aide:
  active 0
return

apropos:
  inactive 0
  show no_apropos%
return

close_apropos:
  active 0
return

fin:
  gosub stopit
  message "Dommage, vous avez épuisé toutes vos balles"
  midi_off
end


Dernière édition par Jicehel le Sam 18 Aoû 2012 - 12:19, édité 4 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Panorabriques à la mode des menus   Sam 18 Aoû 2012 - 10:27

Listing d'avant édité suite à la bonne idée de Bignono d'utiliser les beep... J'avais zappé les beep. Il a de bonnes idées notre Bignono. Merci Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Panorabriques à la mode des menus   

Revenir en haut Aller en bas
 
Panorabriques à la mode des menus
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Mode TRACE
» Boucle de menus débile
» Macro sons/autorail en mode horaire
» Mode "trace" sur Nuvi 1490
» connexion permanente en mode GPS par l'USB

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: