jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Ven 26 Jan 2018 - 18:56 | |
| - Code:
-
rem ' Mah-Jong français - par jjn4 - le 04/01/2018 ============================ dim BR$ : rem Bonne réponse dim CT%(585) : rem Contenu des tuiles dim DTC% : rem Dernière Tuile Cliquée dim II1% , II2% : rem Indicateur d`Indices 1 et 2 utilisés dim IRA% : rem Indicateur de Recul et d`Avancée dim IS% : rem Indicateur de demande de superficie dim DLS%(7) , FLS%(7) : rem Limites de Superficie possible (Début et Fin) dim NAU% : rem Nombre d`Annulations utilisées dim NB$(10) : rem Noms des Boutons de commande dim NJ% : rem Niveau de Jeu dim NTC%(2) : rem Numéro des deux Tuiles Choisies dim NTR% : rem Nombre de Tuiles Restant à retirer dim NTS% : rem Numéro de la Tuile Sélectionnée dim QN$,QD$,QP$,QS$,QA$ : rem Quels Numéro-Département-Préfecture-SousP-Aire dim RJ% : rem La réponse est juste dim TQP% : rem Type de Question Posée dim V1M% , V2M% , V3M% : rem Variables globales à utilisation Multiple dim VP$ : rem Version du Programme NJ%=1 VP$="Ver-040118.1.3" label clic : rem Redirection de tous les on-click rem Form0 et préparation du jeu =============================================== width 0,1365 height 0,720 caption 0," Mah-Jong français - par jjn4 - "+VP$ for V1M% = 1 to 10 read NB$(V1M%) next V1M% for V1M% = 1 to 7 read DLS%(V1M%) read FLS%(V1M%) next V1M%
rem Écran de présentation ===================================================== form 10 width 10,1365 height 10,720 caption 10," Espace publicitaire" picture 20 format(20,10,650,80,500,500,0,8,0) stretch_on 20 file_load 20,"MJF-d-010.bmp" picture 25 format(25,10,188,80,500,500,0,4,0) stretch_on 25 file_load 25,"MJF-d-010.bmp" 2d_target_is 25 2d_flood 44,37,255,200,255 2d_pen_color 255,0,0 2d_point 30,30 2d_point 55,60 2d_point 73,17 2d_point 50,34 picture 30 format(30,10,688,48,500,500,0,4,0) stretch_on 30 file_load 30,"MJF-d-310.bmp" 2d_target_is 30 2d_flood 44,37,0,255,0 2d_pen_color 255,0,0 2d_point 52,22 2d_point 48,28 2d_point 22,50 picture 35 format(35,10,500,120,50,25,0,16,0) print_target_is 35 print "AIN" picture 40 format(40,10,343,250,80,13,0,8,0) 2d_target_is 40 2d_fill_color 255,200,255 print_target_is 40 print "Bourg-en-Bresse" picture 45 format(45,10,522,440,29,13,0,8,0) 2d_target_is 45 2d_fill_color 255,200,255 print_target_is 45 print "Belley" picture 50 format(50,10,635,197,20,13,0,8,0) 2d_target_is 50 2d_fill_color 255,200,255 print_target_is 50 print "Gex" picture 55 format(55,10,490,275,35,13,0,8,0) 2d_target_is 55 2d_fill_color 255,200,255 print_target_is 55 print "Nantua" picture 60 format(60,10,960,440,180,25,0,16,0) print_target_is 60 print "HAUTE-GARONNE" picture 65 format(65,10,995,168,44,13,0,8,0) 2d_target_is 65 2d_fill_color 0,255,0 print_target_is 65 print "Toulouse" picture 70 format(70,10,978,207,27,13,0,8,0) 2d_target_is 70 2d_fill_color 0,255,0 print_target_is 70 print "Muret" picture 75 format(75,10,797,345,70,13,0,8,0) 2d_target_is 75 2d_fill_color 0,255,0 print_target_is 75 print "Saint-Gaudens" alpha 80 format(80,10,80,15,1,1,1,28,2) caption 80,"Mah-Jong français" alpha 85 format(85,10,250,600,1,1,1,28,1) caption 85,"Votre jeu est en préparation - veuillez patienter" rem Aménagement des tuiles - N° 111 à 585 irrégulier ========================== panel 90 inactive 90 width 90,690 height 90,675 alpha 95 format(95,90,100,80,1,1,1,30,2) font_name 95,"Arial" for V3M% = 1 to 5 for V2M% = 1 to 8 for V1M% = 9 to 1 step -1 if V1M%=>V3M% if (10-V1M%)=>V3M% picture V1M%+V2M%*10+V3M%*100 parent V1M%+V2M%*10+V3M%*100,90 left V1M%+V2M%*10+V3M%*100,(V1M%-1)*75+(V3M%-1)*7+3 top V1M%+V2M%*10+V3M%*100,(V2M%-1)*80-(V3M%-1)*6+27 width V1M%+V2M%*10+V3M%*100,80 height V1M%+V2M%*10+V3M%*100,79 on_click V1M%+V2M%*10+V3M%*100,clic end_if end_if next V1M% next V2M% next V3M% rem Aménagement des cartes ==================================================== picture 600 left 600,695 top 600,5 width 600,400 height 600,400 file_load 600,"MJF-Carte1.bmp" picture 610 left 610,690 top 610,245 width 610,80 height 610,79 color 610,255,230,230 picture 620 left 620,690 top 620,325 width 620,80 height 620,79 color 620,255,230,230 button 630 format(630,0,695,5,100,40,1,12,0) hide 630 caption 630,"Indice 1" on_click 630,clic button 640 format(640,0,995,5,100,40,1,12,0) hide 640 caption 640,"Indice 2" on_click 640,clic rem Aménagement de la zone des renseignements ================================= panel 700 left 700,695 top 700,410 width 700,400 height 700,265 alpha 705 format(705,700,5,5,1,1,1,12,1) caption 705,"Nom :" alpha 710 format(710,700,60,5,1,1,1,12,2) alpha 715 format(715,700,314,5,1,1,1,12,1) caption 715,"N° :" alpha 720 format(720,700,352,5,1,1,1,12,2) alpha 725 format(725,700,5,32,1,1,1,12,1) caption 725,"Chef-lieu :" alpha 730 format(730,700,95,32,1,1,1,12,2) alpha 735 format(735,700,275,32,1,1,1,12,1) caption 735,"Aire:" alpha 740 format(740,700,317,32,1,1,1,12,2) alpha 742 format(742,700,372,35,1,1,0,10,1) caption 742,"km²" container 745 format(745,700,2,59,395,96,1,12,1) caption 745,"Sous-préfectures :" list 750 format(750,745,5,22,190,67,0,12,2) font_bold_off 750 list 760 format(760,745,198,22,190,67,0,12,2) font_bold_off 760 combo 770 format(770,700,5,160,390,20,1,22,3) inactive 770 font_name 770,"Arial" text 770,"Niveau très faible" alpha 780 format(780,700,10,210,1,1,1,12,2) alpha 790 format(790,700,10,235,1,1,1,12,2)
rem Aménagement de la zone des étages et des scores =========================== panel 800 left 800,1100 top 800,5 width 800,240 height 800,113 for V1M% = 1 to 5 panel V1M%*10+800 format(V1M%*10+800,800,(V1M%-1)*46+5,5,46,25,1,12,0) caption V1M%*10+800,V1M% on_click V1M%*10+800,clic next V1M% color 810,255,255,0 color 820,255,200,255 color 830,0,255,0 color 840,255,180,0 color 850,0,220,255 alpha 860 format(860,800,5,35,1,1,1,12,4) caption 860," É T A G E S " alpha 865 format(865,800,10,60,1,1,1,12,1) color 865,255,255,255 caption 865," S C O R E " alpha 870 format(870,800,35,85,1,1,1,12,2) caption 870,"0000" alpha 875 format(875,800,120,60,1,1,1,12,1) color 875,255,255,255 caption 875," R E C O R D " alpha 880 format(880,800,155,85,1,1,1,12,2) caption 880,"3000" rem Aménagement des boutons de commande ======================================= panel 900 left 900,1100 top 900,120 width 900,240 height 900,555 inactive 900 for V1M% = 1 to 10 button V1M%*10+900 format(V1M%*10+900,900,5,(V1M%-1)*55+3,230,52,1,20,0) font_name V1M%*10+900,"Arial" caption V1M%*10+900,NB$(V1M%) on_click V1M%*10+900,clic next V1M%
rem Listes servant au fonctionnement du jeu =================================== for V1M% = 1100 to 1220 step 10 dlist V1M% next V1M% file_load 1100,"MJF-t-Noms.txt" : rem Liste des noms des départements file_load 1110,"MJF-t-Numéros.txt" : rem Liste des numéros des départements file_load 1120,"MJF-t-Chefs.txt" : rem Liste des Chefs-lieux des départements file_load 1130,"MJF-t-Sous1.txt" : rem Liste des sous-préf. par département file_load 1140,"MJF-t-Sous2.txt" : rem Liste totale des sous-préfectures file_load 1150,"MJF-t-Aires.txt" : rem Liste des superficies des départements file_load 1160,"MJF-t-Localis.txt" : rem Liste des localisations des dép. rem Listes 1170 à 1190 servant au fonctionnement interne de l`ordinateur rem Liste 1200 répertorie le contenu des tuiles rem Liste 1210 = Reculer et liste 1220 = Avancer rejouer() display active 90 active 900 hide 10 end : rem ' Début des routines ================================================
sub activer() : rem Activer les tuiles disponibles ============================ dim_local v1ac% , v2ac% , v3ac% , v4ac% , v5ac% inactive 90 for v1ac% = 111 to 585 if object_exists(v1ac%)=1 active v1ac% end_if next v1ac% for v1ac% = 1 to 4 for v2ac% = 1 to 8 for v3ac% = 2 to 8 v4ac%=v1ac%*100+v2ac%*10+v3ac% if object_exists(v4ac%)=1 if object_exists(v4ac%-1)=1 if object_exists(v4ac%+1)=1 if show(v4ac%)=1 if show(v4ac%-1)=1 if show(v4ac%+1)=1 inactive v4ac% end_if end_if end_if end_if end_if end_if if object_exists(v4ac%+100)=1 if show(v4ac%+100)=1 inactive v4ac% end_if end_if next v3ac% next v2ac% next v1ac% end_sub
sub aide() : rem Explications sur le fonctionnement du programme ============== dim_local v1ai$ , v2ai$ application_title " Explications sur le fonctionnement du jeu" file_open_read 1,"MJF-Aide.txt" while file_eof(1)<>1 file_readln 1,v2ai$ v1ai$=v1ai$+v2ai$+chr$(13) end_while file_close 1 message v1ai$ end_sub
sub aire(qd%) : rem Affichage de la superficie du département ================= caption 740,item_read$(1150,qd%) end_sub
sub annuler(qo%) : rem Annuler les tuiles sélectionnées ======================= rem qo% = Quelle Origine de l`appel de routine dim_local v1an$ , v2an% , v3an% for v3an% = 1 to 2 if NTC%(v3an%)>0 v2an%=CT%(NTC%(v3an%)) v1an$=item_read$(1110,abs(CT%(NTC%(v3an%)))) if len(v1an$)<3 v1an$=v1an$+"0" end_if if v2an%<0 file_load NTC%(v3an%),"MJF-b-"+v1an$+".bmp" else file_load NTC%(v3an%),"MJF-d-"+v1an$+".bmp" couleur(NTC%(v3an%)) end_if end_if next v3an% if qo%=1 caption 780,"Cible(s) annulée(s)" caption 790,"Vous pouvez continuer" end_if inactive 630 inactive 640 NAU%=NAU%+1 if NJ%>1 if NAU%>(100+(NJ%-1)*20) compte(-10) if qo%=1 caption 780,"Cible(s) annulée(s) (10 points de moins)" end_if end_if end_if NTS%=0 NTC%(1)=0 NTC%(2)=0 end_sub
sub avancer() : rem Retour en avant dans le déroulement du jeu ================ dim_local v1av% , v2av% for v1av% = 1 to 2 hide val(item_read$(1220,count(1220))) item_add 1210,item_read$(1220,count(1220)) item_delete 1220,count(1220) next v1av% v2av%=val(caption$(870)) v2av%=v2av%+10 caption 870,v2av% caption 780,"Et c'est reparti vers l'avant" caption 790,"Les 2 dernières tuiles ont à nouveau disparu" IRA%=1 NTR%=NTR%-2 if count(1220)=0 inactive 950 end_if active 940 end_sub
sub blason(qd%) : rem Affichage du blason du département ====================== file_load 620,"MJF-b-"+item_read$(1110,qd%)+".bmp" end_sub
sub carte(qd%) : rem Affichage de la localisation du département ============== dim_local v1ca% , v2ca$ : rem Variables à utilisation multiple dim_local cxca% , cyca% : rem Coordonnées en X et Y du département v2ca$=".jpg" cxca%=val(left$(item_read$(1160,qd%),3)) cyca%=val(mid$(item_read$(1160,qd%),4,3)) v1ca%=val(right$(item_read$(1160,qd%),1)) if v1ca%=1 v2ca$=".bmp" end_if file_load 600,"MJF-Carte"+str$(v1ca%)+v2ca$ 2d_target_is 600 2d_pen_width 2 2d_pen_color 255,0,0 if mid$(item_read$(1160,qd%),7,1)="+" 2d_line cxca%-5,cyca%-5,cxca%+5,cyca%+5 2d_line cxca%-5,cyca%+5,cxca%+5,cyca%-5 else 2d_flood cxca%,cyca%,255,0,0 end_if end_sub
sub carte2(qd%) : rem Affichage d`une croix pour le département =============== dim_local v1c2% dim_local cxc2% , cyc2% : rem Coordonnées en X et Y du département cxc2%=val(left$(item_read$(1160,qd%),3)) cyc2%=val(mid$(item_read$(1160,qd%),4,3)) v1c2%=val(right$(item_read$(1160,qd%),1)) if v1c2%=1 2d_target_is 600 2d_pen_width 2 2d_pen_color 255,0,0 2d_line cxc2%-5,cyc2%-5,cxc2%+5,cyc2%+5 2d_line cxc2%-5,cyc2%+5,cxc2%+5,cyc2%-5 end_if end_sub
sub chef(qd%) : rem Affichage du chef-lieu du département ===================== dim_local v1ch$ v1ch$=item_read$(1120,qd%) if len(v1ch$)>19 font_bold_off 730 else font_bold 730 end_if caption 730,item_read$(1120,qd%) end_sub
sub choix() : rem Choix d`une tuile par l`utilisateur ========================= inactive 90 NTS%=NTS%+1 if NTS%>2 annuler(0) NTS%=1 end_if NTC%(NTS%)=number_click 2d_target_is number_click 2d_flood 10,70,200,0,255 if NTS%=2 if NJ%>1 active 770 clear 770 caption 780,"Répondez à la question" caption 790,"Et vous aurez des points en plus" else caption 780,"Deux tuiles ont été cliquées" caption 790,"Cliquez sur « Retirer » pour les enlever" end_if else caption 780,"Cliquez encore sur une autre tuile" if NJ%>1 caption 790,"Vous pourrez alors répondre à une question" else caption 790,"Et vous pourrez ensuite les retirer" end_if end_if select NJ% case 1 : niv1(0) case 2 : niv2() case 3 : niv3() case 4 : niv4() case 5 : niv5() case 6 : niv6() end_select if NTS%=2 if NJ%>2 active 630 end_if end_if active 90 end_sub
clic: : rem Redirection de tous les on-click ================================== if number_click>110 and number_click<586 DTC%=number_click vider() choix() if NTS%=1 text 770,"" clear 770 inactive 770 end_if inactive 970 active 910 active 920 active 930 active 960 end_if if NJ%=1 if int(number_click/10)>80 and int(number_click/10)<86 ville() end_if end_if select number_click case 630 : indice1() case 640 : indice2() case 910 : annuler(1) case 920 : retirer() case 930 : suggest() case 940 : reculer() case 950 : avancer() case 960 : restruct() case 970 : niveau() case 980 : rejouer() case 990 : aide() case 1000 : quitter() end_select return
sub compte(cp%) : rem Décompte des points ===================================== rem cp% = Combien de Points à décompter en plus ou en moins dim_local v1co% v1co%=val(caption$(870)) v1co%=v1co%+cp% caption 870,v1co% end_sub
sub couleur(qc%) : rem Colorer le département selon son étage ================ 2d_target_is qc% select int(qc%/100) case 1 : 2d_flood 44,37,255,255,0 case 2 : 2d_flood 44,37,255,200,255 case 3 : 2d_flood 44,37,0,255,0 case 4 : 2d_flood 44,37,255,180,0 case 5 : 2d_flood 44,37,0,220,255 end_select end_sub
rem Datas ===================================================================== data "Annuler" , "Retirer" , "Suggestion" , "Reculer" , "Avancer" data "Restructurer" , "Niveau 1" , "Rejouer" , "Aide" , "Quitter" data 0 , 3000 , 3000 , 5000 , 5000 , 6000 , 6000 , 7000 data 7000 , 8000 , 8000 , 10000 , 10000 , 100000 rem Fin des datas
sub eval() : rem Évaluation de la réponse donnée par le joueur ================ dim_local v1ev$ v1ev$=text$(770) RJ%=0 if v1ev$=BR$ RJ%=1 end_if if TQP%=4 if instr(BR$,v1ev$)>0 RJ%=1 end_if end_if if TQP%=5 if numeric(BR$)=1 if DLS%(item_index(770))<=val(BR$) if val(BR$)<=FLS%(item_index(770)) RJ%=1 end_if end_if end_if end_if end_sub
sub format(qn%,qp%,ql%,qt%,qw%,qh%,qb%,qs%,qc%) rem qn%=Quel Numéro, qp%=Quel Parent, rem ql%=Quel Left, qt%=Quel Top, qw%=Quel Width, qh%=Quel Height rem qb%=Quel Font_Bold, qs%=Quel Font_Size, qc%=Quel Font_Color if qp%>0 parent qn%,qp% end_if left qn%,ql% top qn%,qt% width qn%,qw% height qn%,qh% if qb%>0 font_bold qn% end_if font_size qn%,qs% select qc% case 1 : font_color qn%,255,0,0 case 2 : font_color qn%,0,0,255 case 3 : font_color qn%,255,0,255 case 4 : color qn%,255,255,255 end_select end_sub
sub indice1() : rem Utilisation de l`indice 1 ================================= dim_local v1i1% v1i1%=abs(CT%(NTC%(2))) if NJ%>4 active 640 end_if select NJ% case 3 : carte(v1i1%) case 4 : profil(v1i1%) : blason(v1i1%) case 5 : profil(v1i1%) : blason(v1i1%) case 6 : profil(v1i1%) : blason(v1i1%) end_select inactive 630 II1%=1 end_sub
sub indice2() : rem Utilisation de l`indice 2 ================================= dim_local v1i2% v1i2%=abs(CT%(NTC%(2))) if NJ%=5 file_load 600,"MJF-Carte1.bmp" end_if if NJ%=6 file_load 600,"MJF-Carte4.jpg" carte2(v1i2%) end_if inactive 640 II2%=1 end_sub
sub niv1(qo%) : rem Niveau 1 ================================================== dim_local v1n1% rem qo% = Quelle Origine de cet appel v1n1%=abs(CT%(DTC%)) nom(v1n1%) numero(v1n1%) chef(v1n1%) aire(v1n1%) sous(v1n1%) profil(v1n1%) blason(v1n1%) if qo%=1 if RJ%=1 2d_target_is 610 2d_flood 10,70,0,255,0 2d_target_is 620 2d_flood 10,70,0,255,0 else 2d_target_is 610 2d_flood 10,70,255,0,0 2d_target_is 620 2d_flood 10,70,255,0,0 end_if end_if carte(v1n1%) end_sub
sub niv2() : rem Niveau 2 ===================================================== dim_local v1n2% v1n2%=abs(CT%(DTC%)) numero(v1n2%) chef(v1n2%) aire(v1n2%) sous(v1n2%) profil(v1n2%) blason(v1n2%) carte(v1n2%) if NTS%=2 quel_nom() end_if end_sub
sub niv3() : rem Niveau 3 ===================================================== dim_local v1n3% , v2n3% v1n3%=abs(CT%(DTC%)) chef(v1n3%) aire(v1n3%) sous(v1n3%) profil(v1n3%) blason(v1n3%) if NTS%=2 v2n3%=int(rnd(2))+1 if v2n3%=1 quel_nom() else quel_num() end_if end_if end_sub
sub niv4() : rem Niveau 4 ===================================================== dim_local v1n4% , v2n4% v1n4%=abs(CT%(DTC%)) aire(v1n4%) sous(v1n4%) if NTS%=2 v2n4%=int(rnd(3))+1 select v2n4% case 1 : quel_nom() case 2 : quel_num() case 3 : quel_chef() end_select end_if end_sub
sub niv5() : rem Niveau 5 ===================================================== dim_local v1n5% , v2n5% v1n5%=abs(CT%(DTC%)) aire(v1n5%) color 600,255,230,230 if NTS%=2 v2n5%=int(rnd(4))+1 select v2n5% case 1 : quel_nom() case 2 : quel_num() case 3 : quel_chef() case 4 : quel_sous() end_select end_if end_sub
sub niv6() : rem Niveau 6 ===================================================== dim_local v1n6% , v2n6% v1n6%=abs(CT%(DTC%)) color 600,255,230,230 if NTS%=2 v2n6%=int(rnd(5))+1 select v2n6% case 1 : quel_nom() case 2 : quel_num() case 3 : quel_chef() case 4 : quel_sous() case 5 : quel_aire() end_select end_if end_sub
sub niveau() : rem Choisir le niveau de jeu =================================== dim_local v1ni% v1ni%=val(right$(caption$(970),1)) v1ni%=v1ni%+1 if v1ni%>6 v1ni%=1 end_if caption 970,"Niveau "+str$(v1ni%) NJ%=v1ni% hide 630 hide 640 inactive 630 inactive 640 file_load 600,"MJF-Carte1.bmp" caption 920,"Solution" select NJ% case 1 text 770,"Niveau très faible" caption 920,"Retirer" case 2 : text 770,"Niveau faible" case 3 text 770,"Niveau assez moyen" show 630 case 4 text 770,"Niveau moyen" show 630 case 5 text 770,"Niveau plus corsé" show 630 show 640 color 600,255,230,230 case 6 text 770,"Niveau super pro" show 630 show 640 color 600,255,230,230 end_select end_sub
sub nom(qd%) : rem Affichage du nom du département ============================ caption 710,item_read$(1100,qd%) end_sub
sub numero(qd%) : rem Affiche du numéro du département ======================== dim_local v1nu$ v1nu$=item_read$(1110,qd%) if right$(v1nu$,1)="0" v1nu$=left$(v1nu$,2) end_if caption 720,v1nu$ end_sub
sub profil(qd%) : rem Affichage du profil du département ====================== file_load 610,"MJF-d-"+item_read$(1110,qd%)+".bmp" 2d_target_is 610 2d_flood 44,37,200,200,200 end_sub
sub quel_aire() : rem On demande la superficie du département ================= dim_local v1qa% , v2qa% v1qa%=abs(CT%(DTC%)) item_add 770,"0 à 3.000 km²" item_add 770,"3.000 à 5.000 km²" item_add 770,"5.000 à 6.000 km²" item_add 770,"6.000 à 7.000 km²" item_add 770,"7.000 à 8.000 km²" item_add 770,"8.000 à 10.000 km²" item_add 770,"10.000 à 100.000 km²" text 770,"Quelle superficie ?" BR$=item_read$(1150,v1qa%) TQP%=5 end_sub
sub quel_chef() : rem On demande le chef-lieu du départemnt =================== dim_local v1qc% , v2qc% v1qc%=abs(CT%(DTC%)) for v2qc% = 1 to 6 item_add 770,item_read$(1120,int(rnd(count(1120)))+1) next v2qc% item_insert 770,int(rnd(6))+1,item_read$(1120,v1qc%) text 770,"Quel chef-lieu ?" BR$=item_read$(1120,v1qc%) TQP%=3 end_sub
sub quel_nom() : rem On demande le nom du département ========================= dim_local v1qn% , v2qn% v1qn%=abs(CT%(DTC%)) for v2qn% = 1 to 6 item_add 770,item_read$(1100,int(rnd(count(1100)))+1) next v2qn% item_insert 770,int(rnd(6))+1,item_read$(1100,v1qn%) text 770,"Quel département ?" BR$=item_read$(1100,v1qn%) TQP%=1 end_sub
sub quel_num() : rem On demande le numéro du département ====================== dim_local v1qm% , v2qm% , v3qm$ v1qm%=abs(CT%(DTC%)) for v2qm% = 1 to 6 v3qm$=item_read$(1110,int(rnd(count(1110)))+1) if right$(v3qm$,1)="0" v3qm$=left$(v3qm$,2) end_if item_add 770,v3qm$ next v2qm% v3qm$=item_read$(1110,v1qm%) if right$(v3qm$,1)="0" v3qm$=left$(v3qm$,2) end_if item_insert 770,int(rnd(6))+1,v3qm$ text 770,"Quel N° de département ?" BR$=v3qm$ TQP%=2 end_sub
sub quel_sous() : rem On demande une sous-péfecture =========================== dim_local v1qs% , v2qs% , v3qs$ v1qs%=abs(CT%(DTC%)) for v2qs% = 1 to 6 item_add 770,item_read$(1140,int(rnd(count(1140)))+1) next v2qs% clear 1170 v3qs$=item_read$(1130,v1qs%) if v3qs$<>"" repeat v2qs%=instr(v3qs$,"&") if v2qs%>0 item_add 1170,left$(v3qs$,v2qs%-1) v3qs$=right$(v3qs$,len(v3qs$)-v2qs%) v2qs%=0 else item_add 1170,v3qs$ v3qs$="" end_if until v3qs$="" v2qs%=int(rnd(count(1170)))+1 item_insert 770,int(rnd(6))+1,item_read$(1170,v2qs%) text 770,"Quelle sous-préfecture ?" BR$=item_read$(1130,v1qs%) TQP%=4 else quel_aire() end_if end_sub
sub quitter() : rem Quitter le programme ====================================== dim_local v1qu% v1qu%=message_confirmation_yes_no("Déjà, vous voulez partir, confirmez-vous ?") if v1qu%=1 terminate end_if end_sub
sub reculer() : rem Revenir en arrière du déroulement du jeu ================== dim_local v1cu% , v2cu% for v1cu% = 1 to 2 show val(item_read$(1210,count(1210))) item_add 1220,item_read$(1210,count(1210)) item_delete 1210,count(1210) next v1cu% v2cu%=val(caption$(870)) v2cu%=v2cu%-30 caption 870,v2cu% caption 780,"Retour en arrière" caption 790,"Les 2 dernières tuiles enlevées ont réapparu" IRA%=1 NTR%=NTR%+2 if count(1210)=0 inactive 940 end_if active 950 end_sub
sub rejouer() : rem Refaire une nouvelle partie =============================== dim_local v1jo% , v2jo% , v3jo% , v4jo% , v5jo$ inactive 90 inactive 900 inactive 770 text 770,"" for v1jo% = 910 to 960 step 10 inactive v1jo% next v1jo% color 610,255,230,230 color 620,255,230,230 if NJ%<5 file_load 600,"MJF-Carte1.bmp" else color 600,255,230,230 end_if for v1jo% = 710 to 740 step 10 caption v1jo%,"" next v1jo% clear 750 clear 760 for v1jo% = 1170 to 1190 step 10 clear v1jo% next v1jo% for v1jo% = 1 to 2 for v2jo% = 1 to 101 item_add 1170,item_read$(1110,v2jo%) next v2jo% next v1jo% for v1jo% = 1 to 25 v2jo%=int(rnd(count(1170)))+1 item_add 1180,v2jo% if v2jo%>101 item_add 1190,"b" else item_add 1190,"d" end_if item_delete 1170,v2jo% next v1jo% clear 1170 free CT% dim CT%(585) for v1jo% = 111 to 585 if object_exists(v1jo%)=1 item_add 1170,v1jo% show v1jo% end_if next v1jo% clear 1200 for v1jo% = 1 to 25 for v3jo% = 1 to 8 v2jo%=int(rnd(count(1170)))+1 if item_read$(1190,v1jo%)="b" v5jo$="-" else v5jo$="+" end_if item_add 1200,item_read$(1170,v2jo%)+v5jo$+item_read$(1180,v1jo%) item_delete 1170,v2jo% next v3jo% next v1jo% for v1jo% = 1 to 200 v2jo%=val(left$(item_read$(1200,v1jo%),3)) v3jo%=val(right_pos$(item_read$(1200,v1jo%),5)) if v3jo%>101 v3jo%=v3jo%-101 end_if v4jo%=(int((v1jo%-1)/8)+1) file_load v2jo%,"MJF-"+item_read$(1190,v4jo%)+"-"+item_read$(1110,v3jo%)+".bmp" if item_read$(1190,v4jo%)="b" v3jo%=0-v3jo% else couleur(v2jo%) end_if CT%(v2jo%)=v3jo% next v1jo% activer() clear 1210 clear 1220 inactive 940 inactive 950 active 90 active 900 active 970 active 980 caption 780,"Choisissez votre niveau" caption 790,"puis cliquez successivement sur 2 tuiles" NTR%=200 caption 870,"0000" hide 95 NAU%=0 NTS%=0 end_sub
sub restruct() : rem Retructurer la partie en cours =========================== dim_local v1re% , v2re% , v3re% inactive 90 inactive 900 caption 780,"Restructuration en cours" caption 790,"" for v1re% = 1170 to 1190 step 10 clear v1re% next v1re% for v1re% = 1 to count(1200) if show(val(left$(item_read$(1200,v1re%),3)))=1 item_add 1170,item_read$(1200,v1re%) else item_add 1180,item_read$(1200,v1re%) end_if next v1re% if count(1180)>0 clear 1200 for v1re% = 1 to count(1180) item_add 1200,item_read$(1180,v1re%) next v1re% clear 1180 for v1re% = 1 to count(1170) item_add 1190,left$(item_read$(1170,v1re%),3) item_add 1180,right_pos$(item_read$(1170,v1re%),4) next v1re% for v1re% = 1 to 200 v2re%=int(rnd(count(1180)))+1 item_add 1180,item_read$(1180,v2re%) item_delete 1180,v2re% next v1re% for v1re% = 1 to count(1190) item_add 1200,item_read$(1190,v1re%)+item_read$(1180,v1re%) next v1re% free CT% dim CT%(585) for v1re% = 1 to 200 v2re%=val(left$(item_read$(1200,v1re%),3)) v3re%=val(right_pos$(item_read$(1200,v1re%),4)) if abs(v3re%)>101 v3re%=v3re%-sgn(v3re%)*101 end_if if v3re%<0 file_load v2re%,"MJF-b-"+item_read$(1110,abs(v3re%))+".bmp" else file_load v2re%,"MJF-d-"+item_read$(1110,v3re%)+".bmp" couleur(v2re%) end_if CT%(v2re%)=v3re% next v1re% clear 1210 clear 1220 inactive 940 inactive 950 caption 780,"" caption 790,"Restructuration terminée" end_if active 900 active 90 end_sub
sub retirer() : rem Retirer les deux tuiles sélectionnées ===================== dim_local v1ti$ , v2ti% , v3ti% dim_local cpti% : rem Combien de Points à décompter if NTC%(1)>0 and NTC%(2)>0 if CT%(NTC%(1))=CT%(NTC%(2)) if NTC%(1)=NTC%(2) exit_sub end_if hide NTC%(1) hide NTC%(2) display item_add 1210,NTC%(1) item_add 1210,NTC%(2) annuler(0) active 940 if IRA%=1 clear 1220 IRA%=0 inactive 950 end_if cpti%=30 if II1%=1 cpti%=cpti%-10 end_if if II2%=1 cpti%=cpti%-10 end_if eval() if NJ%>1 if RJ%=0 cpti%=5 end_if end_if if cpti%>5 caption 780,"Bien joué" 2d_target_is 610 2d_flood 10,70,0,255,0 2d_target_is 620 2d_flood 10,70,0,255,0 else caption 780,"Les figures sont identiques" 2d_target_is 610 2d_flood 10,70,255,0,0 2d_target_is 620 2d_flood 10,70,255,0,0 end_if caption 790,"Vous gagnez "+str$(cpti%)+" points" NTR%=NTR%-2 activer() active 90 else cpti%=-10 caption 780,"Erreur : les figures sont différentes" caption 790,"Vous avez droit à "+str$(abs(cpti%))+" points de moins" 2d_target_is 610 2d_flood 10,70,255,0,0 2d_target_is 620 2d_flood 10,70,255,0,0 RJ%=0 if NJ%>1 niv1(1) inactive 770 end_if annuler(0) end_if else cpti%=-10 caption 780,"Les tuiles sont à retirer deux par deux" caption 790,"Erreur : vous avez "+str$(abs(cpti%))+" points de moins" RJ%=0 end_if compte(cpti%) if NTR%=0 show 95 v1ti$="PARTIE TERMINÉE"+chr$(13) v1ti$=v1ti$+" Votre score = "+caption$(870)+" / 3000"+chr$(13) v1ti$=v1ti$+"BRAVO !" caption 95,v1ti$ for v2ti% = 910 to 960 step 10 inactive v2ti% next v2ti% end_if inactive 630 inactive 640 II1%=0 II2%=0 if NJ%>1 niv1(1) end_if display end_sub
sub sous(qd%) : rem Affichage des sous-préfectures du département ============= dim_local v1so% , v2so$ , v3so% clear 750 clear 760 v2so$=item_read$(1130,qd%) repeat v1so%=instr(v2so$,"&") if v1so%>0 item_add 750,left$(v2so$,v1so%-1) v2so$=right$(v2so$,len(v2so$)-v1so%) v1so%=0 else item_add 750,v2so$ v2so$="" end_if until v2so$="" v3so%=count(750) if v3so%>3 for v1so% = 4 to v3so% item_add 760,item_read$(750,v1so%) next v1so% for v1so% = 4 to v3so% item_delete 750,count(750) next v1so% end_if end_sub
sub suggest() : rem Suggestions de jeu ======================================== dim_local v1su% , v2su% , v3su% inactive 900 inactive 90 caption 780,"ATTENDEZ - Recherche en cours..." caption 790,"" display clear 1170 for v1su% = 111 to 585 if CT%(v1su%)<>0 if show(v1su%)=1 if active(v1su%)=1 item_add 1170,v1su% end_if end_if end_if next v1su% v3su%=0 for v1su% = 1 to count(1170) for v2su% = 1 to count(1170) if v1su%<>v2su% if CT%(val(item_read$(1170,v1su%)))=CT%(val(item_read$(1170,v2su%))) 2d_target_is val(item_read$(1170,v1su%)) 2d_flood 10,70,255,0,0 2d_target_is val(item_read$(1170,v2su%)) 2d_flood 10,70,255,0,0 v3su%=1 exit_for end_if end_if next v2su% if v3su%=1 exit_for end_if next v1su% if v3su%=1 pause 999 if CT%(val(item_read$(1170,v1su%)))<0 file_load val(item_read$(1170,v1su%)),"MJF-b-"+item_read$(1110,abs(CT%(val(item_read$(1170,v1su%)))))+".bmp" else file_load val(item_read$(1170,v1su%)),"MJF-d-"+item_read$(1110,CT%(val(item_read$(1170,v1su%))))+".bmp" couleur(val(item_read$(1170,v1su%))) end_if if CT%(val(item_read$(1170,v2su%)))<0 file_load val(item_read$(1170,v2su%)),"MJF-b-"+item_read$(1110,abs(CT%(val(item_read$(1170,v2su%)))))+".bmp" else file_load val(item_read$(1170,v2su%)),"MJF-d-"+item_read$(1110,CT%(val(item_read$(1170,v2su%))))+".bmp" couleur(val(item_read$(1170,v2su%))) end_if caption 780,"Recherche terminée" caption 790,"Observez les clignotants rouges" else caption 780,"Pas de possibilités de jeu" caption 790,"Restructurez (ou reculez)" beep end_if active 90 active 900 end_sub
sub vider() : rem Vider les renseignements ==================================== dim_local v1vi% for v1vi% = 710 to 740 step 10 caption v1vi%,"" next v1vi% clear 750 clear 760 if NJ%<5 file_load 600,"MJF-Carte1.bmp" end_if if NJ%>3 color 610,255,230,230 color 620,255,230,230 end_if if NJ%>4 color 600,255,230,230 end_if end_sub
sub ville() : rem Chercher une ville ========================================== dim_local v1vi$ , v2vi$ , v3vi% , v4vi% v1vi$="Rechercher une ville ou autre :" v2vi$=message_input$(v1vi$,"Quelle ville ou quel nom ?","") v2vi$=lower$(v2vi$) for v3vi% = 1 to count(1120) if v2vi$=lower$(item_read$(1120,v3vi%)) v4vi%=v3vi% exit_for end_if next v3vi% if v4vi%=0 for v3vi% = 1 to count(1130) if instr(lower$(item_read$(1130,v3vi%)),v2vi$)>0 v4vi%=v3vi% exit_for end_if next v3vi% end_if if v4vi%=0 for v3vi% = 1 to count(1100) if v2vi$=lower$(item_read$(1100,v3vi%)) v4vi%=v3vi% exit_for end_if next v3vi% end_if if v4vi%=0 for v3vi% = 1 to count(1120) if instr(lower$(item_read$(1120,v3vi%)),v2vi$)>0 v4vi%=v3vi% exit_for end_if next v3vi% end_if if v4vi%=0 for v3vi% = 1 to count(1100) if instr(lower$(item_read$(1100,v3vi%)),v2vi$)>0 v4vi%=v3vi% exit_for end_if next v3vi% end_if if v4vi%>0 nom(v4vi%) numero(v4vi%) chef(v4vi%) aire(v4vi%) sous(v4vi%) profil(v4vi%) blason(v4vi%) carte(v4vi%) caption 780,"La réponse à votre question a été affichée" caption 790,"" else caption 780,"Le mot "+v2vi$+" n'a été trouvé nulle part" caption 790,"Peut-être est-ce un problème d'orthographe ?" end_if end_sub
Je vous mets le listing du jeu parce que bientôt, le mah-Jong français ver1.3 va disparaître du site... | |
|