jjn4
Nombre de messages : 2677 Date d'inscription : 13/09/2009
| Sujet: Le jeu de 5000++ (version préparatoire) Lun 2 Juin 2014 - 18:17 | |
| Et voici un jeu que je prépare depuis longtemps. J'avais l'intention de vous le donner au complet, mais c'est assez complexe et je n'aurai pas le temps de le finir avant les vacances (les grosses chaleurs ne vont pas tarder...). Alors je vous livre la version préparatoire. Ce n'est pas encore un jeu complet, mais c'est plus qu'une simple table d'exercices, puisque l'ordinateur contrôle toutes vos actions. Simplement, pour cette première version, il vous faudra jouer alternativement pour les 4 joueurs, (ou alors avec 3 membres de votre famille). J'y ai beaucoup joué quand j'étais jeune (et maintenant à nouveau que j'ai cette version) et vous pouvez me croire qu'il est joliment addictif ! C'est à la fois un jeu de hasard et de stratégie. Lisez la règle de fonctionnement (Aide). Vous savez que dans mes programmes, c'est toujours très complet. - Code:
-
rem ' 5000++ - Table d'Exercices dim a , b , c , i , j , k , v(5) : rem Variables provisoires numériques dim a$ , b$ , r$ , v$(6) : rem Variables provisoires alphanumériques dim ar : rem Ancienne réserve dim cs , cs2 : rem Présence d`une Combinaison de Six dés et son double dim dc : rem Dé Cliqué dim dp : rem Dessin des points dim dr : rem Nombre de Dés en Réserve dim hx(6) , hy(6) : rem Hasard de la positiom en X et en Y de chaque dé dim id : rem Indicateur rouge de Dé prêt à être déplacé dim ij : rem Indicateur de début de Jeu pour chaque joueur dim ir : rem Indicateur de dé(s) nouvellement mis en réserve (avec son nombre) dim ir1$(12) , ir2$(12) : rem Inscriptions de Récompense 1 et 2 dim it : rem Indicateur de résultat Trouvé dim it1 , it12 : rem Indicateur de Triplet de 1 et son double dim it5 , it52 : rem Indicateur de Triplet de 5 et son double dim nu , nu2 : rem Nombre de chiffres 1 (un) isolés et son double dim n5 , n52 : rem Nombre de chiffres 5 isolés et son double dim nj : rem Nombre de Joueurs biologiques dim nj$(4) : rem Noms des joueurs dim nl : rem Nombre de Lancers dim nr : rem Nouvelle Réserve dim nt(6) : rem Numéros Tirés au hasard par dé dim pt : rem Points présents sur le tapis dim rr$ : rem Reste du calcul après le Reste en 1 et 5 dim rt : rem Réserve Totale dim tb : rem Total des points trouvés sur le tapis (en Bis) dim tj : rem Tour de chacun des Joueurs dim tm(4) : rem Total de Matches gagnés dim ts : rem Triplet Simple dim tt : rem ToTal des points trouvés sur le tapis tj=1 rem Noms des routines ------------------------------- label aide : rem Règles du jeu label arret : rem Effet du clic sur le bouton Arrêter label bis : rem Nouveau tour de jeu label boutons : rem Gestion des boutons de jeu label calcul : rem Calcul du nombre de points label carre : rem Dessin du pourtour du dé label cases : rem Dessin des points sur les dés label choix : rem Choix des chiffres sur les dés label cinq : rem Dessin du 5 label close : rem Fermeture du tableau d`aide par la croix rouge label coupe : rem Fonctionnement de l`attribution des coupes label des : rem Dessin des six dés au départ label deux : rem Dessin du 2 label exemple : rem Affichage de l`exemple donné label la : rem Mettre le dé à l`endroit choisi label lancer : rem Lancer les dés label marche : rem Affichage de comment marche le programme label noir : rem remise en noir des points des dés label plus : rem Calcul du total en plus label points : rem Affichage de la valeur des combinaisons label quatre : rem Dessin du 4 label quit : rem Quitter le jeu label regles : rem Affichage de la règle du jeu label reserve : rem Mettre un dé en réserve label six : rem Dessin du 6 label suivant : rem Passer au joueur suivant label tapis : rem Calcul du nombre de points présents sur le tapis label total : rem Affichage du total dans la liste label trois : rem Dessin du 3 label un : rem Dessin du 1 label vite : rem Régulation de la vitesse du jeu label zquit : rem Fin du jeu
rem form0 width 0,1250 height 0,736 caption 0," Le jeu de 5000++"
alpha 40 : rem Fond vert du tapis width 40,811 height 40,688 color 40,0,130,0 alpha 50 : rem Tapis blanc left 50,10 top 50,10 width 50,668 height 50,668 color 50,255,255,255 on_click 50,la alpha 60 : rem Réserve blanche left 60,688 top 60,8 width 60,113 height 60,673 color 60,255,255,255
alpha 70 : rem Indication Tapis left 70,70 top 70,280 color 70,255,255,255 font_size 70,18 caption 70,"Tapis"
alpha 75 : rem Indication Réserve left 75,710 top 75,150 color 75,255,255,255 font_size 75,16 caption 75,"Réserve"
rem Dessin des six dés (100 à 150 à pas de 10) for i=1 to 6 picture 100+(i-1)*10 left 100+(i-1)*10,111*(i-1)+10 top 100+(i-1)*10,10 width 100+(i-1)*10,112 height 100+(i-1)*10,112 on_click 100+(i-1)*10,reserve next i
rem Affichage des noms for i=1 to 4 alpha (i-1)*2+180 : rem (180 à 186 pas de 2) left (i-1)*2+180,758+i*62 top (i-1)*2+180,4 font_bold (i-1)*2+180 font_size (i-1)*2+180,12 next i nj$(1)="Vous" nj$(2)="Alex" nj$(3)="Éric" nj$(4)="Lola" for i=1 to 4 caption 180+(i-1)*2,nj$(i) next i font_color 180,255,0,0
rem Dessin des alphas du décompte de points du haut for i=1 to 4 : rem Fonds alpha (i-1)*2+200 : rem (200 à 206 à pas de 2) left (i-1)*2+200,753+i*62 top (i-1)*2+200,25 width (i-1)*2+200,60 height (i-1)*2+200,25 color (i-1)*2+200,0,255,255 next i for i=1 to 4 : rem Chiffres alpha (i-1)*2+210 : rem (210 à 216 à pas de 2) left (i-1)*2+210,757+i*62 top (i-1)*2+210,27 font_bold (i-1)*2+210 font_size (i-1)*2+210,12 color (i-1)*2+210,0,255,255 font_color (i-1)*2+210,0,0,255 caption (i-1)*2+210,"00000" next i
rem Dessin des cumuls de points for i=1 to 4 list (i-1)*2+220 : rem (220 à 226 à pas de 2) left (i-1)*2+220,753+i*62 top (i-1)*2+220,53 width (i-1)*2+220,60 height (i-1)*2+220,511 font_size (i-1)*2+220,12 next i
rem Dessin des décomptes finaux for i=1 to 4 : rem Fonds alpha (i-1)*2+230 : rem (230 à 236 à pas de 2) left (i-1)*2+230,753+i*62 top (i-1)*2+230,566 width (i-1)*2+230,60 height (i-1)*2+230,25 color (i-1)*2+230,0,255,0 next i for i=1 to 4 : rem Chiffres alpha (i-1)*2+240 : rem (240 à 246 à pas de 2) left (i-1)*2+240,755+i*62 top (i-1)*2+240,568 font_size (i-1)*2+240,12 color (i-1)*2+240,0,255,0 font_color (i-1)*2+240,0,0,255 caption (i-1)*2+240,"000000" next i
rem Dessin des zones d`indications alpha 250 : rem Fond left 250,1063 top 250,4 width 250,160 height 250,82 color 250,255,255,0 alpha 252 : rem Affichage des commentaires sur le Tapis left 252,1064 top 252,6 font_size 252,12 color 252,255,255,0 font_color 252,0,130,0 alpha 254 : rem Affichage des commentaires sur le Stock left 254,1064 top 254,26 font_size 254,12 color 254,255,255,0 font_color 254,255,0,0 alpha 256 : rem Affichage des commentaires sur le Plus left 256,1064 top 256,46 font_size 256,12 color 256,255,255,0 font_color 256,255,0,0 alpha 258 : rem Affichage du numéro de Lancer left 258,1064 top 258,66 font_size 258,12 color 258,255,255,0 font_color 258,255,0,0 rem Boutons de jeu for i=1 to 7 button (i-1)*2+260 : rem (260 à 272 à pas de 2) left (i-1)*2+260,1063 top (i-1)*2+260,(i-1)*86+88 width (i-1)*2+260,160 height (i-1)*2+260,86 font_bold (i-1)*2+260 font_size (i-1)*2+260,16 next i caption 260,"Jouer" caption 262,"Lancer" caption 264,"Arrêter" caption 266,"Suivant" caption 268,"Rapide" caption 270,"Aide" caption 272,"Quitter" on_click 260,des on_click 262,lancer on_click 264,arret on_click 266,suivant on_click 268,vite on_click 270,aide on_click 272,quit inactive 262 inactive 264 inactive 266
rem Inscription des résultats des matches for i=1 to 4 : rem Fonds alpha (i-1)*2+280 : rem (280 à 286 à pas de 2) left (i-1)*2+280,753+i*62 top (i-1)*2+280,593 width (i-1)*2+280,60 height (i-1)*2+280,25 color (i-1)*2+280,255,190,255 next i for i=1 to 4 : rem Chiffres alpha (i-1)*2+290 : rem (290 à 296 à pas de 2) left (i-1)*2+290,758+i*62 top (i-1)*2+290,595 font_bold (i-1)*2+290 font_size (i-1)*2+290,12 color (i-1)*2+290,255,190,255 caption (i-1)*2+290,"0" next i form 300 : rem Tableau des boutons d`aide hide 300 left 300,694 top 300,294 width 300,320 height 300,250 caption 300,"Aides possibles" on_close 300,close button 310 parent 310,300 left 310,15 top 310,10 width 310,135 height 310,90 font_bold 310 font_size 310,16 caption 310,"Points" on_click 310,points button 320 parent 320,300 left 320,160 top 320,10 width 320,135 height 320,90 font_bold 320 font_size 320,16 caption 320,"Règles" on_click 320,regles button 330 parent 330,300 left 330,15 top 330,110 width 330,135 height 330,90 font_bold 330 font_size 330,16 caption 330,"Exemple" on_click 330,exemple button 340 parent 340,300 left 340,160 top 340,110 width 340,135 height 340,90 font_bold 340 font_size 340,16 caption 340,"Marche" on_click 340,marche rem Coupes de récompense for i=1 to 4 : rem Fonds alpha 350+(i-1)*2 left 350+(i-1)*2,753+i*62 top 350+(i-1)*2,620 width 350+(i-1)*2,60 height 350+(i-1)*2,65 color 350+(i-1)*2,255,255,255 next i for i=1 to 4 : rem Coupes alpha 360+(i-1)*2 left 360+(i-1)*2,760+i*62 top 360+(i-1)*2,620 font_size 360+(i-1)*2,34 font_name 360+(i-1)*2,"Webdings" color 360+(i-1)*2,255,255,255 caption 360+(i-1)*2,chr$(37) font_color 360+(i-1)*2,139,50,186 font_color 360+(i-1)*2,200,40,60 font_color 360+(i-1)*2,50,120,60 font_color 360+(i-1)*2,220,200,216 font_color 360+(i-1)*2,206,190,93 font_color 360+(i-1)*2,200,200,225 font_color 360+(i-1)*2,114,110,50 font_color 360+(i-1)*2,22,22,22 font_color 360+(i-1)*2,250,180,250 font_color 360+(i-1)*2,215,200,200 font_color 360+(i-1)*2,100,60,40 font_color 360+(i-1)*2,255,225,130 font_color 360+(i-1)*2,255,255,255 next i ir1$(1)=" Coupette" ir1$(2)=" Coupe en" ir1$(3)=" Coupe en" ir1$(4)=" Coupe en" ir1$(5)=" Coupe en" ir1$(6)=" Coupe de" ir1$(7)=" Coupe" ir1$(8)=" Super" ir1$(9)=" Coupe en" ir1$(10)=" Coupe" ir1$(11)="Coupe avec" ir1$(12)=" Et voici" ir2$(1)=" en rafia" ir2$(2)=" Chocolat" ir2$(3)="Carton-pâte" ir2$(4)=" plastique" ir2$(5)="Obsidienne" ir2$(6)=" bronze" ir2$(7)=" d'argent" ir2$(8)=" coupe d'or" ir2$(9)=" platine" ir2$(10)="d'émeraudes" ir2$(11)=" des rubis" ir2$(12)=" le Graal" for i=1 to 4 : rem 1° inscriptions alpha 370+(i-1)*2 left 370+(i-1)*2,754+i*62 top 370+(i-1)*2,659 color 370+(i-1)*2,255,255,255 caption 370+(i-1)*2,string$(len(ir1$(i))," ") next i
for i=1 to 4 : rem 2° inscriptions alpha 380+(i-1)*2 left 380+(i-1)*2,754+i*62 top 380+(i-1)*2,672 color 380+(i-1)*2,255,255,255 caption 380+(i-1)*2,string$(len(ir2$(i))," ") next i end : rem ' Début des routines ================================================
aide: : rem Règles du jeu show 300 inactive 0 application_title " Règles du jeu de 5000++" return
arret: : rem Effet du clic sur le bouton Arrêter gosub total inactive 264 for i=100 to 150 step 10 off_click i next i return
bis: : rem Nouveau tour de jeu ar=0 : dr=0 : id=0 : ij=0 : ir=0 : it12=0 : it52=0 nl=0 : nr=0 : nu2=0 : n52=0 : pt=0 : rt=0 : tb=0 : cs2=0 active 262 return
boutons: : rem Gestion des boutons de jeu gosub tapis gosub plus active 264 if tb>0 inactive 264 end_if if nl<3 and rr$="" active 262 end_if if cs2=1 and ir<6 inactive 262 inactive 264 end_if if it12=1 and it52=1 and nl=1 if tt/500=int(tt/500) and tt>0 active 262 else inactive 262 end_if end_if if (it12=1 and it52=0) if nu2=3 if (nu=3 and n5=0) or (nu=3 and n5=1) or (nu=0 and n5=1) or (nu=0 and n5=2) or (nu=3 and n5=2) or (nu=0 and n5=0) active 262 else inactive 262 end_if end_if if nu2=4 if nu<>2 active 262 else inactive 262 end_if end_if end_if if (it12=0 and it52=1) if n52=3 if (n5=3 and nu=0) or (n5=3 and nu=1) or (n5=0 and nu=1) or (n5=0 and nu=2) or (n5=3 and nu=2) or (n5=0 and nu=0) active 262 else inactive 262 end_if end_if if n52=4 if n5<>2 active 262 else inactive 262 end_if end_if end_if if (nl=3) and ((dr+ir)=6) and (rr$="") active 262 end_if if nl=3 and tb=0 and ((dr+ir)<6) inactive 262 end_if if rr$<>"" inactive 262 inactive 264 end_if if tb>0 inactive 264 end_if if ir=0 inactive 262 end_if return
calcul: : rem Calcul du nombre de points rem ' Mise en ordre et en forme numérique du nombre de départ tt=0 : it=0 : cs=0 for i=1 to 6 v$(i)="" next i b$="" c=len(str$(a)) if c>6 c=val(left$(str$(a),6)) c=6 end_if for i=1 to c v$(i)=mid$(str$(a),i,1) next i if c>1 for i=1 to c-1 for j=1 to c-1 if asc(v$(j))>asc(v$(j+1)) b$=v$(j) v$(j)=v$(j+1) v$(j+1)=b$ end_if next j next i end_if a=0 if c>1 for i=1 to c a=a+val(v$(i))*power(10,c-i) next i else a=val(v$(1)) end_if if c=6 for i=1 to 5 v(i)=0 next i for i=1 to 2 v(1)=v(1)+val(v$(i))*power(10,2-i) v(2)=v(2)+val(v$(i+2))*power(10,2-i) v(3)=v(3)+val(v$(i+4))*power(10,2-i) next i for i=1 to 3 v(4)=v(4)+val(v$(i))*power(10,3-i) v(5)=v(5)+val(v$(i+3))*power(10,3-i) next i end_if rem ' Détection des Suites if a=123456 tt=1500 it=1 cs=1 end_if rem ' Détection des Sixtuplets if it=0 b=0 if a/111111=int(a/111111) b=a/111111 end_if if b>0 if b=1 tt=2000 else tt=1500 end_if it=1 cs=1 end_if end_if rem ' Détection des triples-doublets if it=0 and c=6 if v(1)/11=int(v(1)/11) and v(2)/11=int(v(2)/11) and v(3)/11=int(v(3)/11) tt=1500 it=1 cs=1 end_if end_if rem ' Détection des doubles Triplets it1=0 : it5=0 if it=0 and c=6 if v(4)/111=int(v(4)/111) and v(5)/111=int(v(5)/111) it=1 if v(4)/111=1 tt=((v(5)/111)*100)+1000 else tt=((v(4)/111)+(v(5)/111))*100 end_if if v(4)/111=1 or v(5)/111=1 it1=1 nu=3 end_if if v(4)/111=5 or v(5)/111=5 it5=1 n5=3 end_if end_if end_if rem ' Détection des Triplets simples if it=0 j=0 : b=0 : nu=0 : n5=0 : k=0 if c>2 for i=1 to c-2 if (val(mid$(str$(a),i,3))/111)=(int(val(mid$(str$(a),i,3))/111)) b=val(mid$(str$(a),i,3))/111 ts=b j=i exit_for end_if next i end_if r$="" for i=1 to c if j>0 if i<>j and i<>(j+1) and i<>(j+2) r$=r$+mid$(str$(a),i,1) end_if else r$=r$+mid$(str$(a),i,1) end_if next i if b>0 if b=1 tt=1000 it1=1 nu=3 else tt=b*100 end_if if b=5 it5=1 n5=3 end_if k=1 end_if end_if rem ' Détection de 1 ou de 5 et autres rr$="" if it=0 b=0 if r$<>"" for i=1 to len(r$) if val(mid$(r$,i,1))=1 or val(mid$(r$,i,1))=5 if val(mid$(r$,i,1))=1 b=b+100 nu=nu+1 end_if if val(mid$(r$,i,1))=5 b=b+50 n5=n5+1 end_if it=1 else rr$=rr$+mid$(r$,i,1) end_if next i end_if if b>0 tt=tt+b end_if end_if if k=1 it=1 end_if return
carre: : rem Dessin du pourtour du dé 2d_poly_from 100,2 2d_poly_to 104,3 2d_poly_to 106,4 2d_poly_to 107,5 2d_poly_to 108,6 2d_poly_to 109,8 2d_poly_to 110,12 2d_poly_to 110,101 2d_poly_to 109,105 2d_poly_to 108,107 2d_poly_to 107,108 2d_poly_to 106,109 2d_poly_to 104,110 2d_poly_to 100,111 2d_poly_to 12,111 2d_poly_to 8,110 2d_poly_to 6,109 2d_poly_to 5,108 2d_poly_to 4,107 2d_poly_to 3,105 2d_poly_to 2,101 2d_poly_to 2,12 2d_poly_to 3,8 2d_poly_to 4,6 2d_poly_to 5,5 2d_poly_to 6,4 2d_poly_to 8,3 2d_poly_to 12,2 2d_poly_to 100,2 return cases: : rem Dessin des points sur les dés select dp case 1 : gosub un case 2 : gosub deux case 3 : gosub trois case 4 : gosub quatre case 5 : gosub cinq case 6 : gosub six end_select return
choix: : rem Choix des chiffres sur les dés 2d_target_is 100+(i-1)*10 color 100+(i-1)*10,255,255,255 2d_fill_color 0,0,0 gosub carre gosub cases return
cinq: : rem Dessin du 5 2d_circle 27,27,8 2d_circle 85,27,8 2d_circle 27,85,8 2d_circle 85,85,8 2d_circle 55,55,8 return
close: : rem Fermeture du tableau d`aide par la croix rouge hide 300 active 0 to_foreground 0 return
coupe: : rem Fonctionnement de l`attribution des coupes if tm(tj)<12 caption 370+(tj-1)*2,ir1$(tm(tj)) caption 380+(tj-1)*2,ir2$(tm(tj)) select tm(tj) case 1 : font_color 360+(tj-1)*2,255,225,130 case 2 : font_color 360+(tj-1)*2,100,60,40 case 3 : font_color 360+(tj-1)*2,215,200,200 case 4 : font_color 360+(tj-1)*2,250,180,250 case 5 : font_color 360+(tj-1)*2,22,22,22 case 6 : font_color 360+(tj-1)*2,114,110,50 case 7 : font_color 360+(tj-1)*2,200,200,225 case 8 : font_color 360+(tj-1)*2,206,190,93 case 9 : font_color 360+(tj-1)*2,220,200,216 case 10 : font_color 360+(tj-1)*2,50,120,60 case 11 : font_color 360+(tj-1)*2,200,40,60 end_select else caption 370+(tj-1)*2,ir1$(12) caption 380+(tj-1)*2,ir2$(12) font_color 360+(tj-1)*2,139,50,186 end_if return
des: : rem Dessin des six dés au départ for i=1 to 6 left 100+(i-1)*10,111*(i-1)+10 top 100+(i-1)*10,10 dp=i gosub choix next i for i=1 to 6 off_click 100+(i-1)*10 next i active 262 inactive 260 return
deux: : rem Dessin du 2 2d_circle 37,37,8 2d_circle 75,75,8 return
exemple: : rem Affichage de l`exemple donné hide 300 active 0 a$="Exemple :"+chr$(13) a$=a$+"-------"+chr$(13) a$=a$+"Soient 3 joueurs : Alex, Éric et Lola s'asseyant dans cet ordre"+chr$(13) a$=a$+"- Alex: 122534 = 100 + 12233 = 100 + 6662 = 600 : Total 800 : Décompte 800"+chr$(13) a$=a$+"- Éric: 316435 = 100 + 11356 = 200 + 111 = 1000 : arrête là : Total 1300 : Décompte 1300"+chr$(13) a$=a$+"- Lola: 153346 = 100 + 13255 = 100 + 1246 = 100 : Total 300 : insuffisant : Décompte 0"+chr$(13) a$=a$+"- Alex: 122246 = 300 + 11 = 200 + 662235 = 50 + 11455 = 300 : Total 850 : Décompte 1650"+chr$(13) a$=a$+"- Éric: 221634 = 100 + 66442 = rien : Total 0 : Décompte 1300"+chr$(13) a$=a$+"- Lola: 111214 = 1100 : arrête là : Total 1100 : Décompte 1100"+chr$(13) a$=a$+"- Alex: 661132 = 200 +1222 = 300 + 665551 = 600 : arrête là : Total 1100 : Décompte 2750"+chr$(13) a$=a$+"- Éric: 445126 = 100 + 43651 = 100 + 1556 = 200 : Total 400 : Décompte 1700"+chr$(13) a$=a$+"- Lola: 426635 = 50 + 12345 = 100 + 2436 = rien : Total 0 : Décompte 1100"+chr$(13) a$=a$+"- Alex: 662233 = 1500 + 666452 = 650 : arrête là : Total 2150 : Décompte 4900"+chr$(13) a$=a$+"- Éric: 411132 = 1000 + 155 = 200 + 555312 = 600 : arrête là : Total 1800 : Décompte 3500"+chr$(13) a$=a$+"- Lola: 111666 = 1600 + 125443 = 100 + 51236 = 150 : arrête là : Total 1850 : Décompte 2950"+chr$(13) a$=a$+"- Alex: 123456 = 1500 + 111455 = 1100 + 3 = rien : Total 0 : Décompte 4900"+chr$(13) a$=a$+"- Éric: 424651 = 100 + 333415 = 450 : arrête là : Total 550 : Décompte 4050"+chr$(13) a$=a$+"- Lola: 433225 = 50 + 36412 = 100 + 3331 = 400 + 624362 = rien : Total 0 : Décompte 2950"+chr$(13) a$=a$+"- Alex: 135436 = 50 + 34352 = 50 : arrête là : Total : 100 : Décompte 5000 : Gagné"+chr$(13) message a$ return
la: : rem Mettre le dé à l`endroit choisi if id=1 a=mouse_x_position(50) b=mouse_y_position(50) c=0 for i=1 to 6 if ((i*10+90)<>dc) and (left(i*10+90)>(a-115) and left(i*10+90)<(a+115) and top(i*10+90)>(b-115) and top(i*10+90)<(b+115)) c=1 end_if next i if a>10 and a<555 and b>10 and b<555 and c=0 left dc,mouse_x_position(50) top dc,mouse_y_position(50) 2d_fill_color 0,0,0 gosub cases ir=ir-1 id=0 gosub boutons else beep end_if end_if return
lancer: : rem Lancer les dés inactive 262 hide 70 hide 75 dr=dr+ir ar=ar+nr cs=0 it12=0 it52=0 if dr=6 gosub des nl=0 ir=0 ij=0 nr=0 cs2=0 dr=0 end_if for i=1 to 6 on_click 100+(i-1)*10,reserve next i if nl<3 and (ir>0 or ij=0) for i=1 to 2 for j=0 to 2 hx(j*2+i)=int(rnd(222))+11+(i-1)*334 hy(j*2+i)=int(rnd(110))+13+j*222 next j next i for i=10 to 500 step 49 for j=1 to 6 a=(111*(j-1)+10) if left(100+(j-1)*10)<685 left 100+(j-1)*10,a+(i/2)*sgn(334-a) top 100+(j-1)*10,10+(i/j) end_if next j display next i for i=1 to 6 if left(100+(i-1)*10)<685 left 100+(i-1)*10,hx(i) top 100+(i-1)*10,hy(i) end_if next i for i=1 to 6 if left(100+(i-1)*10)<685 nt(i)=int(rnd(6))+1 end_if next i for i=1 to 6 if left(100+(i-1)*10)<685 if odd(tj+nl)=1 nt(i)=7-nt(i) end_if dp=nt(i) gosub choix end_if next i nl=nl+1 gosub tapis inactive 262 nu2=nu n52=n5 pt=tt caption 252,"Tapis : "+str$(pt)+" Points" end_if ir=0 caption 254,"Stock : "+str$(ar)+" Points" caption 256,"Plus :" caption 258," "+str$(nl)+"° lancer" if pt=0 active 266 for i=100 to 150 step 10 off_click i next i caption 208+tj*2,"0000" caption 256," PERDU : 0 point" end_if ij=1 inactive 264 if it1=1 it12=1 end_if if it5=1 it52=1 end_if if cs=1 cs2=1 end_if for i=100 to 150 step 10 on_click i,reserve next i return
marche: : rem Affichage de comment marche le programme hide 300 active 0 a$="Fonctionnement du programme :"+chr$(13) a$=a$+"----------------------------"+chr$(13) a$=a$+" Le fonctionnement du programme est essentiellement intuitif."+chr$(13) a$=a$+"Le jeu comporte cependant certaines facultés intéressantes à découvrir :"+chr$(13) a$=a$+"1) Mise en réserve des dés :"+chr$(13) a$=a$+" Les dés lancés sur le tapis peuvent être mis en réserve en cliquant dessus."+chr$(13) a$=a$+"2) Remise d'un dé sur le tapis :"+chr$(13) a$=a$+" Si, après avoir mis un dé en réserve, vous changez d'avis, vous pouvez"+chr$(13) a$=a$+" le remettre sur le tapis. Pour cela :"+chr$(13) a$=a$+" - Cliquez dessus, en commençant par le dernier (les points deviennent rouges),"+chr$(13) a$=a$+" - Cliquez sur le tapis à l'endroit où vous voulez le placer."+chr$(13) a$=a$+"3) Mise en ordre des dés sur le tapis :"+chr$(13) a$=a$+" En utilisant la zone de réserve à l'aide des formules 1 et 2 ci-dessus,"+chr$(13) a$=a$+" vous pouvez ranger les dés à votre convenance sur le tapis, de telle"+chr$(13) a$=a$+" sorte que la vision synoptique que vous en obtenez soit meilleure."+chr$(13) a$=a$+"4) Signification des totaux indiqués :"+chr$(13) a$=a$+" - Tapis : c'est le décompte du nombre de points disponibles sur le tapis."+chr$(13) a$=a$+" - Stock : c'est le nombre de points que vous avez mis en reserve"+chr$(13) a$=a$+" au(x) lancer(s) précédent(s)."+chr$(13) a$=a$+" - Plus : c'est le nombre de points nouvellement mis en réserve."+chr$(13) a$=a$+" - Le total bleu : c'est la somme de Stock et de Plus."+chr$(13) a$=a$+" - Le total vert : c'est le décompte total correspondant au cumul des colonnes."+chr$(13) a$=a$+" - Le total rose : c'est le nombre de matches gagnés par chacun des joueurs."+chr$(13) a$=a$+" - Les zones blanches affichent les récompenses qui sont décernées."+chr$(13) a$=a$+"5) A quoi sert le bouton Rapide/Lent :"+chr$(13) a$=a$+" Il sert à accélérer ou ralentir le jeu des autres joueurs, selon que"+chr$(13) a$=a$+" vous souhaitez passer rapidement dessus ou suivre attentivement leur jeu."+chr$(13) a$=a$+"6) Si vous avez l'impression que le jeu s'est bloqué (boutons devenus inactifs) :"+chr$(13) a$=a$+" - Soit vous avez décomposé une combinaison (rajoutez des dés dans la réserve)"+chr$(13) a$=a$+" - Soit vous avez mis en réserve un ou plusieurs dé(s) perdant(s) (enlevez le(s))" message a$ return
noir: : rem remise en noir des points des dés for i=1 to 6 dp=nt(i) gosub choix next i return
plus: : rem Calcul du total en plus if ir>0 a=0 for i=1 to ir for j=1 to 6 if left(100+(j-1)*10)>685 and top(100+(j-1)*10)=112*(dr+i-1)+8 a=a+nt(j)*power(10,ir-i) end_if next j next i gosub calcul nr=tt else nr=0 end_if caption 256,"Plus : "+str$(nr)+" Points" caption 208+tj*2,ar+nr return
points: : rem Affichage de la valeur des combinaisons hide 300 active 0 a$="Valeur en points des combinaisons gagnantes :"+chr$(13) a$=a$+"-------------------------------------------"+chr$(13) a$=a$+" [5] = 50 points (demi) [1] = 100 points (as)"+chr$(13) a$=a$+" [2] + [2] + [2] = 200 points (triplet) [3] + [3] + [3] = 300 points"+chr$(13) a$=a$+" [4] + [4] + [4] = 400 points [5] + [5] + [5] = 500 points"+chr$(13) a$=a$+" [6] + [6] + [6] = 600 points [1] + [1] + [1] = 1000 points (3 as)"+chr$(13) a$=a$+" [3] + [3] + [4] + [4] + [6] + [6] = 1500 points (triple-doublets)"+chr$(13) a$=a$+" [1] + [2] + [3] + [4] + [5] + [6] = 1500 points (suite)"+chr$(13) a$=a$+" [4] + [4] + [4] + [4] + [4] + [4] = 1500 points (sixtuplet simple)"+chr$(13) a$=a$+" [1] + [1] + [1] + [1] + [1] + [1] = 2000 points (sixtuplet d'as)"+chr$(13) a$=a$+"- Triplets, triples-doublets, suites et sixtuplets doivent être obtenus en un seul lancer"+chr$(13) a$=a$+"- La règle est toujours la combinaison la plus forte"+chr$(13) a$=a$+" (exemple : 3 fois [5] ne peut pas faire 150, c'est un triplet = 500 points)"+chr$(13) a$=a$+"- On ne peut fragmenter un triplet, une suite, un triple-doublet ou un sixtuplet"+chr$(13) a$=a$+" (exemple : soit une suite, vous ne pouvez pas prendre [1] et [5] pour faire 150)"+chr$(13) message a$ return
quatre: : rem Dessin du 4 2d_circle 30,30,8 2d_circle 82,30,8 2d_circle 30,82,8 2d_circle 82,82,8 return
quit: : rem Quitter le jeu a$="Comment, vous envisagez de quitter ce jeu !??"+chr$(13) a$=a$+"Êtes-vous bien sûr de cela ?????????" a=message_confirmation_yes_no(a$) if a=1 goto zquit end_if return
regles: : rem Affichage de la règle du jeu hide 300 active 0 a$="Règles du jeu :"+chr$(13) a$=a$+"---------------"+chr$(13) a$=a$+" 5000++ est une variante méridionale plus subtile du jeu de 5000."+chr$(13) a$=a$+"Elle comporte davantage de combinaisons gagnantes permettant un jeu plus fin."+chr$(13)+chr$(13) a$=a$+" - Ce jeu se joue à au moins 2 joueurs et jusqu'à N joueurs"+chr$(13) a$=a$+" - Il faut 6 dés"+chr$(13) a$=a$+" - Les joueurs jouent dans le sens des aiguilles d'une montre"+chr$(13) a$=a$+" - Celui qui commence est choisi au hasard ou déterminé d'une façon convenue"+chr$(13) a$=a$+" - Les joueurs, chacun leur tour, lancent les 6 dés en même temps"+chr$(13) a$=a$+" - Le joueur met des dés en réserve selon les valeurs en points déjà précisées"+chr$(13) a$=a$+" - Il doit mettre au moins un dé en réserve"+chr$(13) a$=a$+" - Il ne peut mettre en réserve que des dés gagnants"+chr$(13) a$=a$+" - Il n'est pas obligé de mettre en réserve tous les dés gagnants"+chr$(13) a$=a$+" - Il relance tous les dés, perdants et gagnants non mis en réserve (s'il le souhaite)"+chr$(13) a$=a$+" - Il a droit à 3 lancers maximum pour cette série"+chr$(13) a$=a$+" - Il peut s'arrêter avant le 3° lancer, mais alors il doit prendre tous les points"+chr$(13) a$=a$+" - S'il réussit à mettre les 6 dés en réserve,"+chr$(13) a$=a$+" il a droit à une nouvelle série de 3 lancers (et ceci N fois)"+chr$(13) a$=a$+" - Pour commencer à initier le décompte, il faut obtenir au moins 500 points"+chr$(13) a$=a$+" - Si, à la fin de la série de lancers, le joueur ne peut pas mettre"+chr$(13) a$=a$+" un dé en réserve, le cumul en cours retombe à zéro, mais pas le décompte final"+chr$(13) a$=a$+" - Lorsque le joueur arrête la série de lancers, il ne peut choisir"+chr$(13) a$=a$+" de prendre seulement tels ou tels points gagnants, il doit les prendre tous"+chr$(13) a$=a$+" - Le cumul du joueur est alors additionné à son décompte"+chr$(13) a$=a$+" - Le gagnant est le premier dont le décompte atteint juste 5000 points,"+chr$(13) a$=a$+" et le jeu s'arrête à ce moment-là"+chr$(13) a$=a$+" - Le joueur qui dépasse 5000 points doit alors viser à atteindre 10000 points, etc..."+chr$(13) a$=a$+" tandis que les autres continuent vers 5000 ou 10000 (ou plus) selon les cas."+chr$(13) message a$ return
reserve: : rem Mettre un dé en réserve id=0 : gosub noir dc=number_click if left(dc)<685 ir=ir+1 left dc,688 top dc,112*(dr+ir-1)+8 else if ((top(dc)-8)/112)+1=dr+ir if ir>0 id=1 2d_target_is dc 2d_fill_color 255,0,0 dp=nt(((dc-100)/10)+1) gosub cases end_if end_if end_if gosub boutons return
six: : rem Dessin du 6 2d_circle 27,37,8 2d_circle 56,37,8 2d_circle 85,37,8 2d_circle 27,75,8 2d_circle 56,75,8 2d_circle 85,75,8 return
suivant: : rem Passer au joueur suivant for i=100 to 150 step 10 off_click i next i for i=252 to 258 step 2 caption i,"" next i gosub des inactive 262 inactive 266 gosub bis font_color 178+tj*2,0,0,0 tj=tj+1 if tj>4 tj=1 end_if font_color 178+tj*2,255,0,0 return
tapis: : rem Calcul du nombre de points présents sur le tapis a=0 : b=0 : c=0 for i=1 to 6 if left(100+(i-1)*10)<685 c=c+1 end_if next i for i=1 to 6 if left(100+(i-1)*10)<685 b=b+1 a=a+nt(i)*power(10,c-b) end_if next i gosub calcul tb=tt return
total: : rem Affichage du total dans la liste inactive 262 active 266 caption 208+tj*2,"0000" if count(218+tj*2)>0 or ((ar+nr)>499) item_add 218+tj*2,ar+nr j=0 for i=1 to count(218+tj*2) j=j+val(item_read$(218+tj*2,i)) next i caption 238+tj*2,j else caption 256," Total insuffisant" end_if if j/5000=int(j/5000) and j>0 caption 256,"Vous avez gagné !" midi_on for i=60 to 81 step 3 midi_play i,11 next i midi_play 84,7 midi_off wait 500 caption 238+tj*2,"00000" tm(tj)=tm(tj)+1 caption 288+tj*2,tm(tj) gosub coupe clear 218+tj*2 gosub bis inactive 262 active 260 inactive 266 for i=1 to 4 clear 218+i*2 caption 238+i*2,"000000" next i font_color 178+tj*2,0,0,0 tj=tj+1 if tj>4 tj=1 end_if font_color 178+tj*2,255,0,0 end_if return
trois: : rem Dessin du 3 2d_circle 85,27,8 2d_circle 55,55,8 2d_circle 27,85,8 return un: : rem Dessin du 1 2d_circle 55,55,8 return
vite: : rem Régulation de la vitesse du jeu return
zquit: : rem Fin du jeu terminate
Amusez-vous bien !!! (Je reviendrai dans quelques temps vous faire la suite, c'est à dire faire jouer l'ordinateur). (ah, et ne vous occupez pas du bouton « Rapide », c'est destiné à la version ultérieure) | |
|