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 |
|
|
| Jeu de dames | |
|
+4bignono papydall Jean Claude Jicehel 8 participants | |
Auteur | Message |
---|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Jeu de dames Sam 19 Mai 2012 - 19:53 | |
| Bonjour, Je viens de commencer un jeu de dames (merci à JL35 pour quelques bouts de code récupérés bien pratiques comme pour l'aide par exemple ) Voilà, le programme viens de commencer, pour l'instant j'ai fais un début de menu et l’initialisation, tracé du damier ... Il ne reste plus qu'à faire le moteur de jeu maintenant ... Je vais attaquer ça bientôt - Code:
-
REM Jeu de dames par Jean-Charles REM V0.1 du 19/05/2011 REM Programmation en cours - affichage du damier terminé
LABEL Init: GOTO Init
Aide: SHOW 900 RETURN
Faide: HIDE 900 RETURN
Regle: SHOW 910 RETURN
Fregle: HIDE 910 RETURN
Quitter: TERMINATE RETURN
Dessine_Damier: 2D_TARGET_IS 2 2D_PEN_COLOR 128,128,128: 2D_RECTANGLE 0,0,WIDTH(2),HEIGHT(2) case% = 0 FOR j% = 0 TO 9 FOR k% = 0 TO 9 IF case% = 0 2D_FILL_COLOR 255,255,255 case% = 1 ELSE 2D_FILL_COLOR 64,64,64 case% = 0 END_IF 2D_RECTANGLE k%*pas_case,j%*pas_case,(k%+1)*pas_case,(j%+1)*pas_case Caption 0, "Avant Dessine_piece" IF damier%(j%,k%) > 0 THEN GOSUB Dessine_piece 2D_PEN_COLOR 128,128,128 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j% RETURN
Dessine_piece: SELECT damier%(j%,k%) CASE 0: ' NORMALEMENT ON NE LE FAIT JAMAIS CASE 1 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 205,205,205 : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR 180,180,180 : 2D_FILL_COLOR 205,205,205 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 CASE 2 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 30,30,30 : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 30,30,30 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 CASE 9 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 205,205,205 : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR 180,180,180 : 2D_FILL_COLOR 205,205,205 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 205,205,205 : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case-3+r%,r% - 7 2D_PEN_COLOR 180,180,180 : 2D_FILL_COLOR 205,205,205 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%-6,r% - 7 : 2D_PEN_WIDTH 3 CASE 8 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 30,30,30 : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR 50,50,50 : 2D_FILL_COLOR 30,30,30 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 30,30,30 : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case-3+r%,r% - 7 2D_PEN_COLOR 20,20,20 : 2D_FILL_COLOR 30,30,30 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%-6,r% - 7 : 2D_PEN_WIDTH 3 END_SELECT RETURN
Clic_Damier: RETURN
Init: CAPTION 0,"Init" LABEL Aide,Regle,Faide, Fregle, Quitter, Clic_Damier, Dessine_Damier, Dessine_piece DIM x_Max, y_Max : x_Max=1000 : y_max=700 DIM Marge_x, Marge_y : Marge_x = 20 : Marge_y = 30 DIM hlp$,regle$, j%,k%,case% DIM damier%(10,10) : ' 0: Case vide, 1: Pion du joueur, 9: Dame du joueur, 2: Pion de l'Ai, 8: Dame de l'Ai DIM Sposx, Sposy : ' Position du pion sélectionné DIM Nposx, Nposy : ' Position de la destination sélectionné DIM pas_case : if (y_Max - 2* Marge_y) > (x_Max - 2 * Marge_x) Then pas_case= (x_Max - 2 * Marge_x) / 11 : else: pas_case= (y_Max - 2 * Marge_y) / 11 DIM rc$ : rc$=CHR$(10) DIM r%: r% = pas_case/2 -1 CAPTION 0, "Jeu de dames en Basic Panoramic par Jean-Charles" WIDTH 0,x_Max : HEIGHT 0, y_max
' Menu Principal MAIN_MENU 1 : REM On reserve les objets 1 à 30 pour le menu SUB_MENU 11: PARENT 11, 1: CAPTION 11, "Fichier" SUB_MENU 16: PARENT 16, 1: CAPTION 16, "Aide" SUB_MENU 17: PARENT 17, 1: CAPTION 17, "Règle" ON_CLICK 16, Aide : ON_CLICK 17, Regle
' Sous menu Fichier SUB_MENU 21: CAPTION 21,"Quitter" : PARENT 21, 11 ON_CLICK 21, Quitter
' Préparation de l'aide hlp$=CHR$(9)+CHR$(9)+CHR$(9)+" - AIDE DU JEU DE DAMES -"+rc$ hlp$=hlp$+CHR$(9)+CHR$(9)+CHR$(9)+" ==============================="+rc$+rc$ hlp$=hlp$+"A remplir"+rc$ FORM 900: TOP 900,2*Marge_y: LEFT 900,3*Marge_X: WIDTH 900,x_Max-6*Marge_X: HEIGHT 900,y_Max-4*Marge_y: HIDE 900 FONT_SIZE 900,10 LIST 901: PARENT 901,900: WIDTH 901,WIDTH(900)-16: HEIGHT 901,HEIGHT(900)-80 k% = INSTR(hlp$, rc$) WHILE k% > 0 ITEM_ADD 901, LEFT$(hlp$, k%-1): hlp$ = MID$(hlp$, k%+1, 9000) k% = INSTR(hlp$, rc$) END_WHILE BUTTON 902: PARENT 902,900: TOP 902,HEIGHT(900)-70: LEFT 902,280: CAPTION 902,"OK" ON_CLICK 902, Faide
regle$=CHR$(9)+CHR$(9)+CHR$(9)+" - REGLES DU JEU DE DAMES -"+rc$ regle$=regle$+CHR$(9)+CHR$(9)+CHR$(9)+" ==============================="+rc$+rc$ rem regle$=regle$+""+rc$ : ' Modèle d'une ligne vide regle$=regle$+"Le jeu de dames international se joue sur un damier carré divisé en 100 cases égales, alternativement claires et foncées."+rc$ regle$=regle$+"Le jeu se joue sur les cases foncées du damier. Il y a donc 50 cases actives."+rc$ regle$=regle$+"La plus longue diagonale, joignant deux coins du damier et comprenant 10 cases foncées, se dénomme la grande diagonale."+rc$ regle$=regle$+"Le damier doit être placé de sorte que la première case de gauche, pour chaque joueur, soit une case foncée."+rc$ regle$=regle$+"Le jeu de dames international se joue avec 20 pions blancs (clairs) et 20 pions noirs (foncés)"+rc$ regle$=regle$+"Avant de débuter une partie, les 20 pions noirs et les 20 pions blancs sont disposés sur les 4 premières rangées de chaque joueur."+rc$ regle$=regle$+"Il faut manger tous les pions de l'autre en passant par dessus avec l'un de vos pions."+rc$ regle$=regle$+"Les déplacements autoriser : seulement d'une case en avant, en diagonale si celle ci est libre."+rc$ regle$=regle$+"Le premier coup est toujours joué par les blancs. Les adversaires jouent un coup chacun à tour de rôle avec leurs pièces."+rc$ regle$=regle$+"Pour cela, on couronne le pion en plaçant dessus un deuxième pion de la même couleur."+rc$ regle$=regle$+"Il est interdit de reculer en dehors des prises"+rc$ regle$=regle$+"Si un pion avance jusqu'à la dernière rangée, il devient une Dame."+rc$ regle$=regle$+"La dame peut se déplacer de plusieurs cases en avant ou en arrière si ces cases sont vides."+rc$ regle$=regle$+"La prise des pièces adverse est obligatoire et s’effectue aussi bien en avant qu’en arrière."+rc$ regle$=regle$+"Lorsqu’un pion se trouve en présence, diagonalement, d’une pièce adverse derrière laquelle se trouve une case libre, il doit"+rc$ regle$=regle$+"obligatoirement sauter par-dessus cette pièce et occuper la case libre. Cette pièce adverse est alors enlevée du damier."+rc$ regle$=regle$+"Cette opération complète est la prise par un pion."+rc$ regle$=regle$+"Lorsqu’au cours d’une prise par un pion, celui-ci se trouve à nouveau en présence, diagonalement, d’une pièce adverse derrière "+rc$ regle$=regle$+"laquelle se trouve une case libre, il doit obligatoirement sauter par-dessus cette seconde pièce, voire d’une troisième et"+rc$ regle$=regle$+"ainsi de suite, et occuper la case libre se trouvant derrière la dernière pièce capturée. Les pièces adverses ainsi capturées"+rc$ regle$=regle$+"sont ensuite enlevées du damier dans l’ordre de la prise."+rc$ regle$=regle$+"Cette opération complète est une rafle par un pion."+rc$ regle$=regle$+"Lorsqu’au cours d’une prise par une dame, celle-ci se trouve à nouveau en présence, sur une même diagonale, d’une pièce adverse"+rc$ regle$=regle$+"derrière laquelle se trouve une ou plusieurs cases libres, elle doit obligatoirement sauter par-dessus cette seconde pièce, voire"+rc$ regle$=regle$+"d’une troisième et ainsi de suite, et occuper au choix une case libre se trouvant derrière et sur la même diagonale que la dernière"+rc$ regle$=regle$+"pièce capturée. Les pièces adverses ainsi capturées sont ensuite enlevées du damier dans l’ordre de la prise."+rc$ regle$=regle$+"Cette opération complète est une rafle par une dame."+rc$ regle$=regle$+"Au cours d’une rafle, il est interdit de passer au-dessus de ses propres pièces."+rc$ regle$=regle$+"Au cours d’une rafle, il est permis de passer plusieurs fois sur une même case libre mais il est interdit de passer plus d’une fois "+rc$ regle$=regle$+"au-dessus d’une même pièce adverse."+rc$ regle$=regle$+"Une rafle doit être clairement indiquée, pièce par pièce, en posant la pièce preneuse sur la case de saut, le temps d’y passer, et"+rc$ regle$=regle$+"en déposant cette pièce sur la case terminale."+rc$ regle$=regle$+"Les pièces prises ne peuvent être enlevées du damier qu’à l’issue de l’exécution complète de la rafle."+rc$ regle$=regle$+"La prise du plus grand nombre de pièces est prioritaire, donc obligatoire. Dans ce cas, une dame compte pour une pièce, tout comme un pion."+rc$ regle$=regle$+"Elle ne confère nulle priorité et n’impose aucune obligation."+rc$ regle$=regle$+"Si les pièces à prendre sont en nombre égal dans deux ou plusieurs possibilités de prise ou de rafle, le joueur est libre de choisir "+rc$ regle$=regle$+"une de ces possibilités, soit avec un pion, soit avec une dame."+rc$ regle$=regle$+"Un pion qui au cours d’une rafle, ne fait que passer sur une des 5 cases de la rangée de base adverse reste un pion lorsque la rafle est terminée."+rc$
FORM 910: TOP 910,2*Marge_y: LEFT 910,3*Marge_X: WIDTH 910,x_Max-6*Marge_X: HEIGHT 910,y_Max-4*Marge_y: HIDE 910 FONT_SIZE 910,10 LIST 911: PARENT 911,910: WIDTH 911,WIDTH(910)-16: HEIGHT 911,HEIGHT(910)-80 k% = INSTR(regle$, rc$) WHILE k% > 0 ITEM_ADD 911, LEFT$(regle$, k%-1): regle$ = MID$(regle$, k%+1, 9000) k% = INSTR(regle$, rc$) END_WHILE BUTTON 912: PARENT 912,910: TOP 912,HEIGHT(910)-70: LEFT 912,280: CAPTION 912,"OK" ON_CLICK 902, Fregle
' INITIALISATION DES PIONS SUR LE DAMIER ' PIONS DE L'AI Caption 0, "PIONS AI" case% = 0 FOR j% = 0 TO 3 FOR k% = 0 TO 9 IF case% = 0 THEN case% = 1 : ELSE : damier%(j%,k%)= 2 : case% = 0 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j% ' PIONS DU JOUEUR Caption 0, "PIONS JOUEUR" case% = 0 FOR j% = 6 TO 9 FOR k% = 0 TO 9 IF case% = 0 THEN case% = 1 : ELSE : damier%(j%,k%)= 1 : case% = 0 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j%
' Représentation du Damier PICTURE 2 WIDTH 2, 10 * pas_case : HEIGHT 2, 10 * pas_case TOP 2,Marge_y: LEFT 2, Marge_x: ON_CLICK 2, Clic_Damier GOSUB Dessine_Damier
END | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de dames Sam 19 Mai 2012 - 20:35 | |
| Salut Jicehel,
Bon courage pour la suite.
Une petite remarque: les pions noirs sur les cases noires c'est pas pas trop bon pour le visuel.
à suivre.
A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de dames Sam 19 Mai 2012 - 20:41 | |
| Salut Jean-Charles dit Jicehel ! C’est bien toi Jicehel, Jean-Charles ? Boh, ton jeu de dames, (en tout cas la partie déjà codée) promet d’être sympa ! Je voie que ma demande à toi de programmer un jeu de dames a été prise au sérieux ! Alors bonne continuation ! J’ai ajouté, au début du sous-programme ‘INIT :’ color 0,250,225,0 Ça donne un fond un peu plus gai ! Mais ceci est une question de goût ! PS: Je suis d’accord avec Jean-Claude en ce qui concerne la couleur. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Jeu de dames Sam 19 Mai 2012 - 21:12 | |
| Bonsoir Jicehel, J'ai hâte de jouer aux dames! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Sam 19 Mai 2012 - 21:46 | |
| En plus c'est un peu de ta faute Bignono ... Je vais me lancer dans la pseudo intelligence (si j'y arrive) mais bon, j'ai pris un sujet moins dur que le Tarot (enfin je pense) pour essayer | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 0:32 | |
| Bon courage Jicehel ! J’ai hâte de damer le pion ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 16:14 | |
| Coucou, j'ai avancé un peu, je viens d'ajouter les déplacements des pions Prochaine étape regarder s'il y a un souffler n'est pas jouer quand on ne prend pas (Il faudra plus tard regarder si l'on prend là ou il y avait le plus de pion à prendre, mais ça, je verrais plus tard, quand j'attaquerais l'intelligence artificielle et les estimations de prises) Là, on peut bouger et prendre les pions jusqu'à ce que l'on atteigne les dames (le mouvement des dames n'est pas encore pris en charge) - Code:
-
REM Jeu de dames par Jean-Charles REM V0.2 du 20/05/2011 REM Programmation en cours - Selection des pièces - mouvements de base terminée
LABEL Init: GOTO Init
Aide: SHOW 900 RETURN
Faide: HIDE 900 RETURN
Regle: SHOW 910 RETURN
Fregle: HIDE 910 RETURN
Quitter: TERMINATE RETURN
Dessine_Damier: 2D_TARGET_IS 2 2D_PEN_COLOR 40,40,40: 2D_RECTANGLE 0,0,WIDTH(2),HEIGHT(2) case% = 0 FOR j% = 0 TO 9 FOR k% = 0 TO 9 IF case% = 0 2D_FILL_COLOR CDR,CDV,CDB case% = 1 ELSE 2D_FILL_COLOR CCR,CCV,CCB case% = 0 END_IF 2D_RECTANGLE k%*pas_case,j%*pas_case,(k%+1)*pas_case,(j%+1)*pas_case IF damier%(j%,k%) > 0 THEN GOSUB Dessine_piece 2D_PEN_COLOR 40,40,40 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j% RETURN
Dessine_piece: SELECT damier%(j%,k%) CASE 0: ' NORMALEMENT ON NE LE FAIT JAMAIS CASE 1 ' PION BLANC 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 CASE 2 ' PION NOIR 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 CASE 9 ' DAME BLANCHE 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case-3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%-6,r% - 7 : 2D_PEN_WIDTH 3 CASE 8 ' DAME NOIRE 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case-3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%-6,r% - 7 : 2D_PEN_WIDTH 3 END_SELECT RETURN
Clic_Damier: OFF_CLICK 2 Sposx = INT(MOUSE_X_POSITION(2)/pas_case) Sposy = INT(MOUSE_Y_POSITION(2)/pas_case) Clic_Damier3: IF tour=0 ' Tour des blancs IF damier%(Sposy,Sposx) = 1 OR damier%(Sposy,Sposx) = 9 2D_PEN_COLOR 255,0,0 : 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Sposy : k%= Sposx : GOSUB Dessine_piece ON_CLICK 2, Clic_Damier2 ELSE ON_CLICK 2, Clic_Damier END_IF ELSE ' Tour des noirs IF damier%(Sposy,Sposx) = 2 OR damier%(Sposy,Sposx) = 8 2D_PEN_COLOR 255,0,0 : 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Sposy : k%= Sposx : GOSUB Dessine_piece ON_CLICK 2, Clic_Damier4 ELSE ON_CLICK 2, Clic_Damier END_IF END_IF RETURN
Clic_Damier4: OFF_CLICK 2 Nposx = INT(MOUSE_X_POSITION(2)/pas_case) : Nposy = INT(MOUSE_Y_POSITION(2)/pas_case) IF damier%(Nposy,Nposx) = 0 and Nposy = Sposy+1 IF (Nposx = (Sposx + 1)) OR (Nposx = (Sposx - 1)) ' On déplace le pion normalement, à ajouter: tester si il y a un soffler n'est pas jouer 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Nposy : k%= Nposx : damier%(j%,k%) = damier%(Sposy,Sposx) : damier%(Sposy,Sposx)=0: GOSUB Dessine_piece tour = 0 ON_CLICK 2, Clic_Damier ELSE GOSUB Test_clic_noir END_IF ELSE IF damier%(Nposy,Nposx) = 0 AND Nposy = Sposy+2 ' Test de la prise vers l'avant IF (Nposx = (Sposx + 2)) IF damier%(Sposy+1,Sposx+1) = 1 OR damier%(Sposy+1,Sposx+1) = 9 GOSUB Prise : ' On prend le pion adverse Nb_blancs = Nb_blancs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_noir END_IF ELSE IF (Nposx = (Sposx - 2)) IF damier%(Sposy+1,Sposx-1) = 1 OR damier%(Sposy+1,Sposx-1) = 9 GOSUB Prise : ' On prend le pion adverse Nb_blancs = Nb_blancs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_noir END_IF ELSE GOSUB Test_clic_noir END_IF END_IF ELSE IF damier%(Nposy,Nposx) = 0 AND Nposy = Sposy-2 ' Test de la prise vers l'arriere IF (Nposx = (Sposx + 2)) IF damier%(Sposy-1,Sposx+1) = 1 OR damier%(Sposy-1,Sposx+1) = 9 GOSUB Prise : ' On prend le pion adverse Nb_blancs = Nb_blancs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_noir END_IF ELSE IF (Nposx = (Sposx - 2)) IF damier%(Sposy-1,Sposx-1) = 1 OR damier%(Sposy-1,Sposx-1) = 9 GOSUB Prise : ' On prend le pion adverse Nb_blancs = Nb_blancs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_noir END_IF ELSE GOSUB Test_clic_noir END_IF END_IF ELSE GOSUB Test_clic_noir END_IF END_IF END_IF IF tour=0 AND Nposy=9 THEN IF damier%(Nposy,Nposx)=2 THEN j%=Nposy : k%= Nposx : damier%(j%,k%)=8 : GOSUB Dessine_piece RETURN
Clic_Damier2: OFF_CLICK 2 Nposx = INT(MOUSE_X_POSITION(2)/pas_case) : Nposy = INT(MOUSE_Y_POSITION(2)/pas_case) IF damier%(Nposy,Nposx) = 0 AND Nposy = Sposy-1 IF (Nposx = (Sposx + 1)) OR (Nposx = (Sposx - 1)) ' On déplace le pion normalement, à ajouter: tester si il y a un soffler n'est pas jouer 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Nposy : k%= Nposx : damier%(j%,k%) = damier%(Sposy,Sposx) : damier%(Sposy,Sposx)=0 : GOSUB Dessine_piece tour = 1 ON_CLICK 2, Clic_Damier ELSE GOSUB Test_clic_blanc END_IF ELSE IF damier%(Nposy,Nposx) = 0 AND Nposy = Sposy-2 ' Test de la prise vers l'avant IF (Nposx = (Sposx + 2)) IF damier%(Sposy-1,Sposx+1) = 2 OR damier%(Sposy-1,Sposx+1) = 8 GOSUB Prise : ' On prend le pion adverse Nb_Noirs = Nb_Noirs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_blanc END_IF ELSE IF (Nposx = (Sposx - 2)) IF damier%(Sposy-1,Sposx-1) = 2 OR damier%(Sposy-1,Sposx-1) = 8 GOSUB Prise : ' On prend le pion adverse Nb_Noirs = Nb_Noirs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_blanc END_IF ELSE GOSUB Test_clic_blanc END_IF END_IF ELSE IF damier%(Nposy,Nposx) = 0 AND Nposy = Sposy+2 ' Test de la prise vers l'arriere IF (Nposx = (Sposx + 2)) IF damier%(Sposy+1,Sposx+1) = 2 OR damier%(Sposy+1,Sposx+1) = 8 GOSUB Prise : ' On prend le pion adverse Nb_Noirs = Nb_Noirs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_blanc END_IF ELSE IF (Nposx = (Sposx - 2)) IF damier%(Sposy+1,Sposx-1) = 2 OR damier%(Sposy+1,Sposx-1) = 8 GOSUB Prise : ' On prend le pion adverse Nb_Noirs = Nb_Noirs - 1 GOSUB Test_Rafle ELSE GOSUB Test_clic_blanc END_IF ELSE GOSUB Test_clic_blanc END_IF END_IF ELSE GOSUB Test_clic_blanc END_IF END_IF END_IF IF tour=1 AND Nposy=0 THEN IF damier%(Nposy,Nposx)=1 THEN j%=Nposy : k%= Nposx : damier%(j%,k%)=9 : GOSUB Dessine_piece RETURN
Test_Rafle: PeutPrendre = 0 IF tour=0 j%=2 : k%=8 ELSE j%=1 : k%=9 END_IF IF Nposx < 8 IF Nposy < 8 IF damier%(Nposy+1,Nposx+1)=j% OR damier%(Nposy+1,Nposx+1)=k% IF damier%(Nposy+2,Nposx+2)= 0 PeutPrendre = 1 END_IF END_IF END_IF IF Nposy > 1 IF damier%(Nposy-1,Nposx+1)=j% OR damier%(Nposy-1,Nposx+1)=k% IF damier%(Nposy-2,Nposx+2)= 0 PeutPrendre = 1 END_IF END_IF END_IF END_IF IF Nposx > 1 IF Nposy < 8 IF damier%(Nposy+1,Nposx-1)=j% OR damier%(Nposy+1,Nposx-1)=k% IF damier%(Nposy+2,Nposx-2)= 0 PeutPrendre = 1 END_IF END_IF END_IF IF Nposy > 1 IF damier%(Nposy-1,Nposx-1)=j% OR damier%(Nposy-1,Nposx-1)=k% IF damier%(Nposy-2,Nposx-2)= 0 PeutPrendre = 1 END_IF END_IF END_IF END_IF IF PeutPrendre = 0 IF tour=1 THEN tour = 0 : ELSE : tour = 1 ON_CLICK 2, Clic_Damier ELSE Sposx=Nposx : Sposy=Nposy 2D_PEN_COLOR 255,0,0 : 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Sposy : k%= Sposx : GOSUB Dessine_piece IF tour=1 THEN ON_CLICK 2, Clic_Damier4 : ELSE : ON_CLICK 2, Clic_Damier2 END_IF RETURN
Prise: 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case IF Nposy > Sposy IF Nposx > Sposx damier%(Sposy+1,Sposx+1) = 0 2D_RECTANGLE (Sposx+1)*pas_case,(Sposy+1)*pas_case,(Sposx+2)*pas_case,(Sposy+2)*pas_case ELSE damier%(Sposy+1,Sposx-1) = 0 2D_RECTANGLE (Sposx-1)*pas_case,(Sposy+1)*pas_case,Sposx*pas_case,(Sposy+2)*pas_case END_IF ELSE IF Nposx > Sposx damier%(Sposy-1,Sposx+1) = 0 2D_RECTANGLE (Sposx+1)*pas_case,(Sposy-1)*pas_case,(Sposx+2)*pas_case,Sposy*pas_case ELSE damier%(Sposy-1,Sposx-1) = 0 2D_RECTANGLE (Sposx-1)*pas_case,(Sposy-1)*pas_case,Sposx*pas_case,Sposy*pas_case END_IF END_IF j%=Nposy : k%= Nposx : damier%(j%,k%) = damier%(Sposy,Sposx) : damier%(Sposy,Sposx)=0 : GOSUB Dessine_piece RETURN
Test_clic_blanc: IF damier%(Nposy,Nposx) = 1 or damier%(Nposy,Nposx) = 9 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case GOSUB Dessine_piece Sposx=Nposx : Sposy=Nposy : Goto Clic_Damier3 ELSE ON_CLICK 2,Clic_Damier2 END_IF
RETURN
Test_clic_noir: IF damier%(Nposy,Nposx) = 2 or damier%(Nposy,Nposx) = 8 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case GOSUB Dessine_piece Sposx=Nposx : Sposy=Nposy : Goto Clic_Damier3 ELSE ON_CLICK 2,Clic_Damier4 END_IF RETURN
Init: COLOR 0,180,100,60 LABEL Aide,Regle,Faide, Fregle, Quitter, Clic_Damier, Clic_Damier2, Clic_Damier3, Clic_Damier4, Dessine_Damier, Dessine_piece LABEL Test_clic_blanc, Test_clic_noir, Prise, Test_Rafle DIM x_Max, y_Max : x_Max=1000 : y_max=700 DIM Marge_x, Marge_y : Marge_x = 20 : Marge_y = 30 DIM hlp$,regle$, j%,k%,case%,tour,PeutPrendre DIM damier%(10,10) : ' 0: Case vide, 1: Pion du joueur, 9: Dame du joueur, 2: Pion de l'Ai, 8: Dame de l'Ai DIM Sposx, Sposy : ' Position du pion sélectionné DIM Nposx, Nposy : ' Position de la destination sélectionné DIM pas_case : if (y_Max - 2* Marge_y) > (x_Max - 2 * Marge_x) Then pas_case= (x_Max - 2 * Marge_x) / 11 : else: pas_case= (y_Max - 2 * Marge_y) / 11 DIM rc$ : rc$=CHR$(10) DIM Nb_Noirs,Nb_blancs : Nb_Noirs = 20 : Nb_blancs = 20 : ' Nombre de pions noirs et blancs DIM r%: r% = pas_case/2 -1 DIM CBR,CBV,CBB, CNR, CNV, CNB CBR = 205 : CBV = 205: CBB = 205 : ' Couleurs des pions blancs CNR = 55 : CNV = 55 : CNB = 55 : ' Couleurs des pions noirs DIM CDR,CDV,CDB,CCR,CCV,CCB CDR = 255 : CDV = 255: CDB = 255 : ' Couleurs des cases 'blanches' CCR = 30 : CCV = 30 : CCB = 180 : ' Couleurs des cases 'noires' CAPTION 0, "Jeu de dames en Basic Panoramic par Jean-Charles" WIDTH 0,x_Max : HEIGHT 0, y_max
' Menu Principal MAIN_MENU 1 : REM On reserve les objets 1 à 30 pour le menu SUB_MENU 11: PARENT 11, 1: CAPTION 11, "Fichier" SUB_MENU 16: PARENT 16, 1: CAPTION 16, "Aide" SUB_MENU 17: PARENT 17, 1: CAPTION 17, "Règle" ON_CLICK 16, Aide : ON_CLICK 17, Regle
' Sous menu Fichier SUB_MENU 21: CAPTION 21,"Quitter" : PARENT 21, 11 ON_CLICK 21, Quitter
' Préparation de l'aide hlp$=CHR$(9)+CHR$(9)+CHR$(9)+" - AIDE DU JEU DE DAMES -"+rc$ hlp$=hlp$+CHR$(9)+CHR$(9)+CHR$(9)+" ==============================="+rc$+rc$ hlp$=hlp$+"A remplir"+rc$ FORM 900: TOP 900,2*Marge_y: LEFT 900,3*Marge_X: WIDTH 900,x_Max-6*Marge_X: HEIGHT 900,y_Max-4*Marge_y: HIDE 900 FONT_SIZE 900,10 LIST 901: PARENT 901,900: WIDTH 901,WIDTH(900)-16: HEIGHT 901,HEIGHT(900)-80 k% = INSTR(hlp$, rc$) WHILE k% > 0 ITEM_ADD 901, LEFT$(hlp$, k%-1): hlp$ = MID$(hlp$, k%+1, 9000) k% = INSTR(hlp$, rc$) END_WHILE BUTTON 902: PARENT 902,900: TOP 902,HEIGHT(900)-70: LEFT 902,280: CAPTION 902,"OK" ON_CLICK 902, Faide
regle$=CHR$(9)+CHR$(9)+CHR$(9)+" - REGLES DU JEU DE DAMES -"+rc$ regle$=regle$+CHR$(9)+CHR$(9)+CHR$(9)+" ==============================="+rc$+rc$ rem regle$=regle$+""+rc$ : ' Modèle d'une ligne vide regle$=regle$+"Le jeu de dames international se joue sur un damier carré divisé en 100 cases égales, alternativement claires et foncées."+rc$ regle$=regle$+"Le jeu se joue sur les cases foncées du damier. Il y a donc 50 cases actives."+rc$ regle$=regle$+"La plus longue diagonale, joignant deux coins du damier et comprenant 10 cases foncées, se dénomme la grande diagonale."+rc$ regle$=regle$+"Le damier doit être placé de sorte que la première case de gauche, pour chaque joueur, soit une case foncée."+rc$ regle$=regle$+"Le jeu de dames international se joue avec 20 pions blancs (clairs) et 20 pions noirs (foncés)"+rc$ regle$=regle$+"Avant de débuter une partie, les 20 pions noirs et les 20 pions blancs sont disposés sur les 4 premières rangées de chaque joueur."+rc$ regle$=regle$+"Il faut manger tous les pions de l'autre en passant par dessus avec l'un de vos pions."+rc$ regle$=regle$+"Les déplacements autoriser : seulement d'une case en avant, en diagonale si celle ci est libre."+rc$ regle$=regle$+"Le premier coup est toujours joué par les blancs. Les adversaires jouent un coup chacun à tour de rôle avec leurs pièces."+rc$ regle$=regle$+"Pour cela, on couronne le pion en plaçant dessus un deuxième pion de la même couleur."+rc$ regle$=regle$+"Il est interdit de reculer en dehors des prises"+rc$ regle$=regle$+"Si un pion avance jusqu'à la dernière rangée, il devient une Dame."+rc$ regle$=regle$+"La dame peut se déplacer de plusieurs cases en avant ou en arrière si ces cases sont vides."+rc$ regle$=regle$+"La prise des pièces adverse est obligatoire et s’effectue aussi bien en avant qu’en arrière."+rc$ regle$=regle$+"Lorsqu’un pion se trouve en présence, diagonalement, d’une pièce adverse derrière laquelle se trouve une case libre, il doit"+rc$ regle$=regle$+"obligatoirement sauter par-dessus cette pièce et occuper la case libre. Cette pièce adverse est alors enlevée du damier."+rc$ regle$=regle$+"Cette opération complète est la prise par un pion."+rc$ regle$=regle$+"Lorsqu’au cours d’une prise par un pion, celui-ci se trouve à nouveau en présence, diagonalement, d’une pièce adverse derrière "+rc$ regle$=regle$+"laquelle se trouve une case libre, il doit obligatoirement sauter par-dessus cette seconde pièce, voire d’une troisième et"+rc$ regle$=regle$+"ainsi de suite, et occuper la case libre se trouvant derrière la dernière pièce capturée. Les pièces adverses ainsi capturées"+rc$ regle$=regle$+"sont ensuite enlevées du damier dans l’ordre de la prise."+rc$ regle$=regle$+"Cette opération complète est une rafle par un pion."+rc$ regle$=regle$+"Lorsqu’au cours d’une prise par une dame, celle-ci se trouve à nouveau en présence, sur une même diagonale, d’une pièce adverse"+rc$ regle$=regle$+"derrière laquelle se trouve une ou plusieurs cases libres, elle doit obligatoirement sauter par-dessus cette seconde pièce, voire"+rc$ regle$=regle$+"d’une troisième et ainsi de suite, et occuper au choix une case libre se trouvant derrière et sur la même diagonale que la dernière"+rc$ regle$=regle$+"pièce capturée. Les pièces adverses ainsi capturées sont ensuite enlevées du damier dans l’ordre de la prise."+rc$ regle$=regle$+"Cette opération complète est une rafle par une dame."+rc$ regle$=regle$+"Au cours d’une rafle, il est interdit de passer au-dessus de ses propres pièces."+rc$ regle$=regle$+"Au cours d’une rafle, il est permis de passer plusieurs fois sur une même case libre mais il est interdit de passer plus d’une fois "+rc$ regle$=regle$+"au-dessus d’une même pièce adverse."+rc$ regle$=regle$+"Une rafle doit être clairement indiquée, pièce par pièce, en posant la pièce preneuse sur la case de saut, le temps d’y passer, et"+rc$ regle$=regle$+"en déposant cette pièce sur la case terminale."+rc$ regle$=regle$+"Les pièces prises ne peuvent être enlevées du damier qu’à l’issue de l’exécution complète de la rafle."+rc$ regle$=regle$+"La prise du plus grand nombre de pièces est prioritaire, donc obligatoire. Dans ce cas, une dame compte pour une pièce, tout comme un pion."+rc$ regle$=regle$+"Elle ne confère nulle priorité et n’impose aucune obligation."+rc$ regle$=regle$+"Si les pièces à prendre sont en nombre égal dans deux ou plusieurs possibilités de prise ou de rafle, le joueur est libre de choisir "+rc$ regle$=regle$+"une de ces possibilités, soit avec un pion, soit avec une dame."+rc$ regle$=regle$+"Un pion qui au cours d’une rafle, ne fait que passer sur une des 5 cases de la rangée de base adverse reste un pion lorsque la rafle est terminée."+rc$
FORM 910: TOP 910,2*Marge_y: LEFT 910,3*Marge_X: WIDTH 910,x_Max-6*Marge_X: HEIGHT 910,y_Max-4*Marge_y: HIDE 910 FONT_SIZE 910,10 LIST 911: PARENT 911,910: WIDTH 911,WIDTH(910)-16: HEIGHT 911,HEIGHT(910)-80 k% = INSTR(regle$, rc$) WHILE k% > 0 ITEM_ADD 911, LEFT$(regle$, k%-1): regle$ = MID$(regle$, k%+1, 9000) k% = INSTR(regle$, rc$) END_WHILE BUTTON 912: PARENT 912,910: TOP 912,HEIGHT(910)-70: LEFT 912,280: CAPTION 912,"OK" ON_CLICK 912, Fregle
' INITIALISATION DES PIONS SUR LE DAMIER ' PIONS DE L'AI case% = 0 FOR j% = 0 TO 3 FOR k% = 0 TO 9 IF case% = 0 THEN case% = 1 : ELSE : damier%(j%,k%)= 2 : case% = 0 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j% ' PIONS DU JOUEUR case% = 0 FOR j% = 6 TO 9 FOR k% = 0 TO 9 IF case% = 0 THEN case% = 1 : ELSE : damier%(j%,k%)= 1 : case% = 0 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j%
tour=0 : ' Les blancs commencent ' Représentation du Damier PICTURE 2 WIDTH 2, 10 * pas_case : HEIGHT 2, 10 * pas_case TOP 2,Marge_y: LEFT 2, Marge_x: ON_CLICK 2, Clic_Damier GOSUB Dessine_Damier
END
Dernière édition par Jicehel le Dim 20 Mai 2012 - 22:30, édité 2 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 17:57 | |
| Je viens de tester, çà marche bien Je pense que tu as fait le plus gros du travail...
A+
PS: n'oublies pas, (si je me rappelle bien la règle) que le joueur qui vient de prendre un pion garde la main. Ce n'est pas le cas actuellement.
Dernière édition par Jean Claude le Dim 20 Mai 2012 - 18:13, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 18:12 | |
| Pour un jeu à deux, oui, mais pour jouer contre l'ordi, il va falloir que je me creuse les méninges... C'est mon défit pour essayer de faire aussi bien que Bignono (j'ai bien dit essayer ...) au niveau de l'intelligence artificielle (en fait si j'arrive à le faire, j'aimerais même permettre de régler le niveau de l'AI, mais bon, je ne pense pas que j'irais jusque là honnêtement, si déjà j'arrive à faire jouer l'ordi convenablement en respectant les règles, je serais content). Il est quasiment sûr par contre que dans les options, il y aura la possibilité de jouer l'un contre l'autre ou contre l'ordi (c'est aussi pour ça que je code la partie "noire" des déplacements car normalement ce ne serait pas la peine puisque l'ordi par défaut ne jouera que là où c'est possible. Pour jouer, l'ordi devra tester les possibilités de prendre et d'être pris ensuite sur quelques coups. Je pense que Nardo avait parlé d'un système comme ça. Je crois que je devrais m'orienter vers une solution utilisant son arbre pour garder la meilleure possibilité (dans ce cas le réglage de la difficulté se ferait sur la profondeur de l'arbre), mais bon, on verra bien d'ici là. Ce que je suis sûr de faire, c'est que l'ordi joue (au pire aléatoirement ses pions s'il ne doit pas prendre) et gérer les déplacement des joueurs (Un petit texte à droite affichera le nombre de pions blancs, de pions noirs et qui joue) Après pour m'amuser, je mettrais peut être des petit commentaires mais ce sera vraiment sur la fin, quand je jeu tournera, pour agrémenter le jeu. (Peut être même que Bignono me fera des musiques d'ambiances, sinon j'en mettrais, récupérées sur le web) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 18:19 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 18:50 | |
| Salut Jicehel. Tu t’avances bien ; c’est parfait ! J’ai joué et j’ai pu amener mon pion jusqu'à la dernière ligne ! Quant à damer ce pion…. Les couleurs sont maintenant plus gaies et la suite sera certainement bonne. Mais, (hé oui, il y a toujours des mais !!) je fais une petite remarque qui ne t’a surement pas échappé : dans les sous-menus ‘Aide’ et Règle’ les boutons ‘OK’ sont sans effet. Bien sur, ce n’est pas urgent et ça viendra. Bonne continuation ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 19:13 | |
| Merci, j'avais oublié de modifier la ligne 428 Il faut remplacer le 902 par 912 (problème de copier/coller), ce qui donne: ON_CLICK 912, Fregle C'est corrigé dans mon source et je le modifie dans le programme dans le forum | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Jeu de dames Dim 20 Mai 2012 - 23:02 | |
| Bonsoir Jicehel, C'est prometteur! Mais maintenant, il faut maintenir le cap et faire le programme coûte que coûte! Il faut faire comme moi, aller jusqu'au bout quand on commence quelque chose. Et peut-être que je te ferais quelques musiques d'ambiance...! (Je vais te faire un aveu, le Tarot, tel qu'il est maintenant, j'ai mis plus d'un mois à le faire, et crois moi si tu veux, mais certains problèmes m'ont pris une semaine entière pour les résoudre!) Alors, courage, et tu vas y arriver!!! C'est tout le mal que je te souhaite. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: teste le jeu de dame Lun 21 Mai 2012 - 20:04 | |
| je vien de teste ton jeu et il a un ptit <hic> la prise est obligatoire dans regle officiel du jeu et là je peut joue un autre pion alors qu'il doit faire une prise sinon il est tres bien et je te souhaite bon courage pour réalise ton jeu parce que il sera tres complexe a le cree pour joue contre l'ordi salut | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Lun 21 Mai 2012 - 20:19 | |
| oui, je l'ai indiqué dans un message précédent, je testerais bientôt s'il faut prendre, j'ai déjà une idée pour le faire, mais bon, je n'ai pas encore eu le temps de m'en occuper. Ce soir, je vais essayer d'optimiser un peu le code pour le simplifier avant de continuer et coder le déplacement des dames, j'ai déjà mon idée aussi pour le faire. Après, je m'attaque au test pour savoir s'il faut prendre (pour commencer, je ferais la méthode 'bourrin' du test de toutes les cases, tu verras bientôt. Mais bon, c'est un programme vivant, il sera améliorable / et amélioré au fil du temps.. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de dames Lun 21 Mai 2012 - 23:52 | |
| Salut Jicehel. Du courage ! Je sais que tu en as, mais c’est toujours réconfortant d’être encouragé ! A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Mar 22 Mai 2012 - 2:16 | |
| Merci Papydall, Bon, j'ai un peu joué ce soir, mais j'ai codé le déplacement des dames / refait la routine de déplacement plus propre. Le programme ne permet pas encore de gérer l'obligation de prendre ni la possibilité de prendre plusieurs pions pour les dames sont séparés par plusieurs cases, je m'y attellerais demain, mais bon, les dames se font bougent et prennent (la rafle n'ayant pas était modifiée fonctionne comme pour les pions pour le moment) - Code:
-
REM Jeu de dames par Jean-Charles REM V0.3 du 23/05/2011 REM Programmation en cours - Selection des pièces - mouvements de base terminés REM Gestion du couronnement - Gestion du comptage des pièces et des tours
LABEL Init: GOTO Init
Aide: SHOW 900 RETURN
Faide: HIDE 900 RETURN
Regle: SHOW 910 RETURN
Fregle: HIDE 910 RETURN
Quitter: TERMINATE RETURN
Dessine_Damier: 2D_TARGET_IS 2 2D_PEN_COLOR 40,40,40: 2D_RECTANGLE 0,0,WIDTH(2),HEIGHT(2) case% = 0 FOR j% = 0 TO 9 FOR k% = 0 TO 9 IF case% = 0 2D_FILL_COLOR CDR,CDV,CDB case% = 1 ELSE 2D_FILL_COLOR CCR,CCV,CCB case% = 0 END_IF 2D_RECTANGLE k%*pas_case,j%*pas_case,(k%+1)*pas_case,(j%+1)*pas_case IF damier%(j%,k%) > 0 THEN GOSUB Dessine_piece 2D_PEN_COLOR 40,40,40 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j% RETURN
Dessine_piece: SELECT damier%(j%,k%) CASE 0: ' NORMALEMENT ON NE LE FAIT JAMAIS CASE 1 ' PION BLANC 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 CASE 2 ' PION NOIR 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 CASE 9 ' DAME BLANCHE 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case-3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%-6,r% - 7 : 2D_PEN_WIDTH 3 CASE 8 ' DAME NOIRE 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%,r% - 7 : 2D_PEN_WIDTH 3 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE k%*pas_case+r%,j%*pas_case-3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE k%*pas_case+r%,j%*pas_case+r%-6,r% - 7 : 2D_PEN_WIDTH 3 END_SELECT RETURN
Clic_Damier: OFF_CLICK 2 Sposx = INT(MOUSE_X_POSITION(2)/pas_case) Sposy = INT(MOUSE_Y_POSITION(2)/pas_case) Clic_Damier3: IF tour=0 ' Tour des blancs IF damier%(Sposy,Sposx) = 1 OR damier%(Sposy,Sposx) = 9 2D_PEN_COLOR 255,0,0 : 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Sposy : k%= Sposx : GOSUB Dessine_piece ON_CLICK 2, Clic2_Damier_blancs ELSE ON_CLICK 2, Clic_Damier END_IF ELSE ' Tour des noirs IF damier%(Sposy,Sposx) = 2 OR damier%(Sposy,Sposx) = 8 2D_PEN_COLOR 255,0,0 : 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Sposy : k%= Sposx : GOSUB Dessine_piece ON_CLICK 2, Clic2_Damier_noirs ELSE ON_CLICK 2, Clic_Damier END_IF END_IF RETURN
Clic2_Damier_noirs: Nposx = INT(MOUSE_X_POSITION(2)/pas_case) : Nposy = INT(MOUSE_Y_POSITION(2)/pas_case) IF NposX <> SposX OR NposY <> SposY OFF_CLICK 2 Delta=abs(Sposx - Nposx):PeutPrendre=0:i%=0:Cpt=0:j%=(NposX - SposX)/Delta : k%=(NposY - SposY)/Delta IF damier%(Nposy,Nposx) = 0 THEN i%=1 IF i%=1 IF NposY > SposY IF (NposY - Delta) = SposY THEN i%=2 ELSE IF (NposY + Delta) = SposY THEN i%=2 END_IF END_IF IF Delta = 1 AND SposY < NposY AND i%=2 PeutPrendre=1 ELSE IF Delta = 2 AND i%=2 IF Damier%(SposY+k%,SposX+j%)=1 OR Damier%(SposY+k%,SposX+j%)=9 THEN PeutPrendre=1:Cpt=1:PionX=SposX+j%: PionY=SposY+k% ELSE IF Damier%(SposY,SposX)=8 AND i%=2 PeutPrendre=1 FOR i% = 1 TO Delta IF Damier%(SposY+(k%*i%),SposX+(j%*i%))=1 OR Damier%(SposY+(k%*i%),SposX+(j%*i%))=9 IF Cpt=0 Cpt=1:PionX=SposX+(j%*i%): PionY=SposY+(k%*i%) ELSE PeutPrendre=0 : i%=Delta END_IF ELSE IF Damier%(SposY+(k%*i%),SposX+(j%*i%))=2 OR Damier%(SposY+(k%*i%),SposX+(j%*i%))=8 THEN PeutPrendre=0 : i%=Delta END_IF NEXT i% END_IF END_IF END_IF IF PeutPrendre=1 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case ' On déplace le pion normalement, à ajouter: tester si il y a un pion à prendre j%=Nposy : k%= Nposx : damier%(j%,k%) = damier%(Sposy,Sposx) : damier%(Sposy,Sposx)=0 : GOSUB Dessine_piece IF Cpt=0 2D_TARGET_IS 0 : 2D_PEN_COLOR 180,100,60 : 2D_FILL_COLOR 180,100,60 : 2D_CIRCLE 11*pas_case+r%+5*Marge_X,0.5*pas_case+r%,7 tour = 0 : 2D_PEN_COLOR 30,100,30 : 2D_FILL_COLOR 60,150,60 : 2D_CIRCLE 10*pas_case+r%+Marge_X,0.5*pas_case+r%,7 : 2D_TARGET_IS 2 ON_CLICK 2, Clic_Damier ELSE IF Cpt=1 damier%(PionY,PionX)=0 : Nb_blancs = Nb_blancs - 1 : CAPTION 40,Nb_blancs 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE (PionX)*pas_case,(PionY)*pas_case,(PionX+1)*pas_case,(PionY+1)*pas_case GOSUB Test_Rafle END_IF END_IF ELSE IF damier%(Nposy,Nposx) = 2 or damier%(Nposy,Nposx) = 8 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=SposY:k%=SposX: GOSUB Dessine_piece Sposx=Nposx : Sposy=Nposy : Goto Clic_Damier3 ELSE ON_CLICK 2,Clic2_Damier_noirs END_IF END_IF IF tour=0 AND Nposy=9 THEN IF damier%(Nposy,Nposx)=2 THEN j%=Nposy : k%= Nposx : damier%(j%,k%)=8 : GOSUB Dessine_piece END_IF RETURN
Clic2_Damier_blancs: Nposx = INT(MOUSE_X_POSITION(2)/pas_case) : Nposy = INT(MOUSE_Y_POSITION(2)/pas_case) IF NposX <> SposX OR NposY <> SposY OFF_CLICK 2 Delta=abs(Sposx - Nposx):PeutPrendre=0:i%=0:Cpt=0:j%=(NposX - SposX)/Delta : k%=(NposY - SposY)/Delta IF damier%(Nposy,Nposx) = 0 THEN i%=1 IF i%=1 IF NposY > SposY IF (NposY - Delta) = SposY THEN i%=2 ELSE IF (NposY + Delta) = SposY THEN i%=2 END_IF END_IF IF Delta = 1 AND SposY > NposY AND i%=2 PeutPrendre=1 ELSE IF Delta = 2 AND i%=2 IF Damier%(SposY+k%,SposX+j%)=2 OR Damier%(SposY+k%,SposX+j%)=8 THEN PeutPrendre=1:Cpt=1:PionX=SposX+j%: PionY=SposY+k% ELSE IF Damier%(SposY,SposX)=9 AND i%=2 PeutPrendre=1 FOR i% = 1 TO Delta IF Damier%(SposY+(k%*i%),SposX+(j%*i%))=2 OR Damier%(SposY+(k%*i%),SposX+(j%*i%))=8 IF Cpt=0 Cpt=1:PionX=SposX+(j%*i%): PionY=SposY+(k%*i%) ELSE PeutPrendre=0 : i%=Delta END_IF ELSE IF Damier%(SposY+(k%*i%),SposX+(j%*i%))=1 OR Damier%(SposY+(k%*i%),SposX+(j%*i%))=9 THEN PeutPrendre=0 : i%=Delta END_IF NEXT i% END_IF END_IF END_IF IF PeutPrendre=1 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case ' On déplace le pion normalement, à ajouter: tester si il y a un pion à prendre j%=Nposy : k%= Nposx : damier%(j%,k%) = damier%(Sposy,Sposx) : damier%(Sposy,Sposx)=0 : GOSUB Dessine_piece IF Cpt=0 2D_TARGET_IS 0 : 2D_PEN_COLOR 180,100,60 : 2D_FILL_COLOR 180,100,60 : 2D_CIRCLE 10*pas_case+r%+Marge_X,0.5*pas_case+r%,7 tour = 1 : 2D_PEN_COLOR 30,100,30 : 2D_FILL_COLOR 60,150,60 : 2D_CIRCLE 11*pas_case+r%+5*Marge_X,0.5*pas_case+r%,7 : 2D_TARGET_IS 2 ON_CLICK 2, Clic_Damier ELSE IF Cpt=1 damier%(PionY,PionX)=0 : Nb_Noirs = Nb_Noirs - 1 : CAPTION 41,Nb_noirs 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE (PionX)*pas_case,(PionY)*pas_case,(PionX+1)*pas_case,(PionY+1)*pas_case GOSUB Test_Rafle END_IF END_IF ELSE IF damier%(Nposy,Nposx) = 1 or damier%(Nposy,Nposx) = 9 2D_PEN_COLOR 40,40,40: 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=SposY:k%=SposX: GOSUB Dessine_piece Sposx=Nposx : Sposy=Nposy : Goto Clic_Damier3 ELSE ON_CLICK 2,Clic2_Damier_blancs END_IF END_IF IF tour=1 AND Nposy=0 THEN IF damier%(Nposy,Nposx)=1 THEN j%=Nposy : k%= Nposx : damier%(j%,k%)=9 : GOSUB Dessine_piece END_IF RETURN
Test_Rafle: PeutPrendre = 0 IF tour=0 j%=2 : k%=8 ELSE j%=1 : k%=9 END_IF IF Nposx < 8 IF Nposy < 8 IF damier%(Nposy+1,Nposx+1)=j% OR damier%(Nposy+1,Nposx+1)=k% IF damier%(Nposy+2,Nposx+2)= 0 PeutPrendre = 1 END_IF END_IF END_IF IF Nposy > 1 IF damier%(Nposy-1,Nposx+1)=j% OR damier%(Nposy-1,Nposx+1)=k% IF damier%(Nposy-2,Nposx+2)= 0 PeutPrendre = 1 END_IF END_IF END_IF END_IF IF Nposx > 1 IF Nposy < 8 IF damier%(Nposy+1,Nposx-1)=j% OR damier%(Nposy+1,Nposx-1)=k% IF damier%(Nposy+2,Nposx-2)= 0 PeutPrendre = 1 END_IF END_IF END_IF IF Nposy > 1 IF damier%(Nposy-1,Nposx-1)=j% OR damier%(Nposy-1,Nposx-1)=k% IF damier%(Nposy-2,Nposx-2)= 0 PeutPrendre = 1 END_IF END_IF END_IF END_IF IF PeutPrendre = 0 IF tour=1 tour = 0 2D_TARGET_IS 0 2D_PEN_COLOR 180,100,60 : 2D_FILL_COLOR 180,100,60 : 2D_CIRCLE 11*pas_case+r%+5*Marge_X,0.5*pas_case+r%,7 2D_PEN_COLOR 30, 100,30 : 2D_FILL_COLOR 60,150,60 : 2D_CIRCLE 10*pas_case+r%+Marge_X,0.5*pas_case+r%,7 2D_TARGET_IS 2 ELSE tour = 1 2D_TARGET_IS 0 2D_PEN_COLOR 180,100,60 : 2D_FILL_COLOR 180,100,60 : 2D_CIRCLE 10*pas_case+r% + Marge_X,0.5*pas_case+r%,7 2D_PEN_COLOR 30,100,30 : 2D_FILL_COLOR 60,150,60 : 2D_CIRCLE 11*pas_case+r%+5*Marge_X,0.5*pas_case+r%,7 2D_TARGET_IS 2 END_IF ON_CLICK 2, Clic_Damier ELSE Sposx=Nposx : Sposy=Nposy 2D_PEN_COLOR 255,0,0 : 2D_FILL_COLOR CCR,CCV,CCB 2D_RECTANGLE Sposx*pas_case,Sposy*pas_case,(Sposx+1)*pas_case,(Sposy+1)*pas_case j%=Sposy : k%= Sposx : GOSUB Dessine_piece IF tour=1 THEN ON_CLICK 2, Clic2_Damier_noirs : ELSE : ON_CLICK 2, Clic2_Damier_blancs END_IF RETURN
Init: COLOR 0,180,100,60 LABEL Aide,Regle,Faide, Fregle, Quitter, Clic_Damier, Clic2_Damier_blancs, Clic_Damier3, Clic2_Damier_noirs, Dessine_Damier, Dessine_piece LABEL Test_Rafle, Relance DIM x_Max, y_Max : x_Max=1000 : y_max=700 DIM Marge_x, Marge_y : Marge_x = 20 : Marge_y = 30 DIM hlp$,regle$,i%,j%,k%,case%,tour,PeutPrendre, Delta, Cpt, PionX, PionY DIM damier%(10,10) : ' 0: Case vide, 1: Pion du joueur, 9: Dame du joueur, 2: Pion de l'Ai, 8: Dame de l'Ai DIM Sposx, Sposy : ' Position du pion sélectionné DIM Nposx, Nposy : ' Position de la destination sélectionné DIM pas_case : if (y_Max - 2* Marge_y) > (x_Max - 2 * Marge_x) Then pas_case= (x_Max - 2 * Marge_x) / 11 : else: pas_case= (y_Max - 2 * Marge_y) / 11 DIM rc$ : rc$=CHR$(10) DIM Nb_Noirs,Nb_blancs : ' Nombre de pions noirs et blancs DIM r%: r% = pas_case/2 -1 DIM CBR,CBV,CBB, CNR, CNV, CNB CBR = 205 : CBV = 205: CBB = 205 : ' Couleurs des pions blancs CNR = 55 : CNV = 55 : CNB = 55 : ' Couleurs des pions noirs DIM CDR,CDV,CDB,CCR,CCV,CCB CDR = 255 : CDV = 255: CDB = 255 : ' Couleurs des cases 'blanches' CCR = 30 : CCV = 30 : CCB = 180 : ' Couleurs des cases 'noires' CAPTION 0, "Jeu de dames en Basic Panoramic par Jean-Charles" WIDTH 0,x_Max : HEIGHT 0, y_max
' Création de l'image support pour le damier PICTURE 2 : WIDTH 2, 10 * pas_case : HEIGHT 2, 10 * pas_case : TOP 2,Marge_y: LEFT 2, Marge_x
' Menu Principal MAIN_MENU 1 : REM On reserve les objets 1 à 30 pour le menu SUB_MENU 11: PARENT 11, 1: CAPTION 11, "Fichier" SUB_MENU 16: PARENT 16, 1: CAPTION 16, "Aide" SUB_MENU 17: PARENT 17, 1: CAPTION 17, "Règle" ON_CLICK 16, Aide : ON_CLICK 17, Regle
' Sous menu Fichier SUB_MENU 25: CAPTION 25,"Relancer partie" : PARENT 25, 11 SUB_MENU 26: CAPTION 26,"Quitter" : PARENT 26, 11 ON_CLICK 25, Relance :ON_CLICK 26, Quitter
' Préparation de l'aide hlp$=CHR$(9)+CHR$(9)+CHR$(9)+" - AIDE DU JEU DE DAMES -"+rc$ hlp$=hlp$+CHR$(9)+CHR$(9)+CHR$(9)+" ==============================="+rc$+rc$ hlp$=hlp$+"A remplir"+rc$ FORM 900: TOP 900,2*Marge_y: LEFT 900,3*Marge_X: WIDTH 900,x_Max-6*Marge_X: HEIGHT 900,y_Max-4*Marge_y: HIDE 900 FONT_SIZE 900,10 LIST 901: PARENT 901,900: WIDTH 901,WIDTH(900)-16: HEIGHT 901,HEIGHT(900)-80 k% = INSTR(hlp$, rc$) WHILE k% > 0 ITEM_ADD 901, LEFT$(hlp$, k%-1): hlp$ = MID$(hlp$, k%+1, 9000) k% = INSTR(hlp$, rc$) END_WHILE BUTTON 902: PARENT 902,900: TOP 902,HEIGHT(900)-70: LEFT 902,280: CAPTION 902,"OK" ON_CLICK 902, Faide
regle$=CHR$(9)+CHR$(9)+CHR$(9)+" - REGLES DU JEU DE DAMES -"+rc$ regle$=regle$+CHR$(9)+CHR$(9)+CHR$(9)+" ==============================="+rc$+rc$ rem regle$=regle$+""+rc$ : ' Modèle d'une ligne vide regle$=regle$+"Le jeu de dames international se joue sur un damier carré divisé en 100 cases égales, alternativement claires et foncées."+rc$ regle$=regle$+"Le jeu se joue sur les cases foncées du damier. Il y a donc 50 cases actives."+rc$ regle$=regle$+"La plus longue diagonale, joignant deux coins du damier et comprenant 10 cases foncées, se dénomme la grande diagonale."+rc$ regle$=regle$+"Le damier doit être placé de sorte que la première case de gauche, pour chaque joueur, soit une case foncée."+rc$ regle$=regle$+"Le jeu de dames international se joue avec 20 pions blancs (clairs) et 20 pions noirs (foncés)"+rc$ regle$=regle$+"Avant de débuter une partie, les 20 pions noirs et les 20 pions blancs sont disposés sur les 4 premières rangées de chaque joueur."+rc$ regle$=regle$+"Il faut manger tous les pions de l'autre en passant par dessus avec l'un de vos pions."+rc$ regle$=regle$+"Les déplacements autoriser : seulement d'une case en avant, en diagonale si celle ci est libre."+rc$ regle$=regle$+"Le premier coup est toujours joué par les blancs. Les adversaires jouent un coup chacun à tour de rôle avec leurs pièces."+rc$ regle$=regle$+"Pour cela, on couronne le pion en plaçant dessus un deuxième pion de la même couleur."+rc$ regle$=regle$+"Il est interdit de reculer en dehors des prises"+rc$ regle$=regle$+"Si un pion avance jusqu'à la dernière rangée, il devient une Dame."+rc$ regle$=regle$+"La dame peut se déplacer de plusieurs cases en avant ou en arrière si ces cases sont vides."+rc$ regle$=regle$+"La prise des pièces adverse est obligatoire et s’effectue aussi bien en avant qu’en arrière."+rc$ regle$=regle$+"Lorsqu’un pion se trouve en présence, diagonalement, d’une pièce adverse derrière laquelle se trouve une case libre, il doit"+rc$ regle$=regle$+"obligatoirement sauter par-dessus cette pièce et occuper la case libre. Cette pièce adverse est alors enlevée du damier."+rc$ regle$=regle$+"Cette opération complète est la prise par un pion."+rc$ regle$=regle$+"Lorsqu’au cours d’une prise par un pion, celui-ci se trouve à nouveau en présence, diagonalement, d’une pièce adverse derrière "+rc$ regle$=regle$+"laquelle se trouve une case libre, il doit obligatoirement sauter par-dessus cette seconde pièce, voire d’une troisième et"+rc$ regle$=regle$+"ainsi de suite, et occuper la case libre se trouvant derrière la dernière pièce capturée. Les pièces adverses ainsi capturées"+rc$ regle$=regle$+"sont ensuite enlevées du damier dans l’ordre de la prise."+rc$ regle$=regle$+"Cette opération complète est une rafle par un pion."+rc$ regle$=regle$+"Lorsqu’au cours d’une prise par une dame, celle-ci se trouve à nouveau en présence, sur une même diagonale, d’une pièce adverse"+rc$ regle$=regle$+"derrière laquelle se trouve une ou plusieurs cases libres, elle doit obligatoirement sauter par-dessus cette seconde pièce, voire"+rc$ regle$=regle$+"d’une troisième et ainsi de suite, et occuper au choix une case libre se trouvant derrière et sur la même diagonale que la dernière"+rc$ regle$=regle$+"pièce capturée. Les pièces adverses ainsi capturées sont ensuite enlevées du damier dans l’ordre de la prise."+rc$ regle$=regle$+"Cette opération complète est une rafle par une dame."+rc$ regle$=regle$+"Au cours d’une rafle, il est interdit de passer au-dessus de ses propres pièces."+rc$ regle$=regle$+"Au cours d’une rafle, il est permis de passer plusieurs fois sur une même case libre mais il est interdit de passer plus d’une fois "+rc$ regle$=regle$+"au-dessus d’une même pièce adverse."+rc$ regle$=regle$+"Une rafle doit être clairement indiquée, pièce par pièce, en posant la pièce preneuse sur la case de saut, le temps d’y passer, et"+rc$ regle$=regle$+"en déposant cette pièce sur la case terminale."+rc$ regle$=regle$+"Les pièces prises ne peuvent être enlevées du damier qu’à l’issue de l’exécution complète de la rafle."+rc$ regle$=regle$+"La prise du plus grand nombre de pièces est prioritaire, donc obligatoire. Dans ce cas, une dame compte pour une pièce, tout comme un pion."+rc$ regle$=regle$+"Elle ne confère nulle priorité et n’impose aucune obligation."+rc$ regle$=regle$+"Si les pièces à prendre sont en nombre égal dans deux ou plusieurs possibilités de prise ou de rafle, le joueur est libre de choisir "+rc$ regle$=regle$+"une de ces possibilités, soit avec un pion, soit avec une dame."+rc$ regle$=regle$+"Un pion qui au cours d’une rafle, ne fait que passer sur une des 5 cases de la rangée de base adverse reste un pion lorsque la rafle est terminée."+rc$
FORM 910: TOP 910,2*Marge_y: LEFT 910,3*Marge_X: WIDTH 910,x_Max-6*Marge_X: HEIGHT 910,y_Max-4*Marge_y: HIDE 910 FONT_SIZE 910,10 LIST 911: PARENT 911,910: WIDTH 911,WIDTH(910)-16: HEIGHT 911,HEIGHT(910)-80 k% = INSTR(regle$, rc$) WHILE k% > 0 ITEM_ADD 911, LEFT$(regle$, k%-1): regle$ = MID$(regle$, k%+1, 9000) k% = INSTR(regle$, rc$) END_WHILE BUTTON 912: PARENT 912,910: TOP 912,HEIGHT(910)-70: LEFT 912,280: CAPTION 912,"OK" ON_CLICK 912, Fregle
' Creation des compteurs de pions ALPHA 40 : LEFT 40,3*Marge_X + 11* pas_case : TOP 40,pas_case - 15: WIDTH 40, 40 : FONT_SIZE 40,20 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_PEN_WIDTH 3 : 2D_CIRCLE 11*pas_case+r%,0.5*pas_case+3+r%,r% - 7 2D_PEN_COLOR CBR - 60,CBV - 60,CBB - 60 : 2D_FILL_COLOR CBR,CBV,CBB : 2D_CIRCLE 11*pas_case+r%,0.5*pas_case+r%,r% - 7 ALPHA 41 : LEFT 41,7*Marge_X + 12* pas_case : TOP 41,pas_case - 15: WIDTH 41, 40 : FONT_SIZE 41,20 2D_PEN_COLOR 20, 20, 20 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_PEN_WIDTH 3 : 2D_CIRCLE 12*pas_case+r%+4*Marge_X,0.5*pas_case+3+r%,r% - 7 2D_PEN_COLOR CNR - 30,CNV - 30,CNB - 30 : 2D_FILL_COLOR CNR,CNV,CNB : 2D_CIRCLE 12*pas_case+r%+4*Marge_X,0.5*pas_case+r%,r% - 7
Relance: ' INITIALISATION DES PIONS SUR LE DAMIER ' PIONS DE L'AI case% = 0 FOR j% = 0 TO 3 FOR k% = 0 TO 9 IF case% = 0 THEN case% = 1 : ELSE : damier%(j%,k%)= 2 : case% = 0 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j% ' CASES VIDES FOR j% = 4 TO 5 FOR k% = 0 TO 9 damier%(j%,k%)= 0 NEXT k% NEXT j% ' PIONS DU JOUEUR case% = 0 FOR j% = 6 TO 9 FOR k% = 0 TO 9 IF case% = 0 THEN case% = 1 : ELSE : damier%(j%,k%)= 1 : case% = 0 NEXT k% IF case%=0 THEN case%=1 : ELSE : case%=0 NEXT j%
Nb_Noirs = 20 : Nb_blancs = 20 :CAPTION 40,Nb_blancs : CAPTION 41,Nb_noirs
tour=0 : ' Les blancs commencent 2D_TARGET_IS 0 : 2D_PEN_COLOR 30,100,30 : 2D_FILL_COLOR 60,150,60 : 2D_CIRCLE 10*pas_case+r%+Marge_X,0.5*pas_case+r%,7 ' Représentation du Damier
GOSUB Dessine_Damier ON_CLICK 2, Clic_Damier
END
Dernière édition par Jicehel le Mer 23 Mai 2012 - 7:20, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de dames Mar 22 Mai 2012 - 7:15 | |
| On s'approche du but Une suggestion: pourrais-tu intégrer 2 voyants (noir et blanc) qui serait entourée de rouge (comme sur la piste) pour indiquer quel joueur a la main. Bon courage. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Mar 22 Mai 2012 - 7:26 | |
| Woui, c'est prévu en effet. Je prévoyais de finir les déplacements avant, mais sinon, je voudrais avoir les scores de pions noirs et de pions blancs avec un indicateurs devant pour dire à qui c'est de jouer. En dessous, je mettrais une zone de texte pour dire ce qui se passe, par exemple que le joueur doit prendre et plus tard, des petits messages quand l'ordi ou le joueur fait une rafle ou a une dame... Mais tu as raisons, les score et l'indicateur de tour devrait aller vite à coder, je m'en occuperais ce soir | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Jeu de dames Mar 22 Mai 2012 - 7:36 | |
| Bonjour Jicehel, Pas mal du tout pour le moment. C'est jouable! Il faut aussi que tu penses à coder l'éventualité où tous les pions sont bloqués et ne peuvent plus bouger! Ça arrive de bloquer une partie à cause de cela. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Mar 22 Mai 2012 - 8:30 | |
| Woui, je n'ai pas encore codé les conditions de victoires ou de nuls pour le moment ... Ca viendra, mais bon pas tout de suite ... mais il faudra en effet que je code les différents cas (ou du moins les plus courants et l'abandon) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Mer 23 Mai 2012 - 7:23 | |
| J'ai modifié le code du code source d'hier pour ajouter l'affichage du tour et du nombre de pièces. J'ai voulu programmé un peu hier soir, mais je me suis endormi ... j'avais mon idée pour faire le teste de rafle pour les dames, mais ce sera sans doute pour ce soir .... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Jeu de dames Mer 23 Mai 2012 - 8:08 | |
| Pour le moment, çà marche bien. Pour le comptage, crois-tu qu'il serait bon de compter séparément les pions et les dames Mais avant tout repose toi un peu , on n'est pas payé au rendement A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu de dames Mer 23 Mai 2012 - 10:18 | |
| Pour le moment Jean-Claude, ce n'est pas prévu (le comptage va également me servir pour la fin de partie) Là, si je joue un peu moins ce soir, je vais programmer le test pour savoir si on peut jouer et si on doit prendre (c'est simple à coder) La nouvelle partie est codée aussi pour le moment en passant par Fichier - abandon Pour plus tard Après, je mettrais les conditions de victoire simples => impossible de jouer, pion=0, abandon du joueur Après je rajouterais un menu avec un ou deux joueurs Pour faire jouer l'ordi, je passerais par des listes virtuelles et un damier virtuel pour calculer là où l'on doit prendre le plus (ça servira aussi pour calculer le pion qu'il est autorisé de jouer). Pour faire simple, si l'on ne doit pas prendre, je ferais une liste de là où l'on peut jouer un pion et un tirage aléatoire du pion à jouer dedans après évaluation sur un coup du nombre de pion pris avant déplacement, du nombre après déplacement et si après déplacement on peut prendre. C'est cette partie qui sera à améliorer plus tard, mais ça je verrais si je me lance dedans, ce n'est pas sûr pour le moment. Idées que je pense faire par contre: Une variable texte qui reprenne l'historique des coups permettant de rejouer la partie coup par coup et la possibilité de reprendre ou de revenir en arrière par le menu et de sauvegarder une partie avec son historique (donc aussi la possibilité de la charger). L'idée aussi serait d'avoir des parties (scénarios), donc un éditeur de parties où l'on peut déplacer les pions et les changer de nature (pion <-> dames) et choisir le tour de jeu.
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Jeu de dames Mer 23 Mai 2012 - 12:37 | |
| Salut Jicehel. Bravo. C’est super. Bonne continuation ! | |
| | | Contenu sponsorisé
| Sujet: Re: Jeu de dames | |
| |
| | | | Jeu de dames | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |