Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| ECHEC et MAT (un petit jeu pour vous distraire) | |
| | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: ECHEC et MAT (un petit jeu pour vous distraire) Mar 16 Mar 2010 - 21:34 | |
| Salut à tous, Pour commencer cliquez sur "?" pour visualiser l'aide. Bon courage. - Code:
-
dim x,y,hf,lf,n,n1,clicX,clicY,ca,nca,r,g,b,r2,g2,b2,joueur,attente,cav,temp,w,z dim a$,pa$ dim pcx(100),pcy(100),case$(100) dim ligne(2),reste(2),tour(2),point(2),score(2)
label init,afi1,afi2,afi3,afi4,quit,clic,caze,reste,vou,vous,ordi,jeu,jeu1,aide label gauche,droite,haut,bas,ctr1,attente,ordi1,ordi2,score,score2 label ancase,nouvcase,debut,afi5,renforce,attaque,mange,finordi,esquive label esquive2,ctr2,nouvpion,casegain,gain,nouveaupion
x=screen_x:y=screen_y lf=810:hf=900:width 0,lf:height 0,hf:top 0,int((y-hf)/2):left 0,int((x-lf)/2) color 0,200,255,255:caption 0," ECHEC et MAT Jean Claude / mars 2010" picture 1:width 1,lf-30:height 1,65:top 1,10:left 1,10:color 1,255,255,200 picture 2:width 2,lf-30:height 2,50:top 2,hf-100:left 2,10:color 2,250,250,250 font_name 2,"fixedsys" button 3:top 3,32:left 3,210:caption 3,"QUITTER":on_click 3,quit button 8:width 8,25:top 8,32:left 8,350:caption 8,"?":on_click 8,aide button 4:font_name 4,"Webdings":font_size 4,15:width 4,25:top 4,32:left 4,450:caption 4,chr$(51) button 5:font_name 5,"Webdings":font_size 5,15:width 5,25:top 5,32:left 5,540:caption 5,chr$(52) button 6:font_name 6,"Webdings":font_size 6,15:width 6,25:top 6,32:left 6,480:caption 6,chr$(53) button 7:font_name 7,"Webdings":font_size 7,15:width 7,25:top 7,32:left 7,510:caption 7,chr$(54) for n=4 to 7:inactive n:next n on_click 4,gauche:on_click 5,droite:on_click 6,haut:on_click 7,bas gosub init:gosub reste:gosub afi1:gosub afi2 temp=10:tour(1)=0:tour(2)=0:gosub jeu end ' ============================================================================== aide: inactive 3:inactive 8:print_target_is 2 print_locate 5,20:print string$(96," ") print_locate 5,20:print "Vous pouvez vous déplacer d'une seule case à la fois" wait temp*400:print_locate 5,20:print string$(96," ") print_locate 5,20:print "Vous pouvez prendre un pion adverse que s'il est contigu au vôtre" wait temp*400:print_locate 5,20:print string$(96," ") print_locate 5,20:print "Si vous atteignez une case grise (du camp adverse) vous gagnez 2 points" wait temp*400:print_locate 5,20:print string$(96," ") print_locate 5,20:print "Sur les compteurs vous voyez: le reste des pions des joueurs Et le nombre de points acquis" wait temp*600:print_locate 5,20:print string$(96," ") print_locate 5,20:print "Si votre adversaire est MAT ou l'un des joueurs n'a plus de pions, la partie est finie" wait temp*600:print_locate 5,20:print string$(96," ") print_locate 5,20:print "Le score final est l'addition du reste de pions et des points acquis" active 3:wait temp*500:gosub afi3 return
jeu: joueur=joueur+1 if joueur>2 then joueur=1 jeu1: if joueur=1 then gosub afi3 if reste(1)=0 then goto score2 if joueur=2 then gosub afi4 on_click 0,vous if joueur=2 then tour(2)=tour(2)+1:gosub ordi end return
ordi: off_click 0 if tour(2)>0 and tour(2)<3 then gosub debut:gosub ancase:gosub nouvcase:goto finordi if tour(2)>2 then gosub mange if pa$<>"ECHEC" then gosub ancase:gosub nouvcase:goto finordi if tour(2)>2 then gosub gain if pa$<>"ECHEC" then gosub ancase:gosub nouveaupion:goto finordi gosub renforce if pa$<>"ECHEC" then gosub ancase:gosub nouvcase:goto finordi ordi1: gosub attaque if pa$<>"ECHEC" then gosub ancase:gosub nouvcase:goto finordi ordi2: gosub esquive if pa$<>"ECHEC" then gosub ancase:gosub nouvcase:goto finordi gosub esquive if pa$<>"ECHEC" then gosub ancase:gosub nouvcase:goto finordi gosub esquive2 if pa$<>"ECHEC" then gosub ancase:gosub nouvcase:goto finordi goto score2 finordi: gosub score if reste(2)=0 then goto score2 goto jeu return
score2: for n=4 to 7:hide n:next n top 3,32:left 3,20:caption 3,"QUITTER" 2d_target_is 1 print_target_is 1:font_color 1,0,0,255:font_bold 1 score(2)=reste(2)+point(2):score(1)=reste(1)+point(1) if score(1)=score(2) then color 1,200,200,200:2d_fill_color 200,200,200:print_locate 110,28:print "MATCH NUL" if score(2)>score(1) then color 1,255,0,0:2d_fill_color 255,0,0 if score(1)>score(2) then color 1,0,255,0:2d_fill_color 0,255,0 if score(1)>score(2) then print_locate 110,28:print "BRAVO VOUS avez gagné la partie" if score(2)>score(1) then print_locate 110,28:print " ORDI à avez gagné la partie " if score(1)>score(2) then print_locate 410,28:print "Points:";:print point(1);:print " /";:print "reste:";:print reste(1);:print " / soit un total de ":print_locate 650,28:print score(1);:print " Points" if score(2)>score(1) then print_locate 410,28:print "Points:";:print point(2);:print " /";:print "reste:";:print reste(2);:print " / soit un total de ":print_locate 650,28:print score(2);:print " Points" print_target_is 2 print_locate 5,20:print string$(96," ") print_locate 5,20:print "Partie terminé" end return
nouveaupion: n=nca:r=255:g=100:b=100:gosub caze case$(nca)="RG":point(2)=point(2)+2 case$(ca)="R":r=255:g=0:b=0:gosub casegain return
gain: pa$="":ca=0 for n1=81 to 89 if case$(n1)="R" and case$(n1+10)="N" then ca=n1:nca=ca+10 next n1 if ca>0 then return pa$="ECHEC" return
ancase: n=ca:r=255:g=255:b=0:gosub caze case$(ca)="B" wait temp*10 n=ca:r=255:g=255:b=255:gosub caze return
nouvcase: n=nca:r=255:g=0:b=0:gosub caze if case$(nca)="V" then reste(1)=reste(1)-1 case$(nca)="R" return
esquive2: pa$="":ca=0 for n1=12 to 89 if case$(n1)="R" and case$(n1-1)="B" then ca=n1:nca=ca-1 next n1 if ca>0 then return pa$="ECHEC" return
esquive: pa$="":ca=0 for n1=12 to 79 if case$(n1)="R" and case$(n1+1)="B" and case$(n1+1)<>"V" and case$(n1+11)<>"V" then ca=n1:nca=ca+1 next n1 if ca>0 then return pa$="ECHEC" return
attaque: pa$="":ca=0 for n1=12 to 99 if n1<79 then if case$(n1)="R" and case$(n1+20)<>"V" and case$(n1+9)<>"V" and case$(n1+11)<>"V" and case$(n1+10)="B" then ca=n1:nca=ca+10 if n1>71 and n1<79 then if case$(n1)="R" and case$(n1+9)<>"V" and case$(n1+11)<>"V" and case$(n1+10)="B" then ca=n1:nca=ca+10 next n1 if ca>0 then return pa$="ECHEC" return
renforce: pa$="":ca=0 for n1=12 to 79 if case$(n1)="R" and case$(n1+10)="B" and case$(n1+20)="R" then ca=n1:nca=ca+10 next n1 if ca>0 then return pa$="ECHEC" return
mange: pa$="":ca=0 for n1=12 to 99 if n1<>9 or n1<>19 or n1<>29 or n1<>39 or n1<>49 or n1<>59 or n1<>69 or n1<>79 or n1<>89 or n1<>99 then if case$(n1)="R" and case$(n1+1)="V" then ca=n1:nca=ca+1 if n1<>1 or n1<>11 or n1<>21 or n1<>31 or n1<>41 or n1<>51 or n1<>61 or n1<>71 or n1<>81 or n1<>91 then if case$(n1)="R" and case$(n1-1)="V" then ca=n1:nca=ca-1 if n1<90 then if case$(n1)="R" and case$(n1+10)="V" then ca=n1:nca=ca+10 if n1>10 then if case$(n1)="R" and case$(n1-10)="V" then ca=n1:nca=ca-10 next n1 if ca>0 then return pa$="ECHEC" return
debut: pa$="":ca=0 for n1=2 to 9 if cav=(70+n1) and case$(20+n1)="R" and case$(30+n1)="B" then ca=(20+n1):nca=(30+n1) if cav=(60+n1) and case$(30+n1)="R" and case$(40+n1)="B" then ca=(10+n1):nca=(20+n1) if cav=(50+n1) and case$(30+n1)="R" and case$(40+n1)="B" then ca=(30+n1):nca=(40+n1) if cav=(80+n1) and case$(10+n1)="R" and case$(20+n1)="B" then ca=(10+n1):nca=(20+n1) next n1 if ca>0 then return pa$="ECHEC" return
vous: off_click 0:gosub afi5 tour(1)=tour(1)+1 gosub clic if case$(ca)<>"V" then beep:goto jeu1 if case$(ca-1)<>"B" then if case$(ca+1)<>"B" then if case$(ca+10)<>"B" then if case$(ca-10)<>"B" then beep:goto jeu1 vou: n=ca:r=255:g=255:b=0:gosub caze cav=ca:case$(cav)="B" gosub ctr1 r2=0:g2=255:b2=0 attente=0:gosub attente off_click 0:gosub afi4 for n=4 to 7:inactive n:next n if case$(ca)="R" then case$(ca)="V":reste(2)=reste(2)-1 if ca<10 and case$(ca)="N" then case$(ca)="VG":point(1)=point(1)+2:r=150:g=255:b=150:gosub casegain:ca=cav:gosub nouvpion if ca>10 then case$(ca)="V" gosub score:ca=0:wait temp*100 off_click 0:goto jeu
nouvpion: if joueur=1 then case$(ca)="V":r=0:g=255:b=0:gosub casegain return
casegain: 2d_target_is 0:2d_fill_color r,g,b 2d_circle pcx(ca),pcy(ca),10 return
attente: for n=4 to 7 if clicked(n)=1 then attente=2 next n end if attente=2 then return goto attente
gauche: n=cav:r=255:g=255:b=255:gosub caze ca=ca-1 n=ca:r=r2:g=g2:b=b2:gosub caze return
droite: n=cav:r=255:g=255:b=255:gosub caze ca=ca+1 n=ca:r=r2:g=g2:b=b2:gosub caze return
haut: n=cav:r=255:g=255:b=255:gosub caze ca=ca-10 n=ca:r=r2:g=g2:b=b2:gosub caze return
bas: n=cav:r=255:g=255:b=255:gosub caze ca=ca+10 n=ca:r=r2:g=g2:b=b2:gosub caze return
ctr1: pa$="" for n=4 to 7:inactive n:next n if case$(ca-1)="B" or case$(ca-1)="R" then pa$="O":active 4 if case$(ca+1)="B" or case$(ca+1)="R" then pa$="O":active 5 if ca<10 then goto ctr2 if case$(ca-10)="B" or case$(ca-10)="R" or case$(ca-10)="N" then pa$="O":active 6 ctr2: if case$(ca+10)="B" or case$(ca+10)="R" then pa$="O":active 7 return
clic: clicX=mouse_x_position(0):clicY=mouse_y_position(0) for n=1 to 100 if pcx(n)<(clicX+10) and pcx(n)>(clicX-10) and pcy(n)<(clicY+10) and pcy(n)>(clicY-10) then ca=n:exit_for ca=0:next n return
init: print_target_is 0 pcx(1)=80:pcy(1)=120:for n=1 to 10 if n>1 then pcx(n)=pcx(n-1)+70:pcy(n)=120 next n pcx(11)=80:pcy(11)=190:for n=11 to 20 if n>11 then pcx(n)=pcx(n-1)+70:pcy(n)=190 next n pcx(21)=80:pcy(21)=260:for n=21 to 30 if n>21 then pcx(n)=pcx(n-1)+70:pcy(n)=260 next n pcx(31)=80:pcy(31)=330:for n=31 to 40 if n>31 then pcx(n)=pcx(n-1)+70:pcy(n)=330 next n pcx(41)=80:pcy(41)=400:for n=41 to 50 if n>41 then pcx(n)=pcx(n-1)+70:pcy(n)=400 next n pcx(51)=80:pcy(51)=470:for n=51 to 60 if n>51 then pcx(n)=pcx(n-1)+70:pcy(n)=470 next n pcx(61)=80:pcy(61)=540:for n=61 to 70 if n>61 then pcx(n)=pcx(n-1)+70:pcy(n)=540 next n pcx(71)=80:pcy(71)=610:for n=71 to 80 if n>71 then pcx(n)=pcx(n-1)+70:pcy(n)=610 next n pcx(81)=80:pcy(81)=680:for n=81 to 90 if n>81 then pcx(n)=pcx(n-1)+70:pcy(n)=680 next n pcx(91)=80:pcy(91)=750:for n=91 to 100 if n>91 then pcx(n)=pcx(n-1)+70:pcy(n)=750 next n for n=1 to 100:case$(n)="B":r=255:g=255:b=255:gosub caze:next n for n=2 to 9:case$(n)="N":r=200:g=200:b=200:gosub caze:next n for n=92 to 99:case$(n)="N":r=200:g=200:b=200:gosub caze:next n for n=1 to 91 step 10:case$(n)="N":r=100:g=100:b=100:gosub caze:next n for n=10 to 100 step 10:case$(n)="N":r=100:g=100:b=100:gosub caze:next n for n=12 to 19:case$(n)="R":r=255:g=55:b=55:gosub caze:next n for n=22 to 29:case$(n)="R":r=255:g=55:b=55:gosub caze:next n for n=72 to 79:case$(n)="V":r=55:g=255:b=55:gosub caze:next n for n=82 to 89:case$(n)="V":r=55:g=255:b=55:gosub caze:next n return
caze: 2d_target_is 0:2d_fill_color r,g,b 2d_circle pcx(n),pcy(n),10 return
reste: for n=1 to 100 if case$(n)="R" then reste(2)=reste(2)+1 if case$(n)="V" then reste(1)=reste(1)+1 next n return
score: gosub afi1:gosub afi2 return
afi1: 2d_target_is 1:2d_fill_color 50,255,50 2d_rectangle 15,15,100,50 print_target_is 1:print_locate 31,25:print " " print_locate 25,25:print "VOUS:":print_locate 60,25:print reste(1):print_locate 75,25:print "/":print_locate 85,25:print point(1) return
afi2: 2d_target_is 1:2d_fill_color 255,50,50 2d_rectangle 690,15,765,50 print_target_is 1:print_locate 700,25:print " " print_locate 695,25:print "ORDI:":print_locate 728,25:print reste(2):print_locate 743,25:print "/":print_locate 750,25:print point(2) return
afi3: print_target_is 2 print_locate 5,20:print string$(96," ") print_locate 5,20:print "C'est à Vous de jouer. Choisissez le pion à déplacer, puis cliquez sur un bouton de déplacement" return
afi4: print_target_is 2 print_locate 5,20:print string$(96," ") print_locate 5,20:print " PATIENTEZ.................." return
afi5: print_target_is 2 print_locate 5,20:print string$(96," ") return quit: terminate
Dernière édition par Jean Claude le Mer 17 Mar 2010 - 9:17, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mar 16 Mar 2010 - 22:32 | |
| J'ai gagné, me restent 6 pions à zéro. Ca s'apparente plus aux dames qu'aux échecs. Pour corser un peu, on ne devrait pas avoir le droit de reculer, comme aux dames. Difficile de faire mat si on peut reculer. Mais bravo Jean-Claude ! A quoi servent les ronds gris tout autour ? juste décoratifs ? je suis allé à dame mais ça n'a rien fait. Pardon j'avais pas bien lu l'aide: gagné 2 points. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 17 Mar 2010 - 0:25 | |
| A mon avis, il faudra que tu revoies ton calcul du top 0,?? et du height 0,?? avec y=screen_y parce que chez moi, la barre de titre se perd au delà de la limite sup de l'écran et je dois fermer avec CTRL-ALT-SUPPR. Sinon, oui, ça s'assimile un peu à un jeu de Dames. Tu deviens spécialisé dans les jeux, JC. Bravo ! (on devrait avoir un Smiley qui applaudit)
Dernière édition par jjn4 le Mer 17 Mar 2010 - 1:07, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 0:33 | |
| Très bien Jean-Claude. Une question qui vas t'étonner: c'est quand ton anniversaire? @+ |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 17 Mar 2010 - 1:08 | |
| Pourquoi, tu veux lui envoyer un cadeau ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 7:25 | |
| C'est pas moi qui est fait la règle du jeu, elle s'est faite au fur et à mesure de la programmation. il y a bien des choses que j'aurais souhaitées, mais çà bugger telement que j'ai été obligé de simplifier. Ce que je n'ai pas réussi à faire, c'est de rendre le jeu de l'ordinateur plus performant. Actuellement, il est trop facile de gagner. Mais c'est un début. @JL35, les ronds (cases) gris foncés ne servent à rien pour le jeu. (Mais ont été necéssaires pour la programmation). Les ronds gris clair sont un but à atteindre. (pour prendre 2 points sans perdre son pion) @JJN4, je ne vois pas ce qui cloche pour le centrage de FORM 0 - Code:
-
x=screen_x:y=screen_y lf=810:hf=900:width 0,lf:height 0,hf:top 0,int((y-hf)/2):left 0,int((x-lf)/2)
serait-ce hf=900 ? @Cosmos70, je suis né le 21 mai 1954. Si tu veus mon numéro de compte en banque pour effectuer un virement, YA PAS DE PROBLEME. @tous, Si vous souhaitez reprendre ou refaire ce code, çà m'intéresse de voir une autre façon de programmer. | |
| | | Invité Invité
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 8:22 | |
| Salut Jean-Claude Si je t'ai demandé ta date d'anniversaire, c'est qu'une chose ma <tiqué> - Citation :
- "Jean Claude / mars 2009"
Ça m'a sauté au yeux tout de suite, et je me suis dis que tu allais rester jeune longtemps. Salutation |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 8:40 | |
| HA! dès qu'il s'agit de me donner de l'argent, ya plus personne !
Tant pis. Je date mes codes pour voir plus tard ce que j'ai fait.
A+ | |
| | | Invité Invité
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 8:49 | |
| Tu n'as encore vu qu'on étais en 2010? @+ |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 9:16 | |
| Hou! t'as raison. Il faut que je me remette à l'heure. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) Mer 17 Mar 2010 - 10:36 | |
| C'est ça, de ne pas vouloir vieillir... mais le temps passe quand même. Ton jeu me rappelle une espèce de compétition de programmation de jeu de dames il y a bien longtemps avec un copain. C'était avec un des premiers basics (sur TRS-80), ça marchait pas mal, la machine était plutôt difficile à battre, mais les graphismes étaient plutôt rustiques ! Et la lenteur... Bon après-midi à tous, je suis de sortie (vous avez vu le soleil ?)... | |
| | | Contenu sponsorisé
| Sujet: Re: ECHEC et MAT (un petit jeu pour vous distraire) | |
| |
| | | | ECHEC et MAT (un petit jeu pour vous distraire) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |