jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Bataille navale sous-marine Ven 13 Jan 2017 - 17:51 | |
| Et voici le tout premier jeu de stratégie à caractère écologique entièrement écrit en langage panoramique... Oui, oui !! Avouez quand même que vous vivez là un grand moment !!! Vous vous souvenez des batailles navales de votre enfance ? « F4 - Touché -coulé ! », ah les sacrés bons moments... !!!! Eh bien là, c'est globalement pareil, mais aussi un peu innovant car il s'agit d'une bataille navale de sous-marins. Ouh là ! Alors, allez-vous vous révéler un savant stratège ? C'est ce que vous allez pouvoir nous dire... (Pssst : Le scénario complet est disponible par la touche « Aide ») Mais, allez-vous me dire... Attend, attend, attend, sous-marine ou pas, finalement, c'est toujours une bataille navale, non ? Alors, en quoi est-ce que c'est écologique ? Eh bien, parce qu'après y avoir joué... vous ne pourrez vous empêcher de crier à tout vent et à tue-tête : « MAIS ARRÊTONS DE POLLUER LA PLANÈTE !!!!!!!!!!!!!!!!!!!!!!! » Si, si, croyez-moi, jouez-y, vous verrez ! - Code:
-
rem ' Bataille navale sous-marine - BatnavoramicSM - par jjn4 - le 13/01/2017 dim ii% , jj% , aa$ , bb$ : rem Variables à utilisations variées dim c1% , c2% : rem Détermination du gagnant (c1%=joueur c2%=ordi) dim ca%(4) : rem Cases Autour d`un « en vue » dim cc%(312) : rem Contenu des Cases de la carte dim cf$(7) : rem Commentaires de la Fin de jeu dim cj$(2) : rem Commandes de Jeu dim fc$(7) : rem Fin de Commentaires des écologistes dim hh% : rem Case choisie par l`ennemi pour jouer dim jt% : rem Joueur à qui c`est le tour de jouer (-1=ordi ou +1=joueur) dim nc$(32) : rem Noms des Catastrophes dim nj% : rem Niveau du Jeu dim nm% : rem Numéros des sous-Marins dim ns$(4) : rem Noms des Sous-marins dim oa%(10) : rem Ordre d`Apparition des sous-marins du joueur dim or%(10) : rem Ordre de Rangement des sous-marins de l`ennemi dim pd$(8) , os% : rem Présentation des Débrits dim pe$(23) : rem Pancarte de mode d`Emploi dim tt% : rem Cas où l`ennemi a détecté une masse métallique nj%=1 label clic , sens rem Gestion des datas for ii%=1 to 4 : read ns$(ii%) : next ii% for ii%=1 to 8 : read pd$(ii%) : next ii% for ii%=1 to 2 : read cj$(ii%) : next ii% for ii%=1 to 10 : read oa%(ii%) : next ii% for ii%=1 to 10 : read or%(ii%) : next ii% for ii%=1 to 4 : read ca%(ii%) : next ii% for ii%=1 to 7 : read cf$(ii%) : next ii% for ii%=1 to 7 : read fc$(ii%) : next ii% for ii%=1 to 32 : read nc$(ii%) : next ii% for ii%=1 to 23 : read pe$(ii%) : next ii% rem form0 width 0,1360 height 0,720 caption 0," BATAILLE NAVALE SOUS-MARINE par jjn4 - Ver.130117.1.0" rem Dessin du sous-marin picture 1 width 1,165 height 1,62 color 1,220,170,0 2d_target_is 1 2d_pen_color 0,0,0 2d_fill_color 0,0,0 2d_rectangle 50,30,150,56 2d_circle 150,43,13 2d_poly_from 124,30 2d_poly_to 124,17 2d_poly_to 104,17 2d_poly_to 98,30 2d_flood 110,25,0,0,0 2d_pen_width 2 2d_line 118,17,118,4 2d_line 118,5,121,5 2d_line 6,36,6,50 2d_pen_width 1 2d_line 50,30,1,43 2d_line 1,43,50,56 2d_flood 40,45,0,0,0 2d_poly_from 25,43 2d_poly_to 20,27 2d_poly_to 12,27 2d_poly_to 12,59 2d_poly_to 20,59 2d_poly_to 25,43 2d_flood 15,33,0,0,0 2d_flood 15,55,0,0,0 file_save 1,"Batnavoramic.bmp"
rem Image de fond picture 4 full_space 4 color 4,220,170,0 hint 4,"Rivage herbeux et corniches" 2d_target_is 4 delete 1 picture 5 left 5,150 top 5,150 width 5,950 height 5,400 color 5,220,170,0 hint 5,"île et maison" rem Pancarte d`annonce de la suite de l`explication dans le mode d`emploi alpha 6 left 6,390 top 6,230 width 6,620 height 6,40 alpha 7 left 7,400 top 7,240 font_color 7,255,0,0 font_bold 7 font_size 7,12 caption 7,"La suite de ces explications est disponible avec le bouton marqué « Aide »" rem Pancartes de renseignements de départ du jeu alpha 8 : rem Pancarte de mode d`emploi left 8,300 width 8,800 height 8,220 color 8,70,220,250 alpha 9 left 9,310 top 9,6 font_bold 9 font_size 9,12 color 9,70,220,250 aa$=pe$(1) for ii%=2 to 10 aa$=aa$+chr$(13)+pe$(ii%) next ii% caption 9,aa$ aa$="" panel 10 : rem Pancarte d`attente left 10,600 top 10,300 width 10,260 height 10,50 font_bold 10 font_size 10,36 font_name 10,"Arial" caption 10,"Attendez" rem Affichage du jeu for ii%=1 to 24 : rem Panels de 11 à 322 for jj%=1 to 13 panel (jj%-1)*24+ii%+10 hide (jj%-1)*24+ii%+10 left (jj%-1)*24+ii%+10,(ii%-1)*50+10 top (jj%-1)*24+ii%+10,(jj%-1)*50+10 width (jj%-1)*24+ii%+10,50 height (jj%-1)*24+ii%+10,50 color (jj%-1)*24+ii%+10,70,190,250 font_color (jj%-1)*24+ii%+10,70,170,250 font_bold (jj%-1)*24+ii%+10 font_size (jj%-1)*24+ii%+10,35 font_name (jj%-1)*24+ii%+10,"Webdings" caption (jj%-1)*24+ii%+10,chr$(223) next jj% next ii% for ii%=11 to 322 show ii% next ii% for ii%=6 to 10 delete ii% next ii% choix()
rem Affichage du sous-marin picture 325 hide 325 left 325,1230 top 325,10 width 325,105 height 325,40 stretch_on 325 file_load 325,"Batnavoramic.bmp" rem Zone d`affichage des commentaires de jeu à droite et des submersibles à tourner alpha 327 left 327,1230 top 327,60 width 327,105 height 327,200 color 327,0,255,255 alpha 328 left 328,1231 top 328,62 color 328,0,255,255 caption 328,cj$(1) scene3d 329 hide 329 left 329,1242 top 329,165 width 329,80 height 329,80 color 329,0,255,255 rem Dessin des sumersibles 3d_sphere 1,0.13 3d_cylinder 2,0.53,0.13,0.13 3d_cone 3,0.25,0.13 3d_sphere 4,0.06 3d_z_position 4,0.13 3d_color 4,255,0,0 rem Affichage des boutons de commande for ii%=1 to 5 : rem Boutons de 330, 340 , 350, 360 et 370 button ii%*10+320 left ii%*10+320,1230 top ii%*10+320,ii%*62+290 width ii%*10+320,105 height ii%*10+320,57 font_bold ii%*10+320 font_size ii%*10+320,16 font_name ii%*10+320,"Arial" caption ii%*10+320,"" on_click ii%*10+320,clic next ii% button 335 : rem Bouton de choix de niveau left 335,1285 top 335,352 width 335,50 height 335,57 font_bold 335 font_size 335,24 font_name 335,"Arial" caption 335,"1" on_click 335,clic width 330,50 font_name 330,"Webdings" font_size 330,40 caption 330,chr$(113) caption 340,"Choisir" caption 350,"Rejouer" caption 360,"Aide" caption 370,"Quitter" inactive 330 inactive 340 inactive 350
rem Affichage des notes en dessus des boutons alpha 380 left 380,1230 top 380,330 color 380,220,170,0 font_size 380,10 caption 380,"Tourner" alpha 385 left 385,1290 top 385,330 color 385,220,170,0 font_size 385,10 caption 385,"Niveau" dlist 390 : rem Liste dans laquelle l`ordi va calculer où jouer rem Zone d`affichage des commentaires d`explosions catastrophiques alpha 400 left 400,1230 top 400,270 width 400,105 height 400,50 color 400,150,180,0 alpha 410 left 410,1231 top 410,272 color 410,150,180,0 herbe() active 340 midi_on midi_volume 127 beep end : rem ' Début des routines ===============================================
sub aide() : rem Explication du mode d`emploi dim_local a$ , i$ , j$ , i% i$=chr$(13) a$=pe$(1) for i%=2 to 23 if left$(pe$(i%),3)=" " j$=i$ else j$="" end_if a$=a$+i$+j$+pe$(i%) next i% application_title " Mode d'emploi du jeu de bataille navale sous-marine" message a$ end_sub
sub boum(k%) : rem Un des submersibles est détruit color k%,255,0,0 font_color k%,0,60,200 caption k%,chr$(43) midi_play 50,6 pause 200 if cc%(k%-10)<0 font_color k%,130,130,10 else font_color k%,0,100,250 end_if color k%,0,0,0 caption k%,pd$(int(rnd(8))+1) hint k%,"Déchets nucléaires, débrits irradiés, cadavres divers et nappe de pétrole" end_sub
sub choisir() : rem Choisir le sens de ses sous-marins dim_local a% show 325 active 330 inactive 340 midi_instrument 127 nm%=1 sens3() for a%=11 to 322 on_click a%,sens next a% show 329 sens2() end_sub
sub choix() : rem Choix des emplacements des corniches, de l`île et des rochers dim_local i% , j% , h%(3) , k% , x% , y% , z% 2d_target_is 4 for i%=1 to int(rnd(3))+1 : rem Dessin des corniches du haut h%(i%)=int(rnd(24))+1 hide h%(i%)+10 cc%(h%(i%))=-15 2d_fill_color 110,70,0 2d_pen_color 110,70,0 2d_rectangle h%(i%)*50-40,10,h%(i%)*50+10,60 2d_pen_color 0,255,0 for j%=1 to 200 2d_line h%(i%)*50-40+int(rnd(50)),int(rnd(50))+10,h%(i%)*50-40+int(rnd(50)),int(rnd(50))+10 next j% next i% for i%=1 to int(rnd(3))+1 : rem Dessin des corniches du bas h%(i%)=int(rnd(24))+1 hide h%(i%)+298 cc%(h%(i%)+288)=-15 2d_pen_color 110,70,0 2d_rectangle h%(i%)*50-40,610,h%(i%)*50+10,660 2d_pen_color 0,255,0 for j%=1 to 200 2d_line h%(i%)*50-40+int(rnd(50)),int(rnd(50))+610,h%(i%)*50-40+int(rnd(50)),int(rnd(50))+610 next j% next i% for i%=1 to int(rnd(2))+1 : rem Dessin des corniches de gauche h%(i%)=int(rnd(11))+1 hide h%(i%)*24+11 cc%(h%(i%)*24+1)=-15 2d_pen_color 110,70,0 2d_rectangle 10,h%(i%)*50+10,60,h%(i%)*50+60 2d_pen_color 0,255,0 for j%=1 to 200 2d_line int(rnd(50))+10,h%(i%)*50+10+int(rnd(50)),int(rnd(50))+10,h%(i%)*50+10+int(rnd(50)) next j% next i% for i%=1 to int(rnd(2))+1 : rem Dessin des corniches de droite h%(i%)=int(rnd(11))+1 hide h%(i%)*24+34 cc%(h%(i%)*24+24)=-15 2d_pen_color 110,70,0 2d_rectangle 1160,h%(i%)*50+10,1210,h%(i%)*50+60 2d_pen_color 0,255,0 for j%=1 to 200 2d_line int(rnd(50))+1160,h%(i%)*50+10+int(rnd(50)),int(rnd(50))+1160,h%(i%)*50+10+int(rnd(50)) next j% next i% y%=int(rnd(5)) : rem Dessin de l`île et de la maison x%=int(rnd(16)) z%=x%+76+y%*24 hide z%+10 : cc%(z%)=-15 hide z%+11 : cc%(z%+1)=-15 hide z%+34 : cc%(z%+24)=-15 hide z%+35 : cc%(z%+25)=-15 i%=int(rnd(2)) if i%=1 hide z%+12 : cc%(z%+2)=-15 hide z%+36 : cc%(z%+26)=-15 end_if j%=int(rnd(2)) : j%=0 if j%=1 hide z%+58 : cc%(z%+48)=-15 hide z%+59 : cc%(z%+49)=-15 end_if 2d_target_is 5 2d_fill_color 110,70,0 2d_pen_color 110,70,0 2d_rectangle x%*50+10,y%*50+10,(x%+3)*50+10,(y%+3)*50+10 2d_pen_color 0,255,0 for i%=1 to 999 2d_line x%*50+10+int(rnd(150)),y%*50+10+int(rnd(150)),x%*50+10+int(rnd(150)),y%*50+10+int(rnd(150)) next i% 2d_fill_color 250,80,0 2d_pen_color 110,70,0 k%=int(rnd(2)) if k%=0 2d_rectangle x%*50+50,y%*50+50,x%*50+95,y%*50+70 2d_rectangle x%*50+50,y%*50+70,x%*50+95,y%*50+90 for i%=1 to 100 2d_point (x%+1)*50+int(rnd(45)),(y%+1)*50+int(rnd(40)) next i% else 2d_rectangle x%*50+50,y%*50+50,x%*50+70,y%*50+95 2d_rectangle x%*50+70,y%*50+50,x%*50+90,y%*50+95 for i%=1 to 100 2d_point (x%+1)*50+int(rnd(40)),(y%+1)*50+int(rnd(45)) next i% end_if for i%=1 to int(rnd(5))+1 : rem Dessin des rochers j%=int(rnd(312))+11 if show(j%)=1 font_color j%,110,70,0 caption j%,chr$(42) hint j%,"Rochers dangereux" cc%(j%-10)=-11 end_if next i% end_sub
clic: : rem Redirection de tous les on-click caption 410,"" ii%=number_click if ii%<325 for jj%=11 to 322 off_click jj% next jj% pan() if jt%=-1 ordi() end_if else select number_click case 330 : sens2() case 335 : niveau() case 340 : choisir() case 350 : rejouer() case 360 : aide() case 370 : quitter() end_select end_if return
rem datas data "Sous-marin de poche"+chr$(13)+"d'observation de type"+chr$(13)+"X-ray de 800 t" data "Sous-marin nucléaire"+chr$(13)+"de dissuasion de"+chr$(13)+"type Juliett de 3000 t" data "Sous-marin nucléaire"+chr$(13)+"de défense de type"+chr$(13)+"Foxtrot de 5000 t" data "Sous-marin nucléaire"+chr$(13)+"d'attaque de type"+chr$(13)+"Charlie de 9000 t" data chr$(44) , chr$(86) , chr$(144) , chr$(174) , chr$(178) , chr$(179) , chr$(212) , chr$(244) data "Cliquez sur Choisir"+chr$(13)+"pour déterminer"+chr$(13)+"les emplacements"+chr$(13)+"de vos submersibles" data "Cliquez sur la carte"+chr$(13)+"pour le placer"+chr$(13)+"Cliquez sur Tourner"+chr$(13)+"pour le faire pivoter" data 4 , 1 , 3 , 2 , 1 , 3 , 2 , 1 , 2 , 1 data 4 , 3 , 3 , 2 , 2 , 2 , 1 , 1 , 1 , 1 data 1 , 23 , 24 , 25 data "Bravo, vous avez"+chr$(13)+"gagné. L'amiral"+chr$(13)+"vous décerne"+chr$(13)+"la croix de guerre"+chr$(13)+"Mais par ailleurs," data "C'est un désastre !"+chr$(13)+"L'ennemi a gagné et"+chr$(13)+"commence à envahir"+chr$(13)+"toute l'Europe"+chr$(13)+"De plus," data "l'océan et la planète"+chr$(13)+"sont détruits et"+chr$(13)+"pollués à " data "et les écologistes"+chr$(13)+"veulent absolument"+chr$(13) data "Voulez-vous rejouer ?" data "Bravo, vous avez"+chr$(13)+"détruit un de vos"+chr$(13)+"propres bâtiment !" data "L'amiral ne décolère"+chr$(13)+"pas. Il parle de"+chr$(13)+"vous traduire en cour"+chr$(13)+"martiale pour"+chr$(13)+"haute trahison" data "vous jeter en prison" , "vous clouer au pilori" , "tout vous mettre"+chr$(13)+"sur le dos" data "vous faire la peau" , "vous en rendre"+chr$(13)+"responsable" , "vous faire exécuter" , "vous jeter aux lions" data "groupe de baleines" , "groupe de dauphins" , "bateau d'immigrants" , "groupe de phoques" data "voilier Vendée-globe" , "groupe de tortues" , "radeau de naufragés" , "poulpe géant" data "lot de coelacanthes" , "yacht de Greenpeace" , "banc de saumons" , "banc d'esturgeons" data "banc de thons" , "groupe d'espadons" , "banc de harengs" , "banc de sardines" data "groupe de lamantins" , "banc de maquereaux" , "groupe de morses" , "groupe d'otaries" data "banc de belles raies" , "groupe de seiches" , "récif de corail" , "youyou de naufragés" data "bateau de pirates" , "navire de croisière" , "bateau de pêche" , "chalutier" data "navire baleinier" , "yacht de tourisme" , "navire de plaisance" , "pétrolier géant" data " Alors que le réchauffement climatique et la disparition de nombreuses espèces pourraient nous" data "pousser à mieux protéger la planète, un pays émergent, le Kougloufistan, s'est mis à faire parler" data "de lui. En effet, une junte militaire y a pris le pouvoir et s'est procuré des sous-marins nucléaires" data "de classe Alpha en les achetant à d'autres pays corrompus pour une bouchée de pain. Ils ont" data "aussi enlevé des savants dans le monde entier pour équiper ces sous-marins des plus récentes" data "technologies. Et au final, ils ont réussi à déclencher la troisième guerre mondiale." data " Comme ils exigent la reddition complète de l'Europe en menaçant de la vitrifier avec des missiles" data "nucléaires tirés par leurs sous-marins près de nos côtes, l'amiral vous a chargé de repousser cette" data "inquiétante menace avec nos vieux sous-marins dont l'équipement moins performant pourra être" data "largement compensé par la ruse qui a fait toute votre renommée." data " Heureusement, vous disposez quand même d'une technologie vous permettant de détecter si" data "des masses métalliques entourent vos zones d'impact, même si l'adversaire dispose manifestement" data "d'un modèle de détecteurs plus avancé. Et encore plus au niveau 2." data " Alors ensuite, le jeu se joue comme une bataille navale classique, et même mieux, puisqu'il vous" data "suffit de cliquer sur une case pour ajuster vos tirs, au lieu d'annoncer des coordonnées, comme" data "aux temps héroïques. Notons quand même que, bien évidemment, les navires sont sous l'eau et" data "non au dessus, ce qui implique certaines différences. Par exemple, alors que les navires de surface" data "peuvent nécessiter plusieurs tirs pour être coulés, avec les sous-marins, le premier tir est" data "automatiquement fatal. A noter aussi que les deux camps se situent dans la même environnement." data " Mais malheureusement, les tirs de cette effroyable guerre vont produire des dégâts considérables" data "pour toutes les espèces vivantes fréquentant ces lieux. Et là, serez-vous assez robuste pour assumer" data "votre implication dans une telle catastrophe écologique à l'échelle mondiale ?" data "Voilà qui est assez difficile à prévoir..." rem fin des datas
sub fin() : rem Cas où un des deux camps a gagné dim_local a% , i% , t% , v% , y$ midi_instrument 107 for i%=58 to 70 midi_play i%,10 next i% for i%=1 to 312 if cc%(i%)=-12 or cc%(i%)=-13 or abs(cc%(i%))=14 or cc%(i%)=16 t%=t%+1 end_if if cc%(i%)=-11 or cc%(i%)=-15 v%=v%+1 end_if next i% a%=int((t%/(312-v%))*100) y$=fc$(int(rnd(7))+1) if c1%=0 caption 328,cf$(1)+chr$(13)+cf$(3)+str$(a%)+"%"+chr$(13)+cf$(4)+y$+chr$(13)+chr$(13)+cf$(5) else color 327,255,255,0 color 328,255,255,0 caption 328,cf$(2)+chr$(13)+cf$(3)+str$(a%)+"%"+chr$(13)+cf$(4)+y$+chr$(13)+chr$(13)+cf$(5) for i%=1 to 312 if (cc%(i%)<0) and (cc%(i%)>-11) color i%+10,185,160,60 end_if next i% end_if active 350 end_sub
sub herbe() : rem Affichage de l`herbe tout autour dim_local i% , j% 2d_target_is 4 2d_fill_color 110,70,0 2d_pen_color 110,70,0 2d_rectangle 1,1,1220,10 : rem Herbe en haut 2d_pen_color 0,255,0 for i%=1 to 1000 j%=int(rnd(1220))+1 2d_line j%,int(rnd(10))+1,j%-20+int(rnd(20))+1,int(rnd(10))+1 next i% 2d_pen_color 110,70,0 2d_rectangle 1,660,1220,681 : rem Herbe en bas 2d_pen_color 0,255,0 for i%=1 to 2000 j%=int(rnd(1220))+1 2d_line j%,660+int(rnd(21))+1,j%-20+int(rnd(20))+1,660+int(rnd(21))+1 next i% 2d_pen_color 110,70,0 2d_rectangle 1,11,10,662 : rem Herbe à gauche 2d_pen_color 0,255,0 for i%=1 to 500 j%=int(rnd(652))+11 2d_line int(rnd(10))+1,j%,int(rnd(10))+1,j%-20+int(rnd(21))+1 next i% 2d_pen_color 110,70,0 2d_rectangle 1210,11,1220,662 : rem Herbe à droite 2d_pen_color 0,255,0 for i%=1 to 500 j%=int(rnd(652))+11 2d_line 1210+int(rnd(10))+1,j%,1210+int(rnd(10))+1,j%-20+int(rnd(21))+1 next i% end_sub
sub ici() : rem Choisir l`emplacement de ses sous-marins dim_local i% , n% , l% , p% n%=number_click if cc%(n%-10)=0 select os% : rem Dessin du submersible ami sur la carte case 1 : rem Orientation vers la droite ----------------------------- if int((n%+oa%(nm%)-12)/24)<>int((n%-11)/24) p%=1 end_if for i%=n% to n%+oa%(nm%)-1 if i%-10<313 if cc%(i%-10)<>0 p%=1 end_if else p%=1 end_if next i% if p%=0 for i%=n% to n%+oa%(nm%)-1 color i%,70,150,200 cc%(i%-10)=nm% next i% caption n%+int(oa%(nm%)/2),chr$(76) font_color n%+int(oa%(nm%)/2),0,60,200 hint n%+int(oa%(nm%)/2),"Périscope" vue_h(n%,oa%(nm%),14) else beep end_sub end_if case 2 : rem Orientation vers le bas -------------------------------- l%=n%+(oa%(nm%)-1)*24 if l%<322 for i%=0 to oa%(nm%)-1 if cc%(n%+i%*24-10)<>0 p%=1 end_if next i% if p%=0 for i%=0 to oa%(nm%)-1 color n%+i%*24,70,150,200 cc%(n%+i%*24-10)=nm% next i% caption n%+24*int(oa%(nm%)/2),chr$(76) font_color n%+24*int(oa%(nm%)/2),0,60,200 hint n%+24*int(oa%(nm%)/2),"Périscope" vue_v(n%,oa%(nm%),14) else beep end_sub end_if else beep end_sub end_if case 3 : rem Orientation vers la gauche ----------------------------- if int((n%-oa%(nm%)-10)/24)<>int((n%-11)/24) p%=1 end_if for i%=n%-oa%(nm%)+1 to n% if i%-10>0 if cc%(i%-10)<>0 p%=1 end_if else p%=1 end_if next i% if p%=0 for i%=n%-oa%(nm%)+1 to n% color i%,70,150,200 cc%(i%-10)=nm% next i% caption n%-oa%(nm%)+int((oa%(nm%)+1)/2),chr$(76) font_color n%-oa%(nm%)+int((oa%(nm%)+1)/2),0,60,200 hint n%-oa%(nm%)+int((oa%(nm%)+1)/2),"Périscope" vue_h(n%-oa%(nm%)+1,oa%(nm%),14) else beep end_sub end_if case 4 : rem Orientation vers le haut ------------------------------- l%=n%+(1-oa%(nm%))*24 if l%>11 for i%=0 to 1-oa%(nm%) step -1 if cc%(n%+i%*24-10)<>0 p%=1 end_if next i% if p%=0 for i%=0 to 1-oa%(nm%) step -1 color n%+i%*24,70,150,200 cc%(n%+i%*24-10)=nm% next i% caption n%-24*int(oa%(nm%)/2),chr$(76) font_color n%-24*int(oa%(nm%)/2),0,60,200 hint n%-24*int(oa%(nm%)/2),"Périscope" vue_v(n%+(1-oa%(nm%))*24,oa%(nm%),14) else beep end_sub end_if else beep end_sub end_if end_select nm%=nm%+1 if nm%>10 : rem Fin d`implantation de tous les submersibles beep hide 325 hide 329 inactive 330 for i%=11 to 322 off_click i% next i% caption 328,"L'ennemi place"+chr$(13)+"ses submersibles" color 327,255,0,0 color 328,255,0,0 pause 100 color 327,255,255,0 color 328,255,255,0 pause 1000 ou() caption 328,"L'ennemi tire"+chr$(13)+"sans sommation" color 327,255,0,0 color 328,255,0,0 pause 100 color 327,255,255,0 color 328,255,255,0 pause 1000 jt%=-1 ordi() end_sub end_if sens3() end_if end_sub
sub menage() : rem Fait le ménage des 16 périmés ou inadéquats dim_local vp1_men% , vp2_men% , ind_men% for vp1_men%=1 to 312 if cc%(vp1_men%)=16 ind_men%=0 for vp2_men%=1 to 4 if vp1_men%+ca%(vp2_men%)<313 if (abs(left((vp1_men%+ca%(vp2_men%)+10))-(left(vp1_men%+10)))<75) if ((cc%(vp1_men%+ca%(vp2_men%)))>0) and ((cc%(vp1_men%+ca%(vp2_men%)))<11) ind_men%=1 end_if end_if end_if if vp1_men%-ca%(vp2_men%)>0 if (abs(left((vp1_men%-ca%(vp2_men%)+10))-(left(vp1_men%+10)))<75) if ((cc%(vp1_men%-ca%(vp2_men%)))>0) and ((cc%(vp1_men%-ca%(vp2_men%)))<11) ind_men%=1 end_if end_if end_if next vp2_men% if ind_men%=0 cc%(vp1_men%)=-14 end_if end_if next vp1_men% end_sub
sub niveau() : rem Choisir le niveau de jeu if nj%=1 caption 335,"2" nj%=2 else caption 335,"1" nj%=1 end_if end_sub
sub ordi() : rem Tour de l`ordinateur de jouer dim_local ioo% , joo% , soo% , too% , uoo% , voo% , woo% , yoo% , zoo% tt%=0 : hh%=0 for ioo%=1 to 312 : rem Repère les 16 if cc%(ioo%)=16 tt%=ioo% exit_for end_if next ioo% clear 390 if tt%=0 zoo%=22 for joo%=1 to 312 : rem Choisit le lieu de tir si pas de 16 yoo%=0 for ioo%=1 to 4 if joo%+ca%(ioo%)<313 if (abs(left((joo%+ca%(ioo%)+10))-(left(joo%+10)))<75) if ((cc%(joo%+ca%(ioo%)))<0) and ((cc%(joo%+ca%(ioo%)))>-14) and ((cc%(joo%+ca%(ioo%)))<>-11) yoo%=yoo%+1 end_if end_if end_if if joo%-ca%(ioo%)>0 if (abs(left((joo%-ca%(ioo%)+10))-(left(joo%+10)))<75) if ((cc%(joo%-ca%(ioo%)))<0) and ((cc%(joo%-ca%(ioo%)))>-14) and ((cc%(joo%-ca%(ioo%)))<>-11) yoo%=yoo%+1 end_if end_if end_if next ioo% if cc%(joo%)<0 yoo%=yoo%+10 end_if if yoo%<zoo% zoo%=yoo% hh%=joo% end_if if yoo%=0 item_add 390,joo% end_if next joo% if count(390)>0 too%=int(rnd(count(390)))+1 hh%=item_read$(390,too%) end_if if hh%=0 repeat hh%=int(rnd(312))+1 until cc%(hh%)>=0 end_if else yoo%=0 for too%=1 to 4 : rem Utilise son sonar directionnel if tt%+ca%(too%)<313 if (abs(left((tt%+ca%(too%)+10))-(left(tt%+10)))<75) if ((cc%(tt%+ca%(too%)))>0) and ((cc%(tt%+ca%(too%)))<11) yoo%=ca%(too%) end_if end_if end_if if tt%-ca%(too%)>0 if (abs(left((tt%-ca%(too%)+10))-(left(tt%+10)))<75) if ((cc%(tt%-ca%(too%)))>0) and ((cc%(tt%-ca%(too%)))<11) yoo%=0-ca%(too%) end_if end_if end_if next too% hh%=tt%+yoo% if yoo%=0 : rem Si pas trouvé de bateau ami, détruit le 16 cc%(tt%)=-14 repeat : rem Cherche un nouveau point au hasard hh%=int(rnd(312))+1 until cc%(hh%)>=0 end_if end_if pan() midi_instrument 117 midi_play 90,10 midi_instrument 127 if c2%>0 for ioo%=11 to 322 on_click ioo%,clic next ioo% end_if end_sub
sub ou() : rem Où l`ennemi place ses submersibles dim_local e% , f% , m% , s% , y% m%=240 : rem Placement du sous-marin ennemi de taille 4 s%=int(rnd(2)) if s%=0 repeat e%=int(rnd(m%))+1 until ((mod(e%-1,24)+1)<22) and ((mod(e%,24)+1)<22) and ((mod(e%+1,24)+1)<22) and ((mod(e%+2,24)+1)<22) and (cc%(e%)=0) and (cc%(e%+1)=0) and (cc%(e%+2)=0) and (cc%(e%+3)=0) for y%=0 to 3 cc%(e%+y%)=-1 next y% vue_h(e%+10,4,-14) else repeat e%=int(rnd(m%))+1 until ((mod(e%-1,24)+1)<22) and ((mod(e%+23,24)+1)<22) and ((mod(e%+47,24)+1)<22) and ((mod(e%+71,24)+1)<22) and (cc%(e%)=0) and (cc%(e%+24)=0) and (cc%(e%+48)=0) and (cc%(e%+72)=0) for y%=0 to 3 cc%(e%+y%*24)=-1 next y% vue_v(e%+10,4,-14) end_if m%=264 : rem Placements des sous-marins ennemis de taille 3 for f%=1 to 2 s%=int(rnd(2)) if s%=0 repeat e%=int(rnd(m%))+1 until ((mod(e%-1,24)+1)<23) and ((mod(e%,24)+1)<23) and ((mod(e%+1,24)+1)<23) and (cc%(e%)=0) and (cc%(e%+1)=0) and (cc%(e%+2)=0) for y%=0 to 2 cc%(e%+y%)=-1-f% next y% vue_h(e%+10,3,-14) else repeat e%=int(rnd(m%))+1 until ((mod(e%-1,24)+1)<23) and ((mod(e%+23,24)+1)<23) and ((mod(e%+47,24)+1)<23) and (cc%(e%)=0) and (cc%(e%+24)=0) and (cc%(e%+48)=0) for y%=0 to 2 cc%(e%+y%*24)=-1-f% next y% vue_v(e%+10,3,-14) end_if next f% m%=288 : rem Placements des sous-marins ennemis de taille 2 for f%=1 to 3 s%=int(rnd(2)) if s%=0 repeat e%=int(rnd(m%))+1 until ((mod(e%-1,24)+1)<24) and ((mod(e%,24)+1)<24) and (cc%(e%)=0) and (cc%(e%+1)=0) for y%=0 to 1 cc%(e%+y%)=-3-f% next y% vue_h(e%+10,2,-14) else repeat e%=int(rnd(m%))+1 until ((mod(e%-1,24)+1)<24) and ((mod(e%+23,24)+1)<24) and(cc%(e%)=0) and (cc%(e%+24)=0) for y%=0 to 1 cc%(e%+y%*24)=-3-f% next y% vue_v(e%+10,2,-14) end_if next f% m%=312 : rem Placement des sous-marins ennemis de taille 1 for f%=1 to 4 repeat e%=int(rnd(m%))+1 until cc%(e%)=0 cc%(e%)=-6-f% vue_h(e%+10,1,-14) next f% end_sub
sub pan() : rem Effet d`un tir de missile sur une des cases dim_local b% , c% , i% , j% , r% , k% , z%(10) , q$ , t$ , ypan% if jt%=1 k%=number_click else k%=hh%+10 end_if r%=cc%(k%-10) if r%=0 : rem Cas où il n`y a rien à cet endroit pour le joueur et l`ordi color k%,255,0,0 pause 100 color k%,250,220,250 pause 100 color k%,255,0,0 pause 100 font_color k%,160,90,250 color k%,150,0,150 if jt%=1 c%=int(rnd(2)) if c%=0 caption k%,chr$(244) hint k%,"Poissons morts flottant en milieu irradié" else caption k%,chr$(223) hint k%,"débrits ou cadavres flottant en milieu irradié" color 400,255,0,0 pause 100 color 400,150,180,0 caption 410,"Oups, vous avez"+chr$(13)+"fait exploser un"+chr$(13)+nc$(int(rnd(32))+1) midi_instrument 91 midi_play 107,10 midi_instrument 127 end_if else caption k%,chr$(244) hint k%,"Poissons morts flottant en milieu irradié" end_if cc%(k%-10)=-13 end_if if jt%=-1 : rem Cas où il y a un submersible en vue if r%=14 : rem C`est l`ordinateur qui joue color k%,255,0,0 pause 100 color k%,250,220,250 pause 100 color k%,255,0,0 pause 100 font_color k%,255,0,0 color k%,150,0,150 caption k%,chr$(119) hint k%,"Masse métallique détectée à proximité" cc%(k%-10)=16 end_if if r%=0 : rem Utilise son super sonar hypersensible de dernier cri if nj%=2 if k%>35 and k%<298 for i%=1 to 4 if (cc%(k%-10+ca%(i%))=14) cc%(k%-10+ca%(i%))=16 end_if if (cc%(k%-10-ca%(i%))=14) cc%(k%-10-ca%(i%))=16 end_if next i% end_if end_if menage() end_if else if abs(r%)=14 : rem C`est le joueur humain qui joue color k%,255,0,0 pause 100 color k%,250,220,250 pause 100 color k%,255,0,0 pause 100 font_color k%,255,0,0 color k%,150,0,150 caption k%,chr$(119) hint k%,"Masse métallique détectée à proximité" if r%=14 cc%(k%-10)=16 end_if end_if end_if if abs(r%)>0 and abs(r%)<11 : rem Cas où un sous-marin est touché, ami ou pas boum(k%) caption k%,pd$(int(rnd(8))+1) cc%(k%-10)=-12 for i%=1 to 312 if cc%(i%)=r% boum(i%+10) cc%(i%)=-12 end_if next i% if (tt%>0) and (r%>0) : rem Supprime les 16 périmés menage() end_if end_if b%=0 if i%<>313 : rem Bruit du tir de missile midi_play 60,6 pause 200 end_if if (abs(cc%(k%-10))>12) and (abs(cc%(k%-10))<17) : rem Couleur irradiée color k%,250,220,250 end_if if jt%=1 and r%>0 and r%<11 : rem L`amiral est très mécontent caption 328,cf$(6)+chr$(13)+cf$(7) pause 800 midi_instrument 94 midi_play 66,11 pause 50 midi_play 59,11 pause 3000 midi_instrument 96 midi_play 60,10 midi_instrument 127 end_if q$="Bilan actuel :"+chr$(13) : rem Fait le bilan des submersibles restant q$=q$+"Flotte ennemie :"+chr$(13) for j%=1 to 312 for i%=1 to 10 if cc%(j%)=0-i% z%(i%)=1 end_if next i% next j% for i%=1 to 10 if z%(i%)=1 t$=t$+str$(or%(i%)) end_if next i% t$=reverse$(t$) c1%=len(t$) q$=q$+t$+"="+str$(c1%)+chr$(13) : rem Affiche le résultat q$=q$+"Votre flotte :"+chr$(13) for i%=1 to 10 z%(i%)=0 next i% t$="" for j%=1 to 312 for i%=1 to 10 if cc%(j%)=i% z%(i%)=z%(i%)+1 end_if next i% next j% for j%=1 to 9 for i%=1 to 9 if z%(i%)>z%(i%+1) b%=z%(i%) z%(i%)=z%(i%+1) z%(i%+1)=b% end_if next i% next j% for i%=1 to 10 if z%(i%)>0 t$=t$+str$(z%(i%)) end_if next i% c2%=len(t$) q$=q$+t$+"="+str$(c2%)+chr$(13)+chr$(13) : rem Affiche le résultat if c1%=0 or c2%=0 for i%=1 to 312 off_click i%+10 next i% fin() exit_sub end_if : rem Passe au suivant if jt%=-1 caption 328,q$+"A votre tour de jouer"+chr$(13)+"Cliquez sur une case" color 327,0,255,255 color 328,0,255,255 else caption 328,q$+"C'est au tour"+chr$(13)+"de l'ennemi" color 327,255,255,0 color 328,255,255,0 end_if jt%=0-jt% end_sub
sub quitter() : rem Quitter le jeu dim_local a% , a$ , i$ i$=chr$(13) a$="Dites donc, c'est un peu facile de se débiner"+i$ a$=a$+"après avoir mis la planète dans un tel état..."+i$ a$=a$+"Attendez, vous voulez vraiment partir ?" a%=message_confirmation_yes_no(a$) if a%=1 file_delete "Batnavoramic.bmp" midi_off terminate end_if end_sub
sub rejouer() : rem Le joueur demande à faire une nouvelle partie dim_local i% inactive 350 c1%=0 c2%=0 hh%=0 tt%=0 os%=0 nm%=1 for i%=1 to 312 cc%(i%)=0 caption i%+10,chr$(223) color i%+10,70,190,250 font_color i%+10,70,170,250 show i%+10 hint_hide i%+10 next i% color 4,220,170,0 color 5,200,170,0 choix() herbe() color 327,0,255,255 color 328,0,255,255 caption 328,cj$(1) active 340 beep end_sub
sens: : rem Placer le sous marin ami sur la carte ici() return
sub sens2() : rem Tourner le sous-marin ami avant de le placer sur la carte os%=os%+1 if os%>4 os%=1 end_if select os% case 1 3d_position 1,-0.3,0,0 : rem Submersible dirigé vers la droite 3d_z_rotate 2,90 3d_z_rotate 3,270 3d_position 3,0.38,0,0 3d_position 4,-0.25,0,0.13 case 2 3d_position 1,0,0.3,0 : rem Submersible dirigé vers le bas 3d_z_rotate 2,0 3d_z_rotate 3,180 3d_position 3,0,-0.38,0 3d_position 4,0,0.25,0.13 case 3 3d_position 1,0.3,0,0 : rem Submersible dirigé vers la gauche 3d_z_rotate 2,90 3d_z_rotate 3,90 3d_position 3,-0.38,0,0 3d_position 4,0.25,0,0.13 case 4 3d_position 1,0,-0.3,0 : rem Submersible dirigé vers le haut 3d_z_rotate 2,0 3d_z_rotate 3,0 3d_position 3,0,0.38,0 3d_position 4,0,-0.25,0.13 end_select caption 328,ns$(oa%(nm%))+chr$(13)+cj$(2)+chr$(13)+chr$(13)+str$(oa%(nm%)) end_sub
sub sens3() : rem Choix de la taille du dessin du submersible ami select oa%(nm%) case 1 width 325,25 height 325,10 file_load 325,"Batnavoramic.bmp" os%=os%-1 sens2() case 2 width 325,55 height 325,21 file_load 325,"Batnavoramic.bmp" os%=os%-1 sens2() case 3 width 325,80 height 325,30 file_load 325,"Batnavoramic.bmp" os%=os%-1 sens2() case 4 width 325,105 height 325,40 file_load 325,"Batnavoramic.bmp" os%=os%-1 sens2() end_select end_sub
sub vue_h(t%,d%,c%) : rem Détermination des cases en vue potentielles horizontales dim_local w%(14) , v% , q% for v%=1 to d%+2 w%(v%)=t%+v%-26 w%(v%+d%+2)=t%+v%+22 next v% w%(13)=t%-1 w%(14)=t%+d% for v%=1 to 14 if mod(t%-10,24)=1 w%(1)=0 w%(d%+3)=0 w%(13)=0 end_if if mod(t%+d%-11,24)=0 w%(d%+2)=0 w%(d%*2+4)=0 w%(14)=0 end_if if w%(v%)>10 and w%(v%)<323 if cc%(w%(v%)-10)=0 cc%(w%(v%)-10)=c% end_if end_if next v% end_sub
sub vue_v(t%,d%,c%) : rem Détermination des cases en vue potentielles verticales dim_local w%(14) , v% , h% for v%=1 to d%+2 w%(v%)=t%+v%*24-49 w%(v%+d%+2)=t%+v%*24-47 next v% w%(13)=t%-24 w%(14)=t%+d%*24 for v%=1 to 14 if mod(t%-10,24)=1 for h%=1 to d%+2 w%(h%)=0 next h% end_if if mod(t%-10,24)=0 for h%=d%+3 to d%*2+4 w%(h%)=0 next h% end_if if w%(v%)>10 and w%(v%)<323 if cc%(w%(v%)-10)=0 cc%(w%(v%)-10)=c% end_if end_if next v% end_sub
| |
|