Mars 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Calendrier |
|
| | Panorabriques à la mode des menus | |
| | |
Auteur | Message |
---|
papydall
Nombre de messages : 6985 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Panorabriques à la mode des menus Ven 17 Aoû 2012 - 12:12 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: 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 | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: 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é ) - 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 | |
| | | papydall
Nombre de messages : 6985 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Panorabriques à la mode des menus Sam 18 Aoû 2012 - 1:43 | |
| | |
| | | Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 18 Aoû 2012 - 2:08 | |
| | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: 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. | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: 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) | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: 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).
| |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 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... | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: 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) | |
| | | Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 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 ? | |
| | | bignono
Nombre de messages : 1127 Age : 66 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: 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 | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Panorabriques à la mode des menus Sam 18 Aoû 2012 - 10:22 | |
| Tu n'as qu'à jouer un peu Klaus 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 | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: 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 | |
| | | Contenu sponsorisé
| Sujet: Re: Panorabriques à la mode des menus | |
| |
| | | | Panorabriques à la mode des menus | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |