jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Connaissez-vous Pipopipette ? Dim 29 Oct 2017 - 16:03 | |
| Pour ceux qui ne connaissent pas, c'est un jeu qui se joue en classe durant les cours ennuyeux, un peu comme le morpion, mais les règles sont un peu différentes. Vous allez pouvoir apprendre à y jouer et vous y entraîner avec les deux androïdes qui se cachent derrière votre écran. Ils sont tous deux eux-mêmes apprentis-joueurs et vont vous permettre de ne pas perdre à tous les coups ! Découvrez lequel des deux sera votre partenaire préféré. L'un est jeune et candide, l'autre plus rusé, mais un peu roublard. Bien sûr, je ne vous dis pas lequel est lequel... Discrétion oblige ! Les règles du jeu sont expliquées dans « Aide ». Amusez-vous bien ! - Code:
-
rem ' Pipopipettoramic - le jeu Pipopipette par jjn4 - le 28/10/2017 ========== dim DRC%(12,12) : rem Décomptage des Remplissages des Cases dim ICR% : rem Indice de Cellule Remplie (1=remplie 0=non) dim ILE% : rem Indicateur de Lettre récemment Ecrite dim JS% , JX% , JY% : rem Jeu en X et en Y de l`ordinateur selon le Sens H-V dim LLX% , LLY% : rem Localisation de la Lettre en X et en Y dim NJ% : rem Niveau de Jeu (3 à 12) dim NJB% : rem Nombre de Joueurs Biologiques dim TB$(4) : rem Titre des Boutons dim TJ$ : rem Titre du Jeu dim VJ$ : rem Version du Jeu dim V1M% , V2M% : rem Variables à utilisation Multiple TJ$=" Pipopipette - le bon vieux jeu coutumier des cours fastidieux - par jjn" VJ$="Ver.281017.1.0" label clic : rem Redirection de tous les on-click
rem Form0 ===================================================================== width 0,910 height 0,720 caption 0,TJ$+" - "+VJ$ for V1M% = 1 to 4 read TB$(V1M%) next V1M% rem Tableaux des grilles prévisionnelles ====================================== grid 10 : rem Emplacements des traits verticaux ------------------------------- hide 10 width 10,165 height 10,190 grid_column 10,14 grid_row 10,13 grid_column_width 10,10 grid_row_height 10,13
grid 20 : rem Emplacements des traits horizontaux ----------------------------- hide 20 left 20,165 width 20,150 height 20,205 grid_column 20,13 grid_row 20,14 grid_column_width 20,10 grid_row_height 20,13
grid 30 : rem Stratégie pour les traits verticaux partie gauche --------------- hide 30 top 30,210 width 30,165 height 30,190 grid_column 30,12 grid_row 30,13 grid_column_width 30,12 grid_row_height 30,13
grid 40 : rem Stratégie pour les traits verticaux partie droite --------------- hide 40 left 40,170 top 40,210 width 40,165 height 40,190 grid_column 40,12 grid_row 40,13 grid_column_width 40,12 grid_row_height 40,13
grid 45 : rem Total de la stratégie verticale --------------------------------- hide 45 left 45,340 top 45,210 width 45,165 height 45,190 grid_column 45,12 grid_row 45,13 grid_column_width 45,12 grid_row_height 45,13
grid 50 : rem Stratégie pour les traits horizontaux partie gauche ------------- hide 50 top 50,405 width 50,180 height 50,180 grid_column 50,13 grid_row 50,12 grid_column_width 50,12 grid_row_height 50,13
grid 60 : rem Stratégie pour les traits horizontaux partie droite ------------- hide 60 left 60,185 top 60,405 width 60,180 height 60,180 grid_column 60,13 grid_row 60,12 grid_column_width 60,12 grid_row_height 60,13
grid 65 : rem Total de la stratégie horizontale ------------------------------- hide 65 left 65,370 top 65,405 width 65,180 height 65,180 grid_column 65,13 grid_row 65,12 grid_column_width 65,12 grid_row_height 65,13
grid 70 : rem Détermination des ensembles ------------------------------------- hide 70 left 70,315 width 70,200 height 70,190 grid_column 70,12 grid_row 70,13 grid_column_width 70,15 grid_row_height 70,13 grid 71 : rem Grille pour la 4° stratégie ------------------------------------- hide 71 left 71,510 top 71,210 width 71,200 height 71,180 grid_column 71,12 grid_row 71,12 grid_column_width 71,15 grid_row_height 71,13 grid 75 : rem Détermination des ensembles ------------------------------------- hide 75 left 75,515 width 75,215 height 75,175 grid_column 75,13 grid_row 75,12 grid_column_width 75,15 grid_row_height 75,13 dlist 90 : rem Liste servant aux choix de l`ordinateur ------------------------
rem Tableau du champ de bataille ============================================== NJ%=7 tableau() panel 100 : rem Support du champ de bataille ------------------------------- picture 110 : rem Champ de bataille lui-même ------------------------------- parent 110,100 2d_target_is 110 print_target_is 110 font_size 110,24 font_bold 110 taille() panel 120 : rem Indicateur pour le bouton Jouer ---------------------------- left 120,130 top 120,560 width 120,410 height 120,30 font_bold 120 font_size 120,10 color 120,255,200,255 caption 120,"Pour commencer à jouer, pressez le bouton « Jouer »" rem Tableau des commandes ===================================================== panel 200 : rem Support du tableau des commandes --------------------------- left 200,680 top 200,6 width 200,200 height 200,660 alpha 210 : rem Indicateur couleur de celui qui joue ----------------------- parent 210,200 hide 210 left 210,10 top 210,5 width 210,50 height 210,50 color 210,0,0,0 alpha 220 : rem Inscription de qui joue ------------------------------------ parent 220,200 left 220,63 top 220,15 font_bold 220 font_size 220,18 font_name 220,"Arial" alpha 230 : rem Indication du score de chacun ------------------------------ parent 230,200 left 230,10 top 230,60 width 230,85 height 230,50 color 230,0,0,0 alpha 240 : rem Score de Noir ---------------------------------------------- parent 240,200 left 240,28 top 240,70 font_bold 240 font_size 240,20 font_name 240,"Arial" color 240,0,0,0 font_color 240,255,255,255 caption 240,"0" alpha 250 : rem Fond du Rouge ---------------------------------------------- parent 250,200 left 250,105 top 250,60 width 250,85 height 250,50 color 250,255,0,0 alpha 260 : rem Score du Rouge --------------------------------------------- parent 260,200 left 260,123 top 260,70 font_bold 260 font_size 260,20 font_name 260,"Arial" color 260,255,0,0 font_color 260,255,255,0 caption 260,"0" alpha 270 : rem Affichage du résultat final -------------------------------- parent 270,200 left 270,10 top 270,115 width 270,180 height 270,50 color 270,0,255,255 alpha 280 : rem Nom du gagnant --------------------------------------------- parent 280,200 left 280,12 top 280,125 font_bold 280 font_size 280,20 font_name 280,"Arial" color 280,0,255,255 font_color 280,0,0,255 container_option 300 : rem Choix du nombre de joueurs biologiques ========== parent 300,200 left 300,10 top 300,170 width 300,180 height 300,50 caption 300,"Nombre de joueurs biologiques" for V1M% = 1 to 3 : rem Obj-syst n° 310, 315 et 320 ------------------------ option V1M%*5+305 parent V1M%*5+305,300 left V1M%*5+305,(V1M%-1)*55+20 top V1M%*5+305,22 width V1M%*5+305,30 font_bold V1M%*5+305 font_size V1M%*5+305,12 caption V1M%*5+305,V1M%-1 next V1M% mark_on 315 container_option 330 : rem Choix du niveau de jeu ========================== parent 330,200 left 330,10 top 330,225 width 330,180 height 330,150 caption 330,"Niveau de jeu" for V1M% = 3 to 12 : rem Obj-syst n° 340 à 430 à pas de 10 ----------------- option (V1M%-2)*10+330 V2M%=int(V1M%/8) parent (V1M%-2)*10+330,330 left (V1M%-2)*10+330,V2M%*80+30 top (V1M%-2)*10+330,(V1M%-2)*25-V2M%*125 width (V1M%-2)*10+330,40 font_bold (V1M%-2)*10+330 font_size (V1M%-2)*10+330,12 caption (V1M%-2)*10+330,V1M% next V1M% mark_on 380 rem Boutons de commande ==================================================== for V1M% = 1 to 4 : rem Obj-syst n° 500 à 530 à pas de 10 button V1M%*10+490 parent V1M%*10+490,200 left V1M%*10+490,10 top V1M%*10 +490,V1M%*68+312 width V1M%*10+490,180 height V1M%*10+490,65 font_bold V1M%*10+490 font_size V1M%*10+490,20 font_name V1M%*10+490,"Arial" caption V1M%*10+490,TB$(V1M%) on_click V1M%*10+490,clic next V1M% rem Activation des niveaux de jeu et du nombre de joueurs ================== for V1M% = 340 to 430 step 10 on_click V1M%,clic next V1M% for V1M% = 310 to 320 step 5 on_click V1M%,clic next V1M% button 550 : rem Bouton de commencement du jeu en 0 joueur bio ------------- parent 550,200 hide 550 left 550,30 top 550,118 width 550,140 height 550,45 font_bold 550 font_bold 550 font_size 550,18 font_name 550,"Arial" caption 550,"G O" on_click 550,clic panel 560 : rem Affichage de l`androïde qui a gagné en 0 joueurs bio ------- hide 560 parent 560,200 left 560,10 top 560,5 width 560,180 height 560,50 font_bold 560 font_size 560,12 color 560,0,255,0 end : rem ' Début des routines ================================================
sub aide() : rem Explication sur le fonctionnement du jeu ===================== dim_local v1ai$ , v2ai$ v2ai$=chr$(13) application_title "Explications sur le fonctionnement du jeu" v1ai$=" Pipopipette se joue sur une feuille de papier quadrillé"+v2ai$ v1ai$=v1ai$+"de taille variable."+v2ai$+v2ai$ v1ai$=v1ai$+" A tour de rôle, chaque joueur surligne d'un trait un des"+v2ai$ v1ai$=v1ai$+"côtés d'une des cases de la grille."+v2ai$+v2ai$ v1ai$=v1ai$+" Celui qui ferme une case (remplit le 4° côté de la case)"+v2ai$ v1ai$=v1ai$+"inscrit son initiale dans la case, compte 1 point et rejoue"+v2ai$ v1ai$=v1ai$+"autant de fois que c'est possible. Sinon c'est au tour de"+v2ai$ v1ai$=v1ai$+"l'autre joueur."+v2ai$+v2ai$ v1ai$=v1ai$+" Le gagnant est celui qui a fermé le plus grand nombre de"+v2ai$ v1ai$=v1ai$+"cases."+v2ai$+v2ai$ v1ai$=v1ai$+"NOTA: Le pourtour du jeu est considéré comme déjà surligné"+v2ai$ v1ai$=v1ai$+"dès le départ."+v2ai$+v2ai$ v1ai$=v1ai$+" Si vous êtes seul, vous pouvez jouer contre les androïdes"+v2ai$ v1ai$=v1ai$+"Ferdinand ou Nestor, eux-mêmes apprentis-joueurs, qui se"+v2ai$ v1ai$=v1ai$+"disputeront l'espoir de devenir votre partenaire préféré."+v2ai$+v2ai$ v1ai$=v1ai$+" Vous pouvez aussi jouer à 2, ou bien apprendre le jeu"+v2ai$ v1ai$=v1ai$+"en regardant les deux androïdes se battre l'un contre l'autre." message v1ai$ end_sub
sub android() : rem Choix de l`androïde avec qui jouer ======================== dim_local v1an$ v1an$=caption$(500) if v1an$="Ferdinand" caption 500,"Nestor" else caption 500,"Ferdinand" end_if end_sub
sub auto() : rem L`ordinateur joue tout seul ================================== hide 130 calcul() end_sub
sub calcul() : rem Calcule combien cela fera de points selon les cas ========== dim_local v1ca% , v2ca% , v3ca% , v4ca% , v5ca$ inactive 550 for v1ca% = 1 to NJ%-1 : rem Verticale ------------------------------------- for v2ca% = 1 to NJ% if grid_read$(10,v2ca%+1,v1ca%+2)="" grid_write 30,v2ca%+1,v1ca%+1,DRC%(v1ca%,v2ca%)+1 grid_write 40,v2ca%+1,v1ca%+1,DRC%(v1ca%+1,v2ca%)+1 else grid_write 30,v2ca%+1,v1ca%+1,"0" grid_write 40,v2ca%+1,v1ca%+1,"0" end_if grid_write 45,v2ca%+1,v1ca%+1,val(grid_read$(30,v2ca%+1,v1ca%+1))+val(grid_read$(40,v2ca%+1,v1ca%+1)) next v2ca% next v1ca% for v1ca% = 1 to NJ% : rem Horizontale ------------------------------------- for v2ca% = 1 to NJ%-1 if grid_read$(20,v2ca%+2,v1ca%+1)="" grid_write 50,v2ca%+1,v1ca%+1,DRC%(v1ca%,v2ca%)+1 grid_write 60,v2ca%+1,v1ca%+1,DRC%(v1ca%,v2ca%+1)+1 else grid_write 50,v2ca%+1,v1ca%+1,"0" grid_write 60,v2ca%+1,v1ca%+1,"0" end_if grid_write 65,v2ca%+1,v1ca%+1,val(grid_read$(50,v2ca%+1,v1ca%+1))+val(grid_read$(60,v2ca%+1,v1ca%+1)) next v2ca% next v1ca% rem Tableaux de calcul pour la stratégie 3 Verticale ----------------------- for v1ca% = 1 to NJ% for v2ca% = 1 to NJ%-1 if val(grid_read$(45,v1ca%+1,v2ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 70,v1ca%+1,v2ca%+1,v3ca% next v2ca% next v1ca% v3ca%=0 for v1ca% = NJ% to 1 step -1 for v2ca% = NJ%-1 to 1 step -1 v4ca%=val(grid_read$(70,v1ca%+1,v2ca%+1)) if val(grid_read$(45,v1ca%+1,v2ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 70,v1ca%+1,v2ca%+1,v3ca%+v4ca% next v2ca% next v1ca% v3ca%=0 for v1ca% = 1 to NJ%-1 for v2ca% = NJ% to 1 step -1 v4ca%=val(grid_read$(70,v2ca%+1,v1ca%+1)) if val(grid_read$(45,v2ca%+1,v1ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 70,v2ca%+1,v1ca%+1,v3ca%+v4ca% next v2ca% next v1ca% v3ca%=0 for v1ca% = NJ%-1 to 1 step -1 for v2ca% = 1 to NJ% v4ca%=val(grid_read$(70,v2ca%+1,v1ca%+1)) if val(grid_read$(45,v2ca%+1,v1ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 70,v2ca%+1,v1ca%+1,v3ca%+v4ca% next v2ca% next v1ca% rem Tableaux de calcul pour la stratégie 3 Horizontale --------------------- v3ca%=0 for v1ca% = 1 to NJ%-1 for v2ca% = 1 to NJ% if val(grid_read$(65,v1ca%+1,v2ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 75,v1ca%+1,v2ca%+1,v3ca% next v2ca% next v1ca% v3ca%=0 for v1ca% = NJ%-1 to 1 step -1 for v2ca% = NJ% to 1 step -1 v4ca%=val(grid_read$(75,v1ca%+1,v2ca%+1)) if val(grid_read$(65,v1ca%+1,v2ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 75,v1ca%+1,v2ca%+1,v3ca%+v4ca% next v2ca% next v1ca% v3ca%=0 for v1ca% = 1 to NJ% for v2ca% = NJ%-1 to 1 step -1 v4ca%=val(grid_read$(75,v2ca%+1,v1ca%+1)) if val(grid_read$(65,v2ca%+1,v1ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 75,v2ca%+1,v1ca%+1,v3ca%+v4ca% next v2ca% next v1ca% v3ca%=0 for v1ca% = NJ% to 1 step -1 for v2ca% = 1 to NJ%-1 v4ca%=val(grid_read$(75,v2ca%+1,v1ca%+1)) if val(grid_read$(65,v2ca%+1,v1ca%+1))>0 v3ca%=v3ca%+1 else v3ca%=0 end_if grid_write 75,v2ca%+1,v1ca%+1,v3ca%+v4ca% next v2ca% next v1ca% rem Stratégie 4 ------------------------------------------------------------ grid_clear 71,15,15 for v1ca% = 1 to NJ%-1 for v2ca% = 1 to NJ%-1 v5ca$=grid_read$(10,v2ca%+1,v1ca%+2)+grid_read$(10,v2ca%+2,v1ca%+2)+grid_read$(20,v2ca%+2,v1ca%+1)+grid_read$(20,v2ca%+2,v1ca%+2) grid_write 71,v2ca%+1,v1ca%+1,len(v5ca$) next v2ca% next v1ca% for v1ca% = 1 to NJ%-1 for v2ca% = 1 to NJ%-1 if grid_read$(71,v2ca%+1,v1ca%+1)="0" if DRC%(v1ca%,v2ca%)=2 if DRC%(v1ca%,v2ca%+1)=2 if DRC%(v1ca%+1,v2ca%)=2 if DRC%(v1ca%+1,v2ca%+1)=2 grid_write 71,v2ca%+1,v1ca%+1,"-1" end_if end_if end_if end_if end_if next v2ca% next v1ca% for v1ca% = 1 to NJ%-1 for v2ca% = 1 to NJ%-1 if grid_read$(71,v2ca%+1,v1ca%+1)="0" grid_write 71,v2ca%+1,v1ca%+1,"2" end_if next v2ca% next v1ca% ordi() active 550 end_sub
clic: : rem Redirection de tous les on-click ================================== select number_click case 110 off_click 110 trace() if left$(caption$(220),1)="R" if checked(315)=1 if NJB%<2 calcul() end_if while ILE%=1 calcul() end_while end_if end_if on_click 110,clic case 500 : android() case 510 : jouer() case 520 : aide() case 530 : quitter() case 550 : calcul() end_select if number_click>305 and number_click<325 NJB%=(number_click/5)-62 hide 550 if caption$(510)="Rejouer" on_click 110,clic end_if if checked(310)=1 if show(120)=0 show 550 off_click 110 end_if end_if if checked(315)=0 inactive 500 else active 500 end_if if checked(310)=1 caption 500,"Ferdinand" end_if end_if if number_click>330 and number_click<440 NJ%=(number_click/10)-31 taille() tableau() end_if return
sub compte1(qv%,qh%) : rem Met 1 dans tableau des traits verticaux ============ grid_write 10,qh%+2,qv%+2,"1" end_sub
sub compte2(qh%,qv%) : rem Met 1 dans tableau des traits horizontaux ========== grid_write 20,qh%+2,qv%+2,"1" end_sub
rem Datas ===================================================================== data "Ferdinand" , "Jouer" , "Aide" , "Quitter" rem Fin des datas
sub ecrit() : rem Écrit le nom de celui qui a fermé un carré ================== dim_local v1ec% , v2ec% , v3ec% : rem Variables à utilisation multiple v1ec%=val(caption$(240)) v2ec%=val(caption$(260)) ILE%=0 if left$(caption$(220),1)="N" font_color 110,0,0,0 caption 240,v1ec%+1 else font_color 110,255,0,0 caption 260,v2ec%+1 ILE%=1 end_if print_locate (LLX%-1)*54+20,(LLY%-1)*54+12 print left$(caption$(220),1) ICR%=1 v1ec%=val(caption$(240)) v2ec%=val(caption$(260)) v3ec%=v1ec%+v2ec% if v3ec%=NJ%*NJ% if v1ec%>v2ec% caption 280,"Noir gagne" end_if if v1ec%=v2ec% caption 280,"Ex aequo" end_if if v1ec%<v2ec% caption 280,"Rouge gagne" end_if ILE%=0 if checked(310)=1 if v1ec%>v2ec% caption 560,"Ferdinand"+chr$(13)+" a gagné" end_if if v1ec%<v2ec% caption 560,"Nestor"+chr$(13)+" a gagné" end_if show 560 end_if off_click 110 hide 210 hide 220 hide 550 end_if end_sub
sub jouer() : rem Jouer ou rejouer ============================================ caption 510,"Rejouer" show 210 color 210,0,0,0 show 220 hide 560 font_color 220,0,0,0 caption 220,"Noir joue" caption 240,"0" caption 260,"0" caption 280,"" 2d_clear taille() tableau() grid_clear 50,12,13 grid_clear 60,12,13 grid_clear 65,12,13 grid_clear 75,12,13 grid_clear 30,13,12 grid_clear 40,13,12 grid_clear 45,13,12 grid_clear 70,13,12 active 300 active 330 if checked(315)=1 active 500 end_if hide 120 if checked(310)=1 show 550 caption 500,"Ferdinand" end_if if checked(310)=0 on_click 110,clic end_if end_sub
sub ordi() : rem Jeu de l`ordinateur ========================================== dim_local v1or% , v2or% , v3or% , v4or% , v5or% , v6or% , v7or% dim_local isor% : rem Indicateur de numéro de Stratégie clear 90 : rem Stratégie 1 ------------------------------------------------- for v1or% = 1 to 4 for v2or% = 1 to NJ% for v3or% = 1 to NJ% if grid_read$((v1or%+2)*10,v2or%+1,v3or%+1)="4" item_add 90,int((v1or%-1)/2) item_add 90,v3or% item_add 90,v2or% isor%=1 end_if next v3or% next v2or% next v1or% if isor%=0 v3or%=99 : rem Stratégie 2 ---------------------------------------------- for v1or% = 1 to NJ% for v2or% = 1 to NJ%-1 if numeric(grid_read$(45,v1or%+1,v2or%+1))=1 if val(grid_read$(45,v1or%+1,v2or%+1))>0 if val(grid_read$(45,v1or%+1,v2or%+1))<v3or% v3or%=val(grid_read$(45,v1or%+1,v2or%+1)) end_if end_if end_if next v2or% next v1or% for v1or% = 1 to NJ%-1 for v2or% = 1 to NJ% if numeric(grid_read$(65,v1or%+1,v2or%+1))=1 if val(grid_read$(65,v1or%+1,v2or%+1))>0 if val(grid_read$(65,v1or%+1,v2or%+1))<v3or% v3or%=val(grid_read$(65,v1or%+1,v2or%+1)) end_if end_if end_if next v2or% next v1or% if v3or%<5 for v1or% = 1 to NJ% for v2or% = 1 to NJ%-1 if numeric(grid_read$(45,v1or%+1,v2or%+1))=1 if val(grid_read$(45,v1or%+1,v2or%+1))=v3or% item_add 90,0 item_add 90,v2or% item_add 90,v1or% end_if end_if next v2or% next v1or% for v1or% = 1 to NJ%-1 for v2or% = 1 to NJ% if numeric(grid_read$(65,v1or%+1,v2or%+1))=1 if val(grid_read$(65,v1or%+1,v2or%+1))=v3or% item_add 90,1 item_add 90,v2or% item_add 90,v1or% end_if end_if next v2or% next v1or% else v3or%=999 : rem Stratégie 3 ------------------------------------------ if caption$(500)="Ferdinand" for v1or% = 1 to NJ% for v2or% = 1 to NJ%-1 if numeric(grid_read$(70,v1or%+1,v2or%+1))=1 if val(grid_read$(70,v1or%+1,v2or%+1))>0 if val(grid_read$(70,v1or%+1,v2or%+1))<v3or% v3or%=val(grid_read$(70,v1or%+1,v2or%+1)) v4or%=70 end_if end_if end_if next v2or% next v1or% for v1or% = 1 to NJ%-1 for v2or% = 1 to NJ% if numeric(grid_read$(75,v1or%+1,v2or%+1))=1 if val(grid_read$(75,v1or%+1,v2or%+1))>0 if val(grid_read$(75,v1or%+1,v2or%+1))<v3or% v3or%=val(grid_read$(75,v1or%+1,v2or%+1)) v4or%=75 end_if end_if end_if next v2or% next v1or% if v4or%>0 for v1or% = 1 to (NJ%-((v4or%/5)-14)) for v2or% = 1 to (NJ%-1+((v4or%/5)-14)) if numeric(grid_read$(v4or%,v1or%+1,v2or%+1))=1 if val(grid_read$(v4or%,v1or%+1,v2or%+1))=v3or% item_add 90,(v4or%-70)/5 item_add 90,v2or% item_add 90,v1or% end_if end_if next v2or% next v1or% end_if else v3or%=9 : rem Stratégie 4 ----------------------------------------- if count(90)=0 for v1or% = 1 to NJ%-1 for v2or% = 1 to NJ%-1 if val(grid_read$(71,v1or%+1,v2or%+1))<v3or% v3or%=val(grid_read$(71,v1or%+1,v2or%+1)) end_if next v2or% next v1or% if v3or%<4 for v1or% = 1 to NJ%-1 for v2or% = 1 to NJ%-1 v4or%=0 : v6or%=0 if val(grid_read$(71,v1or%+1,v2or%+1))=v3or% if numeric(grid_read$(10,v1or%+1,v2or%+2))=0 v4or%=1 v6or%=1 v7or%=1 end_if if v4or%=0 if numeric(grid_read$(10,v1or%+1,v2or%+3))=0 v4or%=2 v6or%=1 v7or%=1 end_if end_if if v4or%>0 v4or%=v4or%-1 end_if if v6or%=1 item_add 90,0 item_add 90,v2or% item_add 90,v1or%+v4or% end_if end_if next v2or% next v1or% if v7or%=0 for v1or% = 1 to NJ%-1 for v2or% = 1 to NJ%-1 v5or%=0 : v6or%=0 if val(grid_read$(71,v1or%+1,v2or%+1))=v3or% if numeric(grid_read$(20,v1or%+2,v2or%+1))=0 v5or%=1 v6or%=1 end_if end_if if v5or%=0 if numeric(grid_read$(20,v1or%+3,v2or%+1))=0 v5or%=2 v6or%=1 end_if end_if if v5or%>0 v5or%=v5or%-1 end_if if v6or%=1 item_add 90,1 item_add 90,v2or%+v5or% item_add 90,v1or% end_if next v2or% next v1or% end_if end_if end_if end_if end_if end_if if count(90)>0 v1or%=int(rnd(count(90)/3))+1 v1or%=(v1or%-1)*3+1 JS%=val(item_read$(90,v1or%)) JX%=val(item_read$(90,v1or%+1)) JY%=val(item_read$(90,v1or%+2)) trace() if checked(310)=1 if left$(caption$(220),1)="N" caption 500,"Ferdinand" else caption 500,"Nestor" end_if end_if end_if end_sub
sub quitter() : rem Quitter le programme ====================================== dim_local v1qu% v1qu%=message_confirmation_yes_no("Vous voulez vraiment arrêter ?") if v1qu%=1 terminate end_if end_sub
sub tableau() : rem Préparation du tableau de remplissage des cases =========== dim_local v1ta% , v2ta% : rem Variables à utilisation multiple for v1ta% = 1 to 12 for v2ta% = 1 to 12 DRC%(v1ta%,v2ta%)=0 next v2ta% next v1ta% for v1ta% = 1 to NJ% DRC%(v1ta%,1)=DRC%(v1ta%,1)+1 DRC%(v1ta%,NJ%)=DRC%(v1ta%,NJ%)+1 next v1ta% for v1ta% = 1 to NJ% DRC%(1,v1ta%)=DRC%(1,v1ta%)+1 DRC%(NJ%,v1ta%)=DRC%(NJ%,v1ta%)+1 next v1ta% end_sub
sub taille() : rem Dimensions du champ de bataille ============================ dim_local v1ta% , v2ta% 2d_clear left 100,330-NJ%*27 top 100,330-NJ%*27 width 100,NJ%*54+12 height 100,NJ%*54+12 full_space 110 : rem Cercles verticaux ------------------------------------- 2d_pen_color 254,254,255 2d_fill_color 254,254,255 for v1ta% = 0 to NJ%-1 for v2ta% = 0 to NJ%-2 2d_circle v2ta%*54+60,v1ta%*54+33,17 next v2ta% next v1ta% 2d_pen_color 254,253,255 : rem Cercles horizontaux ------------------------- 2d_fill_color 254,253,255 for v1ta% = 0 to NJ%-2 for v2ta% = 0 to NJ%-1 2d_circle v2ta%*54+33,v1ta%*54+60,17 next v2ta% next v1ta% for v1ta% = 1 to NJ%-1 : rem Lignes jaunes --------------------------------- 2d_pen_width 1 2d_pen_color 254,200,0 2d_line 4,v1ta%*54+4,NJ%*54+4,v1ta%*54+4 2d_pen_color 254,201,0 2d_line v1ta%*54+4,4,v1ta%*54+4,NJ%*54+4 next v1ta% 2d_pen_width 4 : rem Pourtours bleu ciel ----------------------------------- 2d_pen_color 0,175,255 2d_line 4,4,NJ%*54+4,4 2d_line 4,NJ%*54+4,NJ%*54+4,NJ%*54+4 2d_line 4,4,4,NJ%*54+4 2d_line NJ%*54+4,4,NJ%*54+4,NJ%*54+4 grid_clear 10,13,14 for v1ta% = 1 to NJ% grid_write 10,v1ta%+1,2,"1" grid_write 10,v1ta%+1,NJ%+2,"1" next v1ta% grid_clear 20,14,13 for v1ta% = 1 to NJ% grid_write 20,2,v1ta%+1,"1" grid_write 20,NJ%+2,v1ta%+1,"1" next v1ta% end_sub
sub trace() : rem Trace un trait sur la grille du champ de bataille =========== dim_local extr% , eytr% : rem Emplacements de X et Y du point d`impact dim_local cjtr% : rem Couleur de celui qui joue dim_local crtr% , cvtr% : rem Couleurs en Bleu et en Vert du Point d`impact dim_local v1tr% , v2tr% , v3tr% , v4tr% : rem Variables à utilisation multiple extr%=mouse_x_position(110) eytr%=mouse_y_position(110) crtr%=color_pixel_red(110,extr%,eytr%) cvtr%=color_pixel_green(110,extr%,eytr%) inactive 300 inactive 330 inactive 500 if JX%>0 extr%=JX%*54-17 eytr%=JY%*54-17 crtr%=254 cvtr%=254-JS% end_if if left$(caption$(220),1)="N" cjtr%=0 else cjtr%=255 end_if if crtr%=254 if cvtr%=254 or cvtr%=201 v1tr%=int((extr%-4)/54) if (extr%-v1tr%*54)>27 v2tr%=54 else v2tr%=0 end_if v3tr%=int((eytr%-4)/54) 2d_pen_color 255,255,255 2d_fill_color 255,255,255 2d_pen_width 1 2d_circle v1tr%*54+6+v2tr%,v3tr%*54+33,19 2d_pen_width 4 if cjtr%=255 or checked(310)=1 if checked(320)=0 for v4tr% = 1 to 3 2d_pen_color 0,255,0 2d_line v1tr%*54+4+v2tr%,v3tr%*54+4,v1tr%*54+4+v2tr%,v3tr%*54+58 pause 100 2d_pen_color cjtr%,0,0 2d_line v1tr%*54+4+v2tr%,v3tr%*54+4,v1tr%*54+4+v2tr%,v3tr%*54+58 pause 100 next v4tr% end_if end_if 2d_pen_color cjtr%,0,0 2d_line v1tr%*54+4+v2tr%,v3tr%*54+4,v1tr%*54+4+v2tr%,v3tr%*54+58 compte1(v1tr%+v2tr%/54,v3tr%) DRC%(v1tr%+v2tr%/54,v3tr%+1)=DRC%(v1tr%+v2tr%/54,v3tr%+1)+1 if DRC%(v1tr%+v2tr%/54,v3tr%+1)=4 LLX%=v1tr%+v2tr%/54 LLY%=v3tr%+1 ecrit() end_if DRC%(v1tr%+v2tr%/54+1,v3tr%+1)=DRC%(v1tr%+v2tr%/54+1,v3tr%+1)+1 if DRC%(v1tr%+v2tr%/54+1,v3tr%+1)=4 LLX%=v1tr%+v2tr%/54+1 LLY%=v3tr%+1 ecrit() end_if end_if if cvtr%=253 or cvtr%=200 v1tr%=int((eytr%-4)/54) if (eytr%-v1tr%*54)>27 v2tr%=54 else v2tr%=0 end_if v3tr%=int((extr%-4)/54) 2d_pen_color 255,255,255 2d_fill_color 255,255,255 2d_pen_width 1 2d_circle v3tr%*54+33,v1tr%*54+6+v2tr%,19 2d_pen_width 4 if cjtr%=255 or checked(310)=1 if checked(320)=0 for v4tr% = 1 to 3 2d_pen_color 0,255,0 2d_line v3tr%*54+4,v1tr%*54+4+v2tr%,v3tr%*54+58,v1tr%*54+4+v2tr% pause 100 2d_pen_color cjtr%,0,0 2d_line v3tr%*54+4,v1tr%*54+4+v2tr%,v3tr%*54+58,v1tr%*54+4+v2tr% pause 100 next v4tr% end_if end_if 2d_pen_color cjtr%,0,0 2d_line v3tr%*54+4,v1tr%*54+4+v2tr%,v3tr%*54+58,v1tr%*54+4+v2tr% compte2(v1tr%+v2tr%/54,v3tr%) DRC%(v3tr%+1,v1tr%+v2tr%/54)=DRC%(v3tr%+1,v1tr%+v2tr%/54)+1 if DRC%(v3tr%+1,v1tr%+v2tr%/54)=4 LLX%=v3tr%+1 LLY%=v1tr%+v2tr%/54 ecrit() end_if DRC%(v3tr%+1,v1tr%+v2tr%/54+1)=DRC%(v3tr%+1,v1tr%+v2tr%/54+1)+1 if DRC%(v3tr%+1,v1tr%+v2tr%/54+1)=4 LLX%=v3tr%+1 LLY%=v1tr%+v2tr%/54+1 ecrit() end_if end_if if ICR%=0 if left$(caption$(220),1)="N" color 210,255,0,0 font_color 220,255,0,0 caption 220,"Rouge joue" else color 210,0,0,0 font_color 220,0,0,0 caption 220,"Noir joue" ILE%=0 end_if display end_if end_if ICR%=0 JX%=0 end_sub
| |
|