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
» StratégoV8 et V9
par Minibug Aujourd'hui à 21:47

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 21:28

» Déformation d'image en trapèze
par mindstorm Aujourd'hui à 21:06

» Mah-Jong américain
par Jean Claude Hier à 19:37

» Problème avec Deepl
par Klaus Hier à 0:34

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» HVIEWER
par Klaus Mer 10 Jan 2018 - 2:06

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

» Bonne fêtes de fin d'année ! Meilleurs Vœux 2018 !
par Jicehel Jeu 4 Jan 2018 - 17:28

» Mah-Jong international
par jjn4 Jeu 4 Jan 2018 - 16:55

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 La guerre des étoiles

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
jjn4

avatar

Nombre de messages : 1656
Date d'inscription : 13/09/2009

MessageSujet: La guerre des étoiles   Mar 24 Jan 2017 - 18:21

Non, non, inutile d'aller chercher votre casque de réalité virtuelle
et votre sabre laser de Djédaï, Gargarilioramic est une variante futuriste
de la bataille navale, mais en 3D et se situant dans l'espace intersidéral,
comme Star-War, avec des soucoupes volantes et des aliens.
Vous allez être projeté dans le temps et naviguer en pleine science-fiction.
Et votre témérité n'aura d'égal que votre habileté au combat spatial.
Alors, gare aux gargariliens !
(Psst: ne négligez pas de lire le scénario,
c'est toujours utile pour éviter de ne rien y comprendre...)
Code:
rem ' Gargarilioramic - La guerre des étoiles - par jjn4 - le 23/01/2017
   dim CXS%(12) , CYS%(12) , CZS%(12) : rem Coordonnées des Soucoupes volantes
   dim CXG%(12) , CYG%(12) , CZG%(12) : rem Coordonnées des vaisseaux Gargar
   dim DDD$ : rem Dialogue de Début provenant des Datas
   dim FD1$(3) : rem Fins des dialogues 1
   dim OPS% : rem Ordre de Placement des Soucoupes volantes
   dim TSA$(29) : rem Texte du Scénario de l`Aide
   dim TTB$(3) : rem TiTre des Bandeaux
   dim VER$ : rem Titre du programme et VERsion
   dim VM1% , VM2% , VM3% , VM4$: rem Variables globales à utilisation Multiple
   VER$="Gargarilioramic   -  par jjn4   -   Ver-230117.1.0"
   label clic : rem Redirection de tous les on-click
  
rem Lecture des datas
   for VM1%=1 to 3 : read FD1$(VM1%) : next VM1%
   read DDD$
   for VM1%=1 to 3 : read TTB$(VM1%) : next VM1%
   for VM1%=1 to 29 : read TSA$(VM1%) : next VM1%
  
rem Form0
   width 0,1360
   height 0,715
   caption 0,TTB$(3)+VER$

picture 5 : rem Construction du fond spatial étoilé
   width 5,900
   height 5,655
   color 5,0,0,0
   2d_target_is 5
   2d_pen_color 255,255,255
   for VM1%=1 to 500
      2d_point int(rnd(900))+1,int(rnd(690))+1
   next VM1%
   for VM1%=1 to 40
      2d_circle int(rnd(900))+1,int(rnd(690))+1,2
   next VM1%
   file_save 5,"Gargar-Ciel étoilé.bmp"
   hide 5
  
scene3d 10 : rem Construction de la scène tridimensionnelle de combat spatial
   color 10,0,0,0
   left 10,15
   width 10,1185
   height 10,655
   3d_skybox 1
   3d_load_texture_front 1,"Gargar-Ciel étoilé.bmp"
   3d_load_texture_left 1,"Gargar-Ciel étoilé.bmp"
   3d_load_texture_right 1,"Gargar-Ciel étoilé.bmp"

rem Construction des flottes solaire et gargarilienne
   for VM1%=1 to 12 : rem Soucoupes de 10 à 21 (anneaux) et de 30 à 41 (sphères)
      3d_torus VM1%+9,0.4,0.1
         3d_hide VM1%+9
         3d_x_rotate VM1%+9,90
         3d_color VM1%+9,0,0,60
      3d_sphere VM1%+29,0.3
         3d_hide VM1%+29
         3d_color VM1%+29,0,0,60
   next VM1%
   for VM1%=5 to 8
      3d_color VM1%+9,0,60,0
      3d_color VM1%+29,0,60,0
   next VM1%
   for VM1%=9 to 12
      3d_color VM1%+9,60,0,60
      3d_color VM1%+29,60,0,60
   next VM1%
   for VM1%=1 to 12 : rem Vaisseaux ennemis (sphères) de 50 à 61
      3d_sphere VM1%+49,0.3
         3d_hide VM1%+49
         3d_color VM1%+49,60,0,0
   next VM1%

for VM1%=1 to 2 : rem Boutons de commande de la flotte affichée
   button VM1%*10+10 : rem Boutons 20 et 30
      left VM1%*10+10,1210+65*(VM1%-1)
      top VM1%*10+10,5
      width VM1%*10+10,60
      height VM1%*10+10,60
      font_size VM1%*10+10,40
      font_name VM1%*10+10,"Webdings"
      on_click VM1%*10+10,clic
      inactive VM1%*10+10
next VM1%
caption 20,chr$(128)
caption 30,chr$(33)

rem Affichage de la grille 3D de repérage du tir
   rem Réutilisation de l`objet 5 déjà défini
      color 5,0,0,0
      width 5,125
      height 5,140
      left 5,1210
      top 5,70
      show 5
      grille(5,5,5)
   alpha 35 : rem Affichage des coordonnées de la grille 3D
      left 35,1202
      top 35,115
      caption 35,"0"
   alpha 36
      left 36,1202
      top 36,200
      caption 36,"y"
   alpha 37
      left 37,1307
      top 37,200
      caption 37,"x"
   alpha 38
      left 38,1230
      top 38,65
      caption 38,"z"
  
rem Affichage des Indications de coordonnées (X, Y et Z)
   for VM1%=1 to 3 : rem Objets n° 40, 50 et 60
      alpha VM1%*10+30
         left VM1%*10+30,1210
         top VM1%*10+30,VM1%*35+175
         font_size VM1%*10+30,28
         font_name VM1%*10+30,"Arial"
         caption VM1%*10+30,chr$(87+VM1%)
   next VM1%

rem Affichage des boutons de diminution des coordonnées
   for VM1%=1 to 3 : rem Boutons n° 70, 80 et 90
      button VM1%*10+60
         left VM1%*10+60,1236
         top VM1%*10+60,VM1%*35+180
         width VM1%*10+60,34
         height VM1%*10+60,32
         font_size VM1%*10+60,24
         font_name VM1%*10+60,"Wingdings"
         caption VM1%*10+60,chr$(239)
         inactive VM1%*10+60
         on_click VM1%*10+60,clic
   next VM1%
  
rem Affichage des panels d`indication des coordonnées
   for VM1%=1 to 3 : rem Objets n° 100, 110 et 120
      panel VM1%*10+90
         left VM1%*10+90,1270
         top VM1%*10+90,VM1%*35+180
         width VM1%*10+90,30
         height VM1%*10+90,32
         font_bold VM1%*10+90
         font_size VM1%*10+90,22
         font_name VM1%*10+90,"Arial"
         color VM1%*10+90,255,255,255
         caption VM1%*10+90,"5"
   next VM1%
  
rem Affichage des boutons d`augmentation des coordonnées
   for VM1%=1 to 3 : rem Boutons 130, 140 et 150
      button VM1%*10+120
         left VM1%*10+120,1300
         top VM1%*10+120,VM1%*35+180
         width VM1%*10+120,34
         height VM1%*10+120,32
         font_size VM1%*10+120,24
         font_name VM1%*10+120,"Wingdings"
         caption VM1%*10+120,chr$(240)
         inactive VM1%*10+120
         on_click VM1%*10+120,clic
   next VM1%
  
rem Affichage du bouton de placement des vaisseaux et de tir
   button 160
      left 160,1210
      top 160,383
      width 160,125
      height 160,47
      font_bold 160
      font_size 160,16
      font_name 160,"Arial"
      caption 160,"Placer"
      inactive 160
      on_click 160,clic
      
rem Affichage de la zone de dialogue
   alpha 170 : rem Fond du dialogue
      left 170,1210
      top 170,320
      width 170,125
      height 170,60
      color 170,0,255,255
   alpha 180 : rem Forme du dialogue
      left 180,1212
      top 180,325
      color 180,0,255,255
      caption 180,DDD$+FD1$(1)+chr$(13)+"( faites varier X, Y et Z )"
      
rem Affichage des images des soucoupes à placer : objets-3D n° 70 et 71
   scene3d 190
      left 190,1250
      top 190,434
      width 190,85
      height 190,50
      color 190,0,0,0
      3d_target_is 190
      3d_torus 70,0.4,0.1
         3d_x_rotate 70,90
         3d_color 70,0,0,60
      3d_sphere 71,0.3
         3d_color 71,0,0,60
      3d_target_is 10

rem Affichage des fenêtres d`indication du nombre de vaisseaux des deux camps
   panel 200 : rem Nombre de soucoupes de la fédération solaire
      left 200,1209
      top 200,434
      width 200,39
      height 200,39
      color 200,0,255,255
      font_bold 200
      font_size 200,18
      font_name 200,"Arial"
      caption 200,"4"
      on_click 200,clic
      hint 200,"Cliquez ici"
   panel 210 : rem Nombre de vaisseaux gargariliens
      hide 210
      left 210,1296
      top 210,434
      width 210,39
      height 210,39
      color 210,255,200,200
      font_bold 210
      font_size 210,18
      font_name 210,"Arial"
      caption 210,"12"
   alpha 220 : rem Pancarte sur la nature des panneaux
      hide 220
      left 220,1250
      top 220,435
      width 220,45
      height 220,39
      color 220,255,255,255
   alpha 230 : rem Forme du texte de la pancarte
      hide 230
      left 230,1251
      top 230,440
      font_bold 230
      caption 230,"Nombre"+chr$(13)+"d'OVNI"

rem Affichage du point à cocher pour l`apparition ou non du mode d`emploi
   check 240
      hide 240
      left 240,1210
      top 240,475
      width 240,120
      caption 240,"Ne plus afficher l'aide"
      hint 240,"Ne plus afficher l'aide au démarrage"
      on_click 240,clic
      
rem Affichage des 4 boutons de commandes générales
   for VM1%=1 to 3 : rem Bouton n° 250, 260 et 270
      button VM1%*10+240
         left VM1%*10+240,1210
         top VM1%*10+240,VM1%*55+440
         width VM1%*10+240,125
         height VM1%*10+240,50
         font_bold VM1%*10+240
         font_size VM1%*10+240,18
         font_name VM1%*10+240,"Arial"
         inactive VM1%*10+240
         on_click VM1%*10+240,clic
   next VM1%
   width 250,75
   font_size 250,12
   caption 250,"Rejouer"
   caption 260,"Aide"
   caption 270,"Quitter"
   button 280 : rem Bouton de choix du niveau de jeu
      left 280,1295
      top 280,505
      width 280,40
      height 280,40
      font_bold 280
      font_size 280,20
      font_name 280,"Arial"
      caption 280,"1"
      inactive 280
      on_click 280,clic
   alpha 290 : rem Affichage de l`indication Niveau
      left 290,1298
      top 290,492
      caption 290,"Niveau"
      
rem Affichage des règles de tir
   alpha 300
      left 300,5
      top 300,110
      for VM1%=1 to 9
         VM4$=VM4$+str$(VM1%)+chr$(13)+chr$(13)+chr$(13)+chr$(13)
      next VM1%
      caption 300,VM4$
   alpha 310
      left 310,1
      top 310,655
      VM4$=string$(72," ")
      for VM1%=1 to 9
         VM4$=VM4$+str$(VM1%)+string$(30," ")
      next VM1%
      caption 310,vm4$
      
rem Commentaires additifs de jeu
   panel 320
      hide 320
      left 320,100
      width 320,1010
      height 320,70
   alpha 330
      parent 330,320
      left 330,10
      font_bold 330
      font_size 330,14
      font_name 330,"Arial"

rem Dessin de l`explosion d`un vaisseau spatial : objet-3D n° 80 à 179
   for VM1%=1 to 100
      VM2%=int(rnd(2))
      VM3%=int(rnd(2))
      if VM2%=0
         VM2%=-1
      end_if
      if VM3%=0
         VM3%=-1
      end_if
      3d_line 79+VM1%,0,0,0
      3d_line 79+VM1%,rnd(1)*VM3%,rnd(1)*VM2%,0
      3d_hide 79+VM1%
      3d_color 79+VM1%,255,0,0
   next VM1%

rem Dessin des lignes laser de tir : Objets 3D 200 et 201
   3d_line 200,-6,-7,-2
   3d_hide 200
   3d_color 200,255,0,150
   3d_line 201,6,-7,-2
   3d_hide 201
   3d_color 201,100,255,0
  
rem Dernières mises au point du jeu
   midi_on
   midi_instrument 127
   midi_volume 127
   if file_exists("Gargar-option.txt")=0
      aide()
   else
      mark_on 240
   end_if
   for VM1%=70 to 90 step 10
      active VM1%
      active VM1%+60
      active VM1%+190
   next VM1%
   active 160
  
end : rem ' Début des routines diverses =====================================

sub aide() : rem Explication du scénario du jeu
   dim_local maai$ , fpai$ : rem Messages d`Aide et Fin de Phrases
   dim_local vmai% : rem Variables à utilisation Multiple
   fpai$=chr$(13)
   application_title "   Scénario du jeu Gargarilioramic"
   for vmai%=1 to 29
      if left$(TSA$(vmai%),3)="   "
         if vmai%<>2
            maai$=maai$+fpai$
         end_if
      end_if
      maai$=maai$+TSA$(vmai%)+fpai$
   next vmai%
   message maai$
end_sub

clic: : rem Redirection de tous les on-click
   select number_click
      case 20 : solaire()
      case 30 : gargar()
      case 70 : coord()
      case 80 : coord()
      case 90 : coord()
      case 130 : coord()
      case 140 : coord()
      case 150 : coord()
      case 160
         if caption$(160)="Placer"
            placer()
         else
            tirer()
         end_if
      case 200 : conseil()
      case 240 : refus()
      case 250 : rejouer()
      case 260 : aide()
      case 270 : quitter()
      case 280 : niveau()
   end_select
return

sub conseil() : rem Conseil de l`amiral
   dim_local vmcon$ : rem Variables à utilisation Multiple
   application_title "   Conseil de l'amiral"
   vmcon$="Pour lutter contre un ennemi dyslexique"+chr$(13)
   vmcon$=vmcon$+"deux règles mathématiques doivent être respectées :"+chr$(13)
   vmcon$=vmcon$+"- Ne pas placer un vaisseau au milieu (en X = 5)"+chr$(13)
   vmcon$=vmcon$+"  (quelques soient Y et Z)"+chr$(13)
   vmcon$=vmcon$+"- Ne pas placer deux vaisseaux en symétrie en X"+chr$(13)
   vmcon$=vmcon$+"  (Exemple : X = 3 et X = 7 avec les mêmes Y et Z)."
   message vmcon$
end_sub

sub coord() : rem Gestion des molettes de réglage des coordonnées pour la grille
   dim_local qbco% : rem Quel bouton a été clické
   dim_local qxco% , qyco% , qzco% : rem Quelles coordonnées sont affichées
   dim_local qmco% : rem Variables à utilisation Multiple
   qbco%=number_click
   qxco%=val(caption$(100))
   qyco%=val(caption$(110))
   qzco%=val(caption$(120))
   for qmco%=70 to 90 step 10
      off_click qmco%
      off_click qmco%+60
   next qmco%
   select qbco%
      case 70 : rem Diminution des X
         if qxco%>1
            qxco%=qxco%-1
            caption 100,qxco%
            active 130
         end_if
         if qxco%=1
            inactive 70
         end_if
      case 80 : rem Diminution des Y
         if qyco%>1
            qyco%=qyco%-1
            caption 110,qyco%
            active 140
         end_if
         if qyco%=1
            inactive 80
         end_if
      case 90 : rem Diminution des Z
         if qzco%>1
            qzco%=qzco%-1
            caption 120,qzco%
            active 150
         end_if
         if qzco%=1
            inactive 90
         end_if
      case 130 : rem Augmentation des X
         if qxco%<9
            qxco%=qxco%+1
            caption 100,qxco%
            active 70
         end_if
         if qxco%=9
            inactive 130
         end_if
      case 140 : rem Augmentation des Y
         if qyco%<9
            qyco%=qyco%+1
            caption 110,qyco%
            active 80
         end_if
         if qyco%=9
            inactive 140
         end_if
      case 150 : rem Augmentation des Z
         if qzco%<9
            qzco%=qzco%+1
            caption 120,qzco%
            active 90
         end_if
         if qzco%=9
            inactive 150
         end_if
   end_select
   grille(qxco%,qyco%,qzco%)
   hide 320
   for qmco%=70 to 90 step 10
      on_click qmco%,clic
      on_click qmco%+60,clic
   next qmco%
end_sub

rem datas utilisées par le programme
   data "terrienne" , "martienne" , "vénusienne"
   data "Choisissez l'emplacement"+chr$(13)+"des soucoupes volantes"+chr$(13)+"de la flotte "
   data "   E S C A D R I L L E   D E S   E N V A H I S S E U R S   G A R G A R I L I E N S"
   data "   E S C A D R I L L E   D E   L A   C O N F É D É R A T I O N   S O L A I R E"
   data "   E S P A C E   I N T E R S I D É R A L   -   "
   data "D'abord, un petit rappel historique :"
   data "   En 2029, face aux préparatifs des terriens pour s'implanter sur la planète Mars, les martiens se"
   data "sont décidés à prendre officiellement contact avec les terriens et à partager avec eux leur technologie."
   data "C'est d'ailleurs depuis ce temps que vous voyagez régulièrement en soucoupes volantes."
   data "   En 2037, les relations diplomatiques avec les martiens et les vénusiens ont permis aux terriens d'entrer"
   data "dans la Confédération Solaire et de prendre leur place dans l'armée fédérale solaire, avec ses soucoupes"
   data "volantes différenciées, vertes pour les martiens, bleues pour les terriens et violettes pour les vénusiens."
   data "   En 2051, la confédération solaire a été attaquée par des envahisseurs gargariliens, dont l'aspect physique est peu"
   data "connu, mais n'est probablement pas de type humanoïde, contrairement aux martiens (malgré leurs 4 bras et leur"
   data "oeil unique) et aux vénusiens (avec leurs 4 jambes et leurs 3 bouches) qui ressemblent assez bien aux terriens."
   data "   Les combats spatiaux ont finalement un peu ressemblé à la classique bataille navale, dans la mesure où une"
   data "fois sortis de la 4° dimension, les vaisseaux spatiaux ont intérêt à ne plus bouger d'un poil pour éviter d'être"
   data "repérés par les détecteurs de mouvements et d'être aussitôt détruits par les tirs automatiques des ordinateurs."
   data "   Comme la furtivité avancée de ces vaisseaux les rend totalement insensibles aux radars, il ne reste alors plus"
   data "aux uns comme aux autres que la bonne vieille méthode visuelle consistant à jeter un oeil par le hublot et estimer"
   data "au pif l'emplacement des vaisseaux ennemis, et à l'indiquer aux ordinateurs sous la forme de coordonnées X-Y-Z"
   data "afin que ceux-ci puissent tirer. Et les gargariliens sont dans le même cas."
   data "   Malheureusement, les humanoïdes solaires, avec leurs yeux rapprochés (surtout les martiens qui n'en ont"
   data "qu'un), ne sont pas très doués pour évaluer la 3° dimension (la perspective). Les gargariliens, eux qui, paraît-il,"
   data "ont 4 yeux, dont 2 très externalisés, la mesurent au contraire avec une précision quasi mathématique."
   data "   Fort heureusement pour nous, les gargariliens ont leur propre talon d'Achille : c'est qu'ils sont tous dyslexiques,"
   data "c'est-à-dire qu'ils confondent fréquemment la droite et la gauche. On sait même que toute leur organisation"
   data "hiérarchique est basée sur leur degré de dyslexie. Il y a les élites de niveau 3, les moins dyslexiques et les plus habiles,"
   data "jusqu'aux plus subalternes de niveau 1, à forte dyslexie, qui sont très maladroits. Et leur flotte est organisée ainsi,"
   data "avec les escadrilles de niveau 1 dont l'efficacité au tir n'est pas excellente, et ceux de niveau 3 qui sont redoutables."
   data "   En 2053, vous avez été nommé général en chef de la flotte spatiale confédérée et c'est vous qui allez combattre"
   data "contre les vaisseaux gargariliens qui, curieusement, ressemblent assez bien à des oeufs. Allez-vous gagner cette"
   data "bataille décisive pour la survie de l'humanité solarienne, en particulier face aux puissantes élites gargariliennes"
   data "de niveau 3 ?  C'est ce que vous allez devoir nous prouver...              Bonne chance !"
rem Fin des datas

sub fin() : rem Fin du jeu et l`un des adversaires a gagné
   dim_local q1fin% , qtfin$ : rem Qui a gagné et Quelle Texte de fin de jeu
   dim_local vmfi% : rem Variables à utilisation Multiple
   caption 180,"La partie est terminée"
   inactive 160
   for vmfi%=70 to 90 step 10
      inactive vmfi%
      inactive vmfi%+60
   next vmfi%
   show 320
   q1fin%=val(caption$(200))
   if q1fin%=0
      active 30
      color 170,255,200,200
      color 180,255,200,200
      qtfin$="Les gargariliens ont gagné cette bataille et ont complètement "
      qtfin$=qtfin$+"anéanti votre escadrille."+chr$(13)+"Mais ils n'ont pas "
      qtfin$=qtfin$+"encore gagné la guerre et vous n'avez pas dit votre "
      qtfin$=qtfin$+"dernier mot."+chr$(13)+"La confédération solaire vous "
      qtfin$=qtfin$+"supplie d'ailleurs de repartir avec une nouvelle "
      qtfin$=qtfin$+"escadrille."
      caption 330,qtfin$
      midi_instrument 107
      for vmfi%=70 to 58 step -1
         midi_play vmfi%,10
      next vmfi%
      midi_instrument 127
   else
      color 170,0,255,255
      color 180,0,255,255
      qtfin$="Bravo, vous avez gagné cette bataille et les gargariliens ont "
      qtfin$=qtfin$+"été défaits !"+chr$(13)+"Mais il en reste d'autres et "
      qtfin$=qtfin$+"l'invasion n'est pas encore définitivement jugulée."
      qtfin$=qtfin$+chr$(13)+"La confédération solaire compte sur vous "
      qtfin$=qtfin$+"pour continuer la lutte jusqu'au dernier !"
      caption 330,qtfin$
      midi_instrument 107
      for vmfi%=58 to 70
         midi_play vmfi%,10
      next vmfi%
      midi_instrument 127
   end_if
   active 250
   active 280
end_sub

sub gargar() : rem Affichage de la flotte des gargariliens
   dim_local vmgar% , v2gar% , v3gar% , v4gar% : rem Variables utilis° Multiple
   for vmgar% = 1 to 12
      3d_hide vmgar%+9
      3d_hide vmgar%+29
      if CXG%(vmgar%)>0
         3d_show vmgar%+49
      end_if
   next vmgar%
   inactive 30
   active 20
   caption 0,TTB$(1)
   show 180
   v3gar%=val(caption$(200))
   v4gar%=val(caption$(210))
   if v3gar%>0 and v4gar%>0
      for vmgar%=70 to 90 step 10
         v2gar%=val(caption$(vmgar%+30))
         if v2gar%>1
            active vmgar%
         end_if
         if v2gar%<9
            active vmgar%+60
         end_if
      next vmgar%
      active 160
   end_if
end_sub

sub grille(qxgr%,qygr%,qzgr%) : rem Dessin de la grille de repérage
   dim_local v1gr% : rem Variables à utilisation multiple
   color 5,0,0,0
   for v1gr%=1 to 10 : rem Affichage des lignes blanches verticales face avant
      2d_line (v1gr%-1)*10,50,(v1gr%-1)*10,140
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage des lignes blanches horizontales face avant
      2d_line 1,(v1gr%-1)*10+50,90,(v1gr%-1)*10+50
   next v1gr%
   for v1gr%=1 to 10 : rem Afficahge des lignes blanches horizontales face haut
      2d_line (v1gr%-1)*10,50,(v1gr%-1)*10+34,-1
   next v1gr%
   for v1gr%=1 to 8 : rem Affichage des lignes blanches obliques face haut
      2d_line v1gr%*4-1,49-v1gr%*5.5,v1gr%*4+90,49-v1gr%*5.5
   next v1gr%
   for v1gr%=1 to 8 : rem Affichage des lignes blanches verticales face droite
      2d_line 89+v1gr%*4,49-v1gr%*5.5,89+v1gr%*4,141-v1gr%*5.5
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage des lignes blanches obliques face droite
      2d_line 90,140-(v1gr%-1)*10,125,88-(v1gr%-1)*10
   next v1gr%
   2d_flood 10,10,240,240,240
   2d_flood 115,130,240,240,240
   for v1gr%=1 to 9 : rem Affichage de la ligne X rouge verticale face avant
      2d_flood qxgr%*10-5,10*v1gr%+45,255,0,0
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage de la ligne X rouge oblique face haut
      2d_flood (qxgr%-1)*10+1+4*v1gr%,52-5.5*v1gr%,255,0,0
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage de la ligne Y rouge horizontale face avant
      2d_flood v1gr%*10-5,qygr%*10+45,255,0,0
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage de la bande Y rouge oblique face droite
      2d_flood v1gr%*4+88,(qygr%-1)*10-v1gr%*5.7+57,255,0,0
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage de la ligne Z rouge horizontale face haut
      2d_flood 3+qzgr%*4+(v1gr%-1)*10,52-qzgr%*5.5,255,0,0
   next v1gr%
   for v1gr%=1 to 9 : rem Affichage de la bande Z rouge verticale face droite
      2d_flood 88.5+qzgr%*4,(v1gr%-1)*10+(10-qzgr%)*6,255,0,0
   next v1gr%
   rem Affichage du point vert X-Y sur face avant
   2d_flood qxgr%*10-5,qygr%*10+45,0,255,0
   rem Affichage du point vert X-Z sur face haut
   2d_flood 3+qzgr%*4+(qxgr%-1)*10,52-qzgr%*5.5,0,255,0
   rem Affichage du point vert Y-Z sur face droite
   2d_flood 88.5+qzgr%*4,(qygr%-1)*10+(10-qzgr%)*6,0,255,0
end_sub

sub niveau() : rem Gestion du niveau de jeu
   dim_local njni% : rem Niveau du jeu
   njni%=val(caption$(280))
   njni%=njni%+1
   if njni%>3
      njni%=1
   end_if
   caption 280,njni%
end_sub

sub oeufs() : rem L`escadrille gargarilienne agence ses vaisseaux
   dim_local v1oe% , v2oe% : rem Variables à utilisation multiple
   dim_local cxoe% , cyoe% , czoe% : rem Coordonnées du placement
   dim_local iaoe% : rem Indice d`anomalie dans le placement (doublon)
   for v1oe%=1 to 12
      repeat
         iaoe%=0
         cxoe%=int(rnd(9))+1
         cyoe%=int(rnd(9))+1
         czoe%=int(rnd(9))+1
         if v1oe%>1
            for v2oe%=1 to v1oe%-1
               if CXG%(v2oe%)=cxoe% and CYG%(v2oe%)=cyoe% and CZG%(v2oe%)=czoe%
                  iaoe%=1
                  exit_for
               end_if
            next v2oe%
         end_if
      until iaoe%=0
      CXG%(v1oe%)=cxoe%
      CYG%(v1oe%)=cyoe%
      CZG%(v1oe%)=czoe%
      3d_position v1oe%+49,(cxoe%*1.5)-7.5,(5-cyoe%)*0.9,0-czoe%
   next v1oe%
   pause 4000
   gargar()
   active 160
   show 240
   color 170,0,255,255
   color 180,0,255,255
   caption 180,"Vous êtes autorisé à tirer"
   beep
end_sub

sub placer() : rem Le joueur place ses soucoupes dans l`espace
   dim_local cxpl , cypl , czpl : rem Coordonnées du placement
   dim_local nspl% : rem Nombre de Soucoupes placées dans chaque catégorie
   dim_local vmpl% , vapl$ : rem Variables à utilisation Multiple
   dim_local iapl% : rem Indice d`anomalie dans le placement (doublon)
   inactive 160
   nspl%=val(caption$(200))
   cxpl=val(caption$(100))
   cypl=val(caption$(110))
   czpl=val(caption$(120))
   OPS%=OPS%+1
   if OPS%>1 : rem Détection des anomalies
      for vmpl%=1 to OPS%-1
         if CXS%(vmpl%)=cxpl and CYS%(vmpl%)=cypl and CZS%(vmpl%)=czpl
            iapl%=1
         end_if
      next vmpl%
   end_if
   if iapl%=0 : rem Si pas d`anomalie
      3d_x_rotate OPS%+9,7.5*cypl+52.5
      3d_position OPS%+9,(cxpl*1.5)-7.5,(5-cypl)*0.9,0-czpl
      3d_show OPS%+9
      3d_position OPS%+29,(cxpl*1.5)-7.5,(5-cypl)*0.9,0-czpl
      3d_show OPS%+29
      CXS%(OPS%)=cxpl
      CYS%(OPS%)=cypl
      CZS%(OPS%)=czpl
      midi_instrument 105
      if OPS%<>5 and OPS%<>9 and OPS%<>12
         midi_play 40,10
      end_if
      select OPS%
         case 4 : rem A la 4° soucoupe la soucoupe de démo change de couleur
            3d_color 70,0,60,0
            3d_color 71,0,60,0
            caption 180,DDD$+FD1$(2)+chr$(13)+"( faites varier X, Y et Z )"
         case 5 : rem A la 5° soucoupe la soucoupe placée change de couleur
            3d_color OPS%+9,0,60,0
            3d_color OPS%+29,0,60,0
            midi_play 50,10
         case 8 : rem A la 8° soucoupe la soucoupe de démo change de couleur
            3d_color 70,60,0,60
            3d_color 71,60,0,60
            caption 180,DDD$+FD1$(3)+chr$(13)+"( faites varier X, Y et Z )"
         case 9 : rem A la 9° soucoupe la soucoupe placée change de couleur
            3d_color OPS%+9,60,0,60
            3d_color OPS%+29,60,0,60
            midi_play 50,10
      end_select
      midi_instrument 127
      nspl%=nspl%-1
      if nspl%<1
         nspl%=4
      end_if
      caption 200,nspl%
      if OPS%<12
         active 160
      else : rem C`est au tour des gargariliens de placer leurs vaisseaux
         hide 190
         show 210
         show 220
         show 230
         caption 200,"12"
         beep
         color 170,255,200,200
         color 180,255,200,200
         vapl$="L'escadrille gargarilienne"+chr$(13)+"agence ses vaisseaux"
         vapl$=vapl$+chr$(13)+"Attention, ils arrivent"
         caption 180,vapl$
         caption 160,"Tirer"
         caption 100,"5"
         caption 110,"5"
         caption 120,"5"
         grille(5,5,5)
         oeufs()
      end_if
   else : rem En cas de doublon
      beep
      show 320
      vapl$="Non, vous avez déjà placé une soucoupe volante à cette endroit, "
      vapl$=vapl$+"recommencez !"
      caption 330,vapl$
      active 160
      OPS%=OPS%-1
   end_if
end_sub

sub quitter() : rem Quitter le jeu
   dim_local nfqu$ , nfqu% : rem Note de Fin de jeu
   nfqu$="Eh, il reste encore des escadrilles de gargariliens "+chr$(13)
   nfqu$=nfqu$+"qui n'ont d'autre intention que de nous dévorer !"+chr$(13)
   nfqu$=nfqu$+"Vous voulez vraiment abandonner le jeu ?"
   nfqu%=message_confirmation_yes_no(nfqu$)
   if nfqu%=1
      midi_off
      file_delete "Gargar-Ciel étoilé.bmp"
      terminate
   end_if
end_sub

sub refus() : rem Refus ou acceptation de l`affichage de l`aide au démarrage
   dim_local cpref% : rem Coché ou Pas coché
   cpref%=checked(240)
   if cpref%=1
      file_open_write 1,"Gargar-option.txt"
      file_close 1
   else
      if file_exists("Gargar-option.txt")=1
         file_delete "Gargar-option.txt"
      end_if
   end_if
end_sub

sub rejouer() : rem Et c`est reparti pour un nouvelle partie
   dim_local vmre% : rem Variables à utilisation Multiple
   hide 320
   inactive 250
   active 280
   inactive 20
   inactive 30
   caption 160,"Placer"
   color 170,0,255,255
   color 180,0,255,255
   caption 180,DDD$+FD1$(1)+chr$(13)+"( faites varier X, Y et Z )"
   caption 200,"4"
   hide 210
   hide 220
   hide 240
   for vmre%=70 to 90 step 10
      active vmre%
      active vmre%+60
      caption vmre%+30,"5"
   next vmre%
   grille(5,5,5)
   show 190
   3d_color 70,0,0,60
   3d_color 71,0,0,60
   for vmre%=1 to 12
      3d_hide vmre%+9
      3d_hide vmre%+29
      3d_hide vmre%+49
   next vmre%
   for vmre%=1 to 12
      CXS%(vmre%)=0
      CYS%(vmre%)=0
      CZS%(vmre%)=0
      CXG%(vmre%)=0
      CYG%(vmre%)=0
      CZG%(vmre%)=0
   next vmre%
   caption 210,"12"
   OPS%=0
   active 160
end_sub

sub solaire() : rem Affichage de la flotte des solariens
   dim_local vmsol% : rem Variables à utilisation Multiple
   for vmsol% = 1 to 12
      3d_hide vmsol%+49
      if CXS%(vmsol%)>0
         3d_show vmsol%+9
         3d_show vmsol%+29
      end_if
   next vmsol%
   inactive 20
   active 30
   caption 0,TTB$(2)
   inactive 160
   if left$(caption$(180),4)="Vous" or left$(caption$(180),5)="C'est"
      hide 180
   end_if
   for vmsol%=70 to 90 step 10
      inactive vmsol%
      inactive vmsol%+60
   next vmsol%
end_sub

sub tir_gar() : rem Les gargariliens tirent sur les solariens
   dim_local v1tg% , v2tg% , v3tg% , v4tg% : rem Variables à utilisation variée
   dim_local cxtg% , cytg% , cztg% : rem Coordonnées de tir
   dim_local cbtg% , cvtg% : rem Couleurs des explosions
   dim_local njtg% : rem Niveau du jeu
   pause 2000
   caption 180,"Les gargariliens"+chr$(13)+"tirent à leur tour"
   color 180,255,200,200
   color 170,255,200,200
   solaire()
   inactive 20
   inactive 30
   pause 350
   v1tg%=val(caption$(200))
   njtg%=val(caption$(280))
   njtg%=7-njtg%
   if v1tg%>0
      repeat : rem Les gargariliens choisissent leur objectif de tir
         v2tg%=int(rnd(12))+1
      until CXS%(v2tg%)>0
      cxtg%=CXS%(v2tg%)
      cytg%=CYS%(v2tg%)
      cztg%=CZS%(v2tg%)
      cbtg%=0
      cvtg%=0
      v3tg%=int((int(rnd(njtg%))+2)/2) : rem Niveau de dyslexie garagarilienne
      if v3tg%<>1
         cxtg%=10-cxtg%
         for v4tg%=1 to 12
            if CXS%(v4tg%)=cxtg% and CYS%(v4tg%)=cytg% and CZS%(v4tg%)=cztg%
               v2tg%=v4tg%
               cytg%=CYS%(v4tg%)
               cztg%=CZS%(v4tg%)
               v3tg%=1
               exit_for
            end_if
         next v4tg%
         if v3tg%>1
            cbtg%=255
            cvtg%=255
         end_if
      end_if
      3d_delete 200
      3d_line 200,-6,-7,-2
      3d_line 200,(cxtg%*1.5)-7.5,(5-cytg%)*0.9,0-cztg%
      3d_color 200,255,0,150
      pause 100
      3d_hide 200
      for v4tg%=1 to 100 : rem Tir des gargariliens
         3d_show 79+v4tg%
         3d_color 79+v4tg%,255,cbtg%,cvtg%
         3d_position 79+v4tg%,(cxtg%*1.5)-7.5,(5-cytg%)*0.9,0-cztg%
      next v4tg%
      if v3tg%=1
         midi_play 50,6
         CXS%(v2tg%)=0
         CYS%(v2tg%)=0
         CZS%(v2tg%)=0
      else
         midi_play 60,6
      end_if
      pause 350 : rem Fin d`explosion
      for v4tg%=1 to 100
         3d_hide 79+v4tg%
      next v4tg%
      if v3tg%=1
         3d_hide v2tg%+9
         3d_hide v2tg%+29
         v1tg%=v1tg%-1
         caption 200,v1tg%
      end_if
      pause 2000
   end_if
   if v1tg%=0
      fin()
   else : rem C`est à nouveau au tour du joueur
      gargar()
      color 170,0,255,255
      color 180,0,255,255
      caption 180,"C'est à votre tour"+chr$(13)+"de tirer"
      active 160
   end_if
end_sub

sub tirer() : rem Les solariens tirent sur les gargariliens
   dim_local cxti% , cyti% , czti% : rem Coordonnées de tir
   dim_local vmti% : rem Variables à utilisation Multiple
   dim_local ibti% : rem Indice de But atteint
   dim_local cbti% , cvti% : rem Couleurs des explosions
   dim_local nvti% : rem Nombre de Vaisseaux gargariliens
   inactive 160
   inactive 280
   cxti%=val(caption$(100))
   cyti%=val(caption$(110))
   czti%=val(caption$(120))
   nvti%=val(caption$(210))
   cbti%=255
   cvti%=255
   for vmti%=1 to 12
      if CXG%(vmti%)=cxti% and CYG%(vmti%)=cyti% and CZG%(vmti%)=czti%
         CXG%(vmti%)=0
         CYG%(vmti%)=0
         CZG%(vmti%)=0
         cbti%=200
         cvti%=0
         ibti%=vmti%
         exit_for
      end_if
   next vmti%
   3d_delete 201
   3d_line 201,6,-7,-2
   3d_line 201,(cxti%*1.5)-7.5,(5-cyti%)*0.9,0-czti%
   3d_color 201,100,255,0
   pause 100
   3d_hide 201
   for vmti%=1 to 100
      3d_show 79+vmti%
      3d_color 79+vmti%,255,cbti%,cvti%
      3d_position 79+vmti%,(cxti%*1.5)-7.5,(5-cyti%)*0.9,0-czti%
   next vmti%
   if ibti%=0
      midi_play 60,6
   else
      midi_play 50,6
   end_if
   pause 350
   for vmti%=1 to 100
      3d_hide 79+vmti%
   next vmti%
   if ibti%>0
      3d_hide 49+ibti%
      if nvti%>0
         nvti%=nvti%-1
      end_if
      caption 210,nvti%
   end_if
   if nvti%>0
      tir_gar()
   else
      fin()
   end_if
end_sub
Ah, je dois vous avertir :
Après y avoir joué, vous risquez de ne plus voir les oeufs de la même manière.
D'ailleurs, si après cette expérience renversante, quelqu'un de votre famille
en sort quelques uns du frigo, tâchez de ne pas vous précipiter comme un fou
pour les écrabouiller rageusement...
Laughing Laughing Laughing alien farao elephant Laughing Laughing Laughing


Dernière édition par jjn4 le Mer 25 Jan 2017 - 16:20, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Jean Claude

avatar

Nombre de messages : 5121
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: La guerre des étoiles   Mar 24 Jan 2017 - 19:25

Whaou !
C'est hyper difficile !
J'ai beaucoup de mal à ajuster mes tirs et pendant ce temps là c'est un massacre dans ma flotte Sad
Mais je les aurai un jour.... geek

En tous cas cheers pour ce travail de Martiens.

A+

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8009
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 24 Jan 2017 - 23:26

Wahou!...je me suis fait défoncé !
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5873
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: La guerre des étoiles   Mer 25 Jan 2017 - 1:39

Très dur mais quelle imagination. Super au niveau inventif et réalisation.
Tu es vraiment super créatif. Bravo
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: La guerre des étoiles   Mer 25 Jan 2017 - 2:05

Jicehel a tout dit.
Que dire de plus, à part BRAVOOOOO !!!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Marc



Nombre de messages : 582
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: La guerre des étoiles   Mer 25 Jan 2017 - 12:41

Voilà qui est sidérant , prodigieux, faramineux, saisissant, surprenant…

Un grand B R A V O ! ! ! cheers cheers cheers

Le pseudo Jjn4 cache son vrai nom qui est peut-être … George LUCAS ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1656
Date d'inscription : 13/09/2009

MessageSujet: +++   Mer 25 Jan 2017 - 16:27

Merci, merci, merci Embarassed
Non, non, je ne m'appelle pas Lucas Laughing
Ah, c'est peut-être plus dur au début,
le temps de prendre ses marques.
J'ai calculé (normalement)
que les chances de gagner sont de :
75 % au niveau 1
50 % au niveau 2
25 % au niveau 1
(une fois s'être habitué au jeu).
Mais, au fait, aussi, avez-vous
consulté le conseil de l'amiral ?
pale alien Suspect
Laughing Laughing Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
silverman

avatar

Nombre de messages : 483
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: La guerre des étoiles   Ven 27 Jan 2017 - 15:52

Pas facile du tout!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1656
Date d'inscription : 13/09/2009

MessageSujet: +++   Ven 27 Jan 2017 - 16:16

Pour le conseil de l'amiral,
il faut trouver le tiroir secret.
Vous savez que mes programmes
comportent quelquefois (souvent ?)
un ou des tiroir(s) secret(s)...
Laughing Laughing Laughing alien Suspect Arrow Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Contenu sponsorisé




MessageSujet: Re: La guerre des étoiles   

Revenir en haut Aller en bas
 
La guerre des étoiles
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Critères d'attribution d'étoiles
» "La Guerre des mondes" en Blu-ray : beurk !
» [Question] Connaissez-vous "La Guerre des Clans" de Erin Hünter?
» La guerre au garage - ou le récit épique d'une aventure spéciale
» Hogs of war : les cochons de guerre

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: