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 |
|
|
| Stratego collaboratif | |
|
+5Yannick JL35 silverman Jean Claude Jicehel 9 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Stratego collaboratif Dim 6 Mar 2016 - 23:50 | |
| Ne n'étais pas tombé sur ce cas. Mais voici la solution, je pense: - Code:
-
click_plateau: OFF_CLICK I_E_affiche% ' CAPTION 0,"CASE : " + STR$(INT(MOUSE_X_POSITION(I_E_affiche%)/81) + 1)+ " : " + STR$(10 - INT(MOUSE_Y_POSITION(I_E_affiche%)/81)) c% = INT(MOUSE_X_POSITION(I_E_affiche%)/81) : l% = INT(MOUSE_Y_POSITION(I_E_affiche%)/81) tmp% = Pieces(l%,c%)
rem ======================== Klaus Début ======================================= AppliquerRegles(Sel_Y%,Sel_X%,l%,c%) if SelectionnerSujet%=1 : ' on sélectionne le sujet si nécessaire IF Sel_X% >= 0 THEN Image_Recopy() : ' Si on avait déjà sélectionné un pion, on efface la sélection actuelle Sel_X% = c% : Sel_Y% = l% : ' On enregistre la position de la nouvelle sélection 2D_PEN_COLOR 200,0,0 : encadre(l%,c%) : ' On affiche la case sélectionnée en l'encadrant ON_CLICK I_E_affiche%,click_plateau return end_if if (SupprimerCible%+SupprimerSujet%)=2 EliminerPersonnage(Sel_Y%,Sel_X%) EliminerPersonnage(l%,c%) message "Aïe - Vous avez supprimé la cible, mais vous avez sacrifié votre personnage !" else if SupprimerSujet%=1 EliminerPersonnage(Sel_Y%,Sel_X%) Sel_X% = -1 : ' <<<========= ajout de cette ligne ! message "Dommage... Vous avez perdu votre personnage !" end_if if SupprimerCible%=1 Deplace(Sel_Y%,Sel_X%,l%,c%) : ' on déplace le sujet si nécessaire NePasBouger% = 0 message "Bravo ! Vous avez éliminé votre cible !" end_if end_if if FinDePartieVictoire%=1 Sel_X% = -1 message "Victoire ! Vous avez gagné !" ON_CLICK I_E_affiche%,click_plateau return end_if if NePasBouger%=0 then Deplace(Sel_Y%,Sel_X%,l%,c%) : ' on déplace le sujet si nécessaire if GarderLaMain%=0 IF Tour% = 1 THEN Tour2() : ELSE : Tour1() end_if rem ======================== Klaus Fin =========================================
ON_CLICK I_E_affiche%,click_plateau RETURN
J'ai ajouté une ligne dans cette routine. Je me suis fait rouler par la confusion entre variable globale et variable formelle d'une SUB. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratego collaboratif Lun 7 Mar 2016 - 12:01 | |
| Tu penses bien, tu penses bien. Là ça marche bien et les conditions de fin de partie aussi. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Stratego collaboratif Lun 7 Mar 2016 - 12:56 | |
| J'ai une petite question, concernant l'affichage du tableau. Chez moi, le tableau ne tient pas dans la fenêtre du programme. Il y a deux problèmes: 1. le dernier rang n'est pas affiché complètement, et il y a un ascenseur dans ma fenêtre. 2. le premier rang est tronqué - il manque plus de la moitié en hauteur. Alors que (1) peut être corrigé en utilisant l'ascenseur (gênant, mais pas bloquant), le (2) n'est pas soluble. Voici une capture: | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratego collaboratif Lun 7 Mar 2016 - 13:28 | |
| oui je me doutais que cetains auraient un affichage trop petit (j'ai eu assez le problème sur mon ancien portable) En quelques modifs, tu peux passer sur les cases en 50 Je mets le code pour la version utilisant les pièces en 50 de haut (les images sont dans le dernier zip) - Code:
-
REM ============================================================================ REM JEU DU STRATEGO REM SUR UNE IDEE DE JICEHEL REM OUVERT A LA COLLABORATION DES TOUS LES PANORAMICIENS STRATEGOYENS REM ============================================================================ ' ------------------------- ' * Structure du Stratego * ' -------------------------
LABEL click_plateau, Aide DIM tex$ APPLICATION_TITLE "**** STRATEGO COLLABORATIF *****"
' * Déclaration des variables DIM compt%
' * Déclaration des variables pour les images DIM P_Fond% : ' Numéro du picture où l'on charge l'image de fond (on n'y touche pas) DIM P_E_affiche% : ' Numéro du picture qui sera affiché DIM P_E_preparation% : ' Numéro du picture de travail (masqué) DIM I_copy% : ' Numéro de l'image servant pour les copies DIM P_Tour% : ' Un petit picture pour mettre l'indicateur de tour DIM P_Pieces% : ' Un picture pour afficher les pieces disponibles DIM P_Piece_Sel% : ' Un picture pour placer une piece
' * Déclaration des numéros des picture où l'on va stocker l'image des pions DIM I_Bombe%, I_Capitaine%, I_Colonel%, I_Drapeau%, I_General%, I_Lieutenant% DIM I_Major%, I_Marechal%, I_Demineur%, I_Eclaireur%, I_Sergent%, I_Espion% DIM I_Bleu%, I_Rouge%
' * Déclaration des constantes contenant les dimensions de l'image de fond DIM Largeur_Fond%,Hauteur_Fond% : Largeur_Fond% = 511 : Hauteur_Fond% = 511
' * Déclaration du nombre de pièces du joueur 1, du joueur 2 et de chacun des types de pièces DIM Nb_piecesJ1%, Nb_piecesJ2% DIM Nb_Bombe%, Nb_Capitaine%, Nb_Colonel%, Nb_Drapeau%, Nb_General%, Nb_Lieutenant% DIM Nb_Major%, Nb_Marechal%, Nb_Demineur%, Nb_Eclaireur%, Nb_Sergent%, Nb_Espion%
' * Déclaration de l'ordre des pièces (hors règles spéciale) DIM O_Bombe%, O_Capitaine%, O_Colonel%, O_Drapeau%, O_General%, O_Lieutenant% DIM O_Major%, O_Marechal%, O_Demineur%, O_Eclaireur%, O_Sergent%, O_Espion%
' * Déclaration des sons associés aux attaques des pièces gagnantes DIM S_Bombe%, S_Capitaine%, S_Colonel%, S_Drapeau%, S_General%, S_Lieutenant% DIM S_Major%, S_Marechal%, S_Demineur%, S_Eclaireur%, S_Sergent%, S_Espion%
' * Déclaration des autres sons DIM S_OK1%,S_OK2%, S_OK3%, S_OK4%,S_Erreur%,S_Clic1%,S_Clic2%,S_Clic3%,S_Clic4%
' * Déclaration des matrices de terrain DIM Franchissable(9,9), Pieces(9,9) ' * Les pions du joueur 1 ont des valeurs de 0 à 11. Ceux du joueur 2 de 20 à 31
' * Déclaration des compteurs et autres variables du jeu DIM Ligne%, Colonne%, tmp%,tmp2%, c%, l% DIM Tour% : ' Indique si c'est au joueur 1 ou au joueur 2 de jouer DIM Sel_X%, Sel_Y% : ' Coordonnées de la case sélectionnée (négative si pas de case sélectionnée) DIM rep$,repimage$, repson$, repmusique$ : ' Différents répertoires d'objets DIM Hcase%,Wcase%,Lcase% : Hcase%=50 : Wcase%=50 : Lcase% = 37 DIM Cache_piece%
' * Création du menu (à développer par la suite) MAIN_MENU 10 SUB_MENU 11 : PARENT 11,10 : CAPTION 11,"Fichier"
REM =================== Papydall (Début) ======================================= SUB_MENU 91 : PARENT 91,10 : CAPTION 91,"Aide" SUB_MENU 92 : PARENT 92,91 : CAPTION 92,"Stratégo" : ON_CLICK 92,Aide SUB_MENU 93 : PARENT 93,91 : CAPTION 93,"Dispositions des pièces" : ON_CLICK 93,Aide SUB_MENU 94 : PARENT 94,91 : CAPTION 94,"Règles du jeu" : ON_CLICK 94,Aide SUB_MENU 95 : PARENT 95,91 : CAPTION 95,"Tactique" : ON_CLICK 95,Aide REM =================== Papydall (Fin) =========================================
' * Initialisation des chemins rep$=DIR_CURRENT$+"\" : repimage$=rep$+"img_50\" : repson$=rep$+"snd\"
' * Règles des pièces ' La bombe ne peut pas se déplacer mais détruit toutes les pièces sauf le démineur ' Le Maréchal peut être capturé (détruit) par l'espion et explose sur les mines ' ' L'ordre de pièce est Bomb, Marechal, General, Colonnel, Major, Capitaine, Lieutenant ' Sergent, Démineur, Espion et Drapeau ' ' Nb pièces: Bombes: 6, Maréchal: 1, Général: 1, Colonel: 2, Major: 3, Capitaine: 4, ' Lieutenant: 4, Sergent: 4, Démineur: 5, Eclaireur: 8, Espion: 1, Drapeau: 1
' Les démineur peuvent déminer (détruire les bombes) ' Les éclaireurs peuvent avancer en ligne droite dégagée (ils ne peuvent pas passer par dessus un pièce) ' L'espion peut détruire le Maréchal uniquement quand c'est l'espion qui attaque le Maréchal ' Le drapeau ne peu pas être déplacé, sa capture met fin à la partie
' * Définition des cases franchissables ou non (On met toutes les cases à 1 et on met après les cases infranchissables à 0) FOR Ligne% = 0 TO 9 FOR Colonne% = 0 TO 9 Franchissable(Ligne%,Colonne%) = 1 Pieces(Ligne%,Colonne%) = -1 NEXT Colonne% NEXT Ligne% Franchissable(4,2) = 0 : Franchissable(4,3) = 0 Franchissable(4,6) = 0 : Franchissable(4,7) = 0 Franchissable(5,2) = 0 : Franchissable(5,3) = 0 Franchissable(5,6) = 0 : Franchissable(5,7) = 0
' * Création et chargement des images
FULL_SPACE 0
compt% = 100 : ' Compteur pour commencer à numéroter les nouveau objets à partir de 100
' * Chargement du fond dans le picture pour le garder en réserve PICTURE compt% : HIDE compt% : HEIGHT compt%,Hauteur_Fond% : WIDTH compt%,Largeur_Fond% TOP compt%, 5000 : P_Fond% = compt% : TOP compt%, -2000 FILE_LOAD compt%,repimage$+"Fond.jpg" : compt% = compt% + 1
' * Créations des autres pictures pour l'écran affiché et l'écran de travail PICTURE compt% : HEIGHT compt%,Hauteur_Fond% : WIDTH compt%,Largeur_Fond% TOP compt%, 5000 : P_E_affiche% = compt% : TOP compt%, (HEIGHT(0)-Hauteur_Fond%)/2 -35 LEFT compt%,(WIDTH(0)-Largeur_Fond%)/2 : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hauteur_Fond% : WIDTH compt%,Largeur_Fond% TOP compt%, 5000 : P_E_preparation% = compt% : compt% = compt% + 1
PICTURE compt% : HEIGHT compt%,30 : WIDTH compt%,30 : TOP compt%,15 : LEFT compt%,15 P_Tour% = compt% : compt% = compt% + 1
' * Création de l'image de travail pour effectuer les copies IMAGE compt% : I_copy% = compt% : compt% = compt% + 1
' * Chargement des sons des attaques gagnantes des pièces SOUND compt% : S_Bombe% = compt% : FILE_LOAD compt%,repson$+"Tir_Bombe.mp3" : compt% = compt% + 1 SOUND compt% : S_Marechal% = compt% : FILE_LOAD compt%,repson$+"Tir_Epee.mp3" : S_General% = compt% S_Major% = compt% : S_Colonel% = compt% : S_Capitaine% = compt% : S_Lieutenant% = compt% : compt% = compt% + 1 SOUND compt% : S_Sergent% = compt% : FILE_LOAD compt%,repson$+"Tir_Mousquet.mp3" : compt% = compt% + 1 SOUND compt% : S_Demineur% = compt% : FILE_LOAD compt%,repson$+"Tir_Demineur.mp3" : compt% = compt% + 1 SOUND compt% : S_Eclaireur% = compt% : FILE_LOAD compt%,repson$+"Tir_Arquebuse.mp3" : compt% = compt% + 1 SOUND compt% : S_Espion% = compt% : FILE_LOAD compt%,repson$+"Tir_Assassin.mp3" : compt% = compt% + 1 SOUND compt% : S_Drapeau% = compt% : FILE_LOAD compt%,repson$+"Tir_Drapeau.mp3" : compt% = compt% + 1
' * Chargeùent des autres sons SOUND compt% : S_OK1% = compt% : FILE_LOAD compt%,repson$+"OK1.mp3" : compt% = compt% + 1 SOUND compt% : S_OK2% = compt% : FILE_LOAD compt%,repson$+"OK3.mp3" : compt% = compt% + 1 SOUND compt% : S_OK3% = compt% : FILE_LOAD compt%,repson$+"OK4.mp3" : compt% = compt% + 1 SOUND compt% : S_OK4% = compt% : FILE_LOAD compt%,repson$+"OK5.mp3" : compt% = compt% + 1 SOUND compt% : S_Erreur% = compt% : FILE_LOAD compt%,repson$+"Bruit_Mauvais_clic.mp3" : compt% = compt% + 1 SOUND compt% : S_Clic1% = compt% : FILE_LOAD compt%,repson$+"Bruit_Clic1.mp3" : compt% = compt% + 1 SOUND compt% : S_Clic2% = compt% : FILE_LOAD compt%,repson$+"Bruit_Clic2.mp3" : compt% = compt% + 1 SOUND compt% : S_Clic3% = compt% : FILE_LOAD compt%,repson$+"Bruit_Clic3.mp3" : compt% = compt% + 1 SOUND compt% : S_Clic4% = compt% : FILE_LOAD compt%,repson$+"Bruit_Clic4.mp3" : compt% = compt% + 1
' * Chargement de toutes les images correspondant aux différents pions
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Bombe% = compt% : O_Bombe% = 11 FILE_LOAD compt%,repimage$+"Bomb.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Marechal% = compt% : O_Marechal% = 10 FILE_LOAD compt%,repimage$+"Marshal.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_General% = compt% : O_General% = 9 FILE_LOAD compt%,"img/General.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Colonel% = compt% :O_Colonel% = 8 FILE_LOAD compt%,repimage$+"Colonel.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Major% = compt% : O_Major% = 7 FILE_LOAD compt%,repimage$+"Major.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Capitaine% = compt% : O_Capitaine% = 6 FILE_LOAD compt%,repimage$+"Captain.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Lieutenant% = compt% : O_Lieutenant% = 5 FILE_LOAD compt%,repimage$+"Lieutenant.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Sergent% = compt% :O_Sergent% = 4 FILE_LOAD compt%,repimage$+"Sergeant.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Demineur% = compt% : O_Demineur% = 3 FILE_LOAD compt%,repimage$+"Miner.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Eclaireur% = compt% : O_Eclaireur% = 2 FILE_LOAD compt%,repimage$+"Scout.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Espion% = compt% : O_Espion% = 1 FILE_LOAD compt%,repimage$+"Spy.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% TOP compt%, 5000 : I_Drapeau% = compt% : O_Drapeau% = 0 FILE_LOAD compt%,repimage$+"Flag.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% : TOP compt%, 5000 I_Bleu% = compt% : FILE_LOAD compt%,repimage$+"Dos_Bleu.jpg" : compt% = compt% + 1
PICTURE compt% : HIDE compt% : HEIGHT compt%,Hcase% : WIDTH compt%,Lcase% : TOP compt%, 5000 I_Rouge% = compt% : FILE_LOAD compt%,repimage$+"Dos_Rouge.jpg" : compt% = compt% + 1
Init() Preparation()
ON_CLICK P_E_affiche%,click_plateau
END
SUB Init() Nb_drapeau% = 1 : Nb_Espion% = 1 : Nb_Eclaireur% = 8 : Nb_Demineur% = 5 Nb_Sergent% = 4 : Nb_Lieutenant% = 4: Nb_Capitaine% = 4 : Nb_Major% = 3 Nb_Colonel% = 2 : Nb_General% = 1 : Nb_Marechal% = 1 : Nb_Bombe% = 6 Nb_piecesJ1% = Nb_drapeau% + Nb_Espion% + Nb_Eclaireur% + Nb_Demineur% + Nb_Sergent% Nb_piecesJ1% = Nb_piecesJ1% + Nb_Lieutenant% + Nb_Capitaine% + Nb_Major% Nb_piecesJ1% = Nb_piecesJ1% + Nb_Colonel% + Nb_General% + Nb_Marechal% + Nb_Bombe% Nb_piecesJ2% = Nb_piecesJ1% Cache_piece% = 0
' * Pour le moment on schint le menu pour tester le mode 2 joueurs avec placement des pièces
IF 1=1 : ' * Changer la condition pour activer cette section et éviter le placement ' des pièces pour faire des tests rapidement
' * 4 pions bleus Pieces(0,3) = O_Drapeau% : Pieces(0,2) = O_Capitaine% Pieces(0,4) = O_Bombe% : Pieces(3,5) = O_Eclaireur%
' * 4 pions rouges Pieces(9,3) = O_Drapeau% + 20 : Pieces(9,2) = O_Eclaireur% + 20 Pieces(9,4) = O_Bombe% + 20 : Pieces(8,4) = O_Lieutenant% + 20
Sel_X% = -1 ELSE : ' Placer des pieces Placer_pieces_joueur1() Placer_pieces_joueur2() END_IF Tour1() END_SUB
SUB Placer_pieces_joueur1() END_SUB
SUB Placer_pieces_joueur2() END_SUB
SUB Trace_piece(l%,c%) DIM_LOCAL image%, p% p%= Pieces(l%,c%) image% = -1 IF p% > 19 THEN p% = p% - 20 SELECT p% CASE 11 : image% = I_Bombe% CASE 10 : image% = I_Marechal% CASE 9 : image% = I_General% CASE 8 : image% = I_Colonel% CASE 7 : image% = I_Major% CASE 6 : image% = I_Capitaine% CASE 5 : image% = I_Lieutenant% CASE 4 : image% = I_Sergent% CASE 3 : image% = I_Demineur% CASE 2 : image% = I_Eclaireur% CASE 1 : image% = I_Espion% CASE 0 : image% = I_Drapeau% END_SELECT IF image% > 0 2D_TARGET_IS image% : 2D_IMAGE_COPY I_copy%,0,2,Lcase%,Hcase%-1 2D_TARGET_IS P_E_preparation% IF Pieces(l%,c%) < 20 2D_FILL_COLOR 0,0,200 ELSE 2D_FILL_COLOR 200,0,0 END_IF 2D_RECTANGLE (c%)*(Wcase%+1) + 2,(l%)*(Hcase%+1) + 1, (c%+1)*(Wcase%+1)+1,(l%+1)*(Hcase%+1) 2D_IMAGE_PASTE I_copy%,(c%)*(Wcase%+1) + (Wcase% - Lcase%)/2 +2,(l%)*(Hcase%+1) + 2 END_IF END_SUB
SUB Trace_dos(l%,c%) DIM_LOCAL image%, p% IF Tour% = 2 2D_FILL_COLOR 0,0,200 image% = I_bleu% ELSE 2D_FILL_COLOR 200,0,0 image% = I_rouge% END_IF 2D_TARGET_IS image% : 2D_IMAGE_COPY I_copy%,0,2,Lcase%,Hcase%-1 2D_TARGET_IS P_E_preparation% 2D_RECTANGLE (c%)*(Wcase%+1) + 2,(l%)*(Hcase%+1) + 1, (c%+1)*(Wcase%+1)+1,(l%+1)*(Hcase%+1) 2D_IMAGE_PASTE I_copy%,(c%)*(Wcase%+1)+(Wcase% - Lcase%)/2 +2,(l%)*(Hcase%+1) + 2 END_SUB
SUB Preparation() DIM_LOCAL piece% 2D_TARGET_IS P_Fond% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond% 2D_TARGET_IS P_E_preparation% : 2D_IMAGE_PASTE I_copy%,0,0 FOR Ligne% = 0 TO 9 FOR Colonne% = 0 TO 9 piece% = Pieces(Ligne%,Colonne%) IF Tour% = 1 AND piece% < 20 AND Cache_piece% = 0 Trace_piece(Ligne%,Colonne%) ELSE IF (Tour% = 1 OR Cache_piece% = 1) AND piece% > 19 Trace_dos(Ligne%,Colonne%) ELSE IF piece% > 19 AND Cache_piece% = 0 Trace_piece(Ligne%,Colonne%) ELSE IF (piece% > 0 OR Cache_piece% = 1) THEN Trace_dos(Ligne%,Colonne%) END_IF END_IF END_IF NEXT Colonne% NEXT Ligne% 2D_TARGET_IS P_E_preparation% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond% 2D_TARGET_IS P_E_affiche% : 2D_IMAGE_PASTE I_copy%,0,0 END_SUB
SUB encadre(lc%,cc%) 2D_LINE (c% )*(Wcase%+1)+2,(l% )*(Hcase%+1) + 2,(c%+1)*(Wcase%+1)+1,(l% )*(Hcase%+1) + 2 2D_LINE (c%+1)*(Wcase%+1)+1,(l% )*(Hcase%+1) + 2,(c%+1)*(Wcase%+1)+1,(l%+1)*(Hcase%+1) + 2 2D_LINE (c%+1)*(Wcase%+1)+1,(l%+1)*(Hcase%+1) + 2,(c% )*(Wcase%+1)+2,(l%+1)*(Hcase%+1) + 2 2D_LINE (c% )*(Wcase%+1)+2,(l%+1)*(Hcase%+1) + 2,(c% )*(Wcase%+1)+2,(l% )*(Hcase%+1) + 2 END_SUB
SUB Deplace(L_d%,C_d%,L_a%,C_a%) DIM_LOCAL Type_P%,x_sup%,y_sup%,x_inf%,y_inf% Type_P% = Pieces(L_d%,C_d%) IF L_d% > L_a% y_inf% = (L_d%+1)*(Hcase%+1) + 2 y_sup% = (L_a%)*(Hcase%+1) ELSE y_inf% = (L_a%+1)*(Hcase%+1) + 2 y_sup% = (L_d%)*(Hcase%+1) END_IF IF C_d% > C_a% x_inf% = (C_a%)*(Wcase%+1) x_sup% = (C_d%+1)*(Wcase%+1)+1 ELSE x_inf% = (C_d%)*(Wcase%+1) x_sup% = (C_a%+1)*(Wcase%+1)+1 END_IF Pieces(L_a%,C_a%) = Type_P% : Pieces(L_d%,C_d%) = -1 : Sel_X% = -1 Change_tour() END_SUB
SUB Change_tour() Preparation() WAIT 1000 IF Tour% = 1 Tour2() ELSE Tour1() END_IF Cache_piece% = 1 : Preparation() IF Tour% = 1 MESSAGE "Valider pour commencer votre tour joueur bleu" ELSE MESSAGE "Valider pour commencer votre tour joueur rouge" END_IF Cache_piece% = 0 : Preparation() END_SUB
SUB Test_deplacement(L_d%,C_d%,L_a%,C_a%) DIM_LOCAL Boucle%,sens% ' CAPTION 0,"Pièce : "+STR$(Type_P%)+" veut se déplacer de : "+STR$(L_d%)+","+STR$(C_d%)+" en :"+STR$(L_a%)+","+STR$(C_a%) IF L_d%<>L_a% AND C_d%<>C_a% THEN PLAY S_Erreur% : EXIT_SUB IF Pieces(L_d%,C_d%) <> 2 AND Pieces(L_d%,C_d%) <> 22 IF ABS(L_d% - L_a%) > 1 OR ABS(C_d% - C_a%) > 1 PLAY S_Erreur% : EXIT_SUB ELSE ' CAPTION 0,"Deplace la piece de : "+STR$(L_d%)+","+STR$(C_d%)+" en :"+STR$(L_a%)+","+STR$(C_a%) PLAY S_OK1% : Deplace(L_d%,C_d%,L_a%,C_a%) END_IF ELSE IF L_d% = L_a% sens% = (C_a%-C_d%)/ABS(C_a%-C_d%) FOR Boucle%=C_d%+sens% TO C_a% STEP sens% IF Pieces(L_d%,Boucle%) <> -1 THEN PLAY S_Erreur% : EXIT_SUB NEXT Boucle% PLAY S_OK2% :Deplace(L_d%,C_d%,L_a%,C_a%) ELSE IF C_d% = C_a% sens% = (L_a%-L_d%)/ABS(L_a%-L_d%) FOR Boucle%=L_d%+sens% TO L_a% STEP sens% IF Pieces(Boucle%,C_d%) <> -1 THEN PLAY S_Erreur% : EXIT_SUB NEXT Boucle% PLAY S_OK2% :Deplace(L_d%,C_d%,L_a%,C_a%) ELSE PLAY S_Erreur% : EXIT_SUB END_IF END_IF END_IF END_SUB
SUB Prise(L_d%,C_d%,L_a%,C_a%) DIM_LOCAL p_d%,p_a% ' Il faudra ajouter la procédure qui montre les 2 pièces p_d% = Pieces(L_d%,C_d%) : IF p_d% > 19 THEN p_d% = p_d% - 20 p_a% = Pieces(L_a%,C_a%) : IF p_a% > 19 THEN p_a% = p_a% - 20 Trace_piece(L_a%,C_a%) : 2D_TARGET_IS P_E_preparation% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond% 2D_TARGET_IS P_E_affiche% : 2D_IMAGE_PASTE I_copy%,0,0 : WAIT 2000 IF (p_d% = O_Espion% AND p_a% = O_Marechal% ) OR (p_d% = O_Demineur% AND p_a% = O_Bombe%) Deplace(L_d%,C_d%,L_a%,C_a%) ELSE IF p_d% > p_a% Deplace(L_d%,C_d%,L_a%,C_a%) ELSE Pieces(L_d%,C_d%) = -1 :Sel_X% = -1 : Preparation() IF Tour% = 1 THEN Tour2() : ELSE : Tour1() END_IF END_IF END_SUB
SUB Test_prise(L_d%,C_d%,L_a%,C_a%) DIM_LOCAL Boucle%,sens% IF L_d%<>L_a% AND C_d%<>C_a% THEN PLAY S_Erreur% : EXIT_SUB IF Pieces(L_d%,C_d%) <> 2 AND Pieces(L_d%,C_d%) <> 22 IF ABS(L_d% - L_a%) > 1 OR ABS(C_d% - C_a%) > 1 PLAY S_Erreur% : EXIT_SUB ELSE Prise(L_d%,C_d%,L_a%,C_a%) END_IF ELSE IF L_d% = L_a% sens% = (C_a%-C_d%)/ABS(C_a%-C_d%) IF ABS(C_a%-C_d%) > 1 FOR Boucle%=(C_d%+sens%) TO (C_a%-sens%) STEP sens% IF Pieces(L_d%,Boucle%) <> -1 THEN PLAY S_Erreur% : EXIT_SUB NEXT Boucle% END_IF Prise(L_d%,C_d%,L_a%,C_a%) ELSE IF C_d% = C_a% sens% = (L_a%-L_d%)/ABS(L_a%-L_d%) IF ABS(L_a%-L_d%) > 1 FOR Boucle%=(L_d%+sens%) TO (L_a%-sens%) STEP sens% IF Pieces(Boucle%,C_d%) <> -1 THEN PLAY S_Erreur% : EXIT_SUB NEXT Boucle% END_IF Prise(L_d%,C_d%,L_a%,C_a%) ELSE PLAY S_Erreur% : EXIT_SUB END_IF END_IF END_IF END_SUB
SUB Tour1() Tour% = 1 2D_TARGET_IS P_Tour% : 2D_FILL_COLOR 0,0,200 : 2D_CIRCLE 15,15,12 2D_TARGET_IS P_E_affiche% END_SUB
SUB Tour2() Tour% = 2 2D_TARGET_IS P_Tour% : 2D_FILL_COLOR 200,0,0 : 2D_CIRCLE 15,15,12 2D_TARGET_IS P_E_affiche% END_SUB
click_plateau: OFF_CLICK P_E_affiche% c% = INT(MOUSE_X_POSITION(P_E_affiche%)/(Wcase%+1)) : l% = INT(MOUSE_Y_POSITION(P_E_affiche%)/(Hcase%+1)) tmp% = Pieces(l%,c%)
IF Tour% = 1 IF tmp% >= 0 AND tmp% < 12 : ' On clic sur un pion bleu durant le tour du joueur 1 (bleu) IF tmp% = 0 OR tmp% = 11 : ' Si c'est une bombe ou le drapeau, on ne peut pas les bouger PLAY S_Erreur% : ' On averti par un beep que le mouvement n'est pas autorisé ELSE IF Sel_X% >= 0 : ' Si on avait déjà sélectionné un pion, on efface la sélection actuelle 2D_TARGET_IS P_E_preparation% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond% 2D_TARGET_IS P_E_affiche% : 2D_IMAGE_PASTE I_copy%,0,0 END_IF Sel_X% = c% : Sel_Y% = l% : ' On enregistre la position de la nouvelle sélection PLAY S_Clic2% 2D_PEN_COLOR 200,0,0 : encadre(l%,c%) : ' On affiche la case sélectionnée en l'encadrant END_IF ELSE IF Sel_X% >= 0 AND tmp% > 19 AND tmp% < 32 : ' Si le joueur 1 avait sélectionné un pion et qu'il clique sur un ennemi Test_prise(Sel_Y%,Sel_X%,l%,c%) : ' alors on resoud la rencontre ELSE IF Sel_X% > 0 AND Franchissable(l%,c%) > 0 : ' Sinon on vérifie que la case cliqué est autorisée par la carte Test_deplacement(Sel_Y%,Sel_X%,l%,c%) : ' Si oui, on test si le joueur peut si déplacer ELSE PLAY S_Erreur% : ' Sinon, on l'averti par un beep que le mouvement n'est pas autorisé END_IF END_IF END_IF ELSE IF tmp% > 19 AND tmp% < 32 : ' On clic sur un pion rouge durant le tour du joueur 2 (rouge) IF tmp% = 20 OR tmp% = 31 : ' Si c'est une bombe ou le drapeau, on ne peut pas les bouger PLAY S_Erreur% : ' On averti par un beep que le mouvement n'est pas autorisé ELSE IF Sel_X% >= 0 : ' Si on avait déjà sélectionné un pion, on efface la sélection actuelle 2D_TARGET_IS P_E_preparation% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond% 2D_TARGET_IS P_E_affiche% : 2D_IMAGE_PASTE I_copy%,0,0 END_IF Sel_X% = c% : Sel_Y% = l% : ' On enregistre la position de la nouvelle sélection PLAY S_Clic2% 2D_PEN_COLOR 0,0,200 : encadre(l%,c%) : ' On affiche la case sélectionnée en l'encadrant END_IF ELSE IF Sel_X% >= 0 AND tmp% >= 0 AND tmp% < 12 : ' Si le joueur 2 avait sélectionné un pion et qu'il clique sur un ennemi Test_prise(Sel_Y%,Sel_X%,l%,c%) : ' alors on resoud la rencontre ELSE IF Sel_X% > 0 AND Franchissable(l%,c%) > 0 : ' Sinon on vérifie que la case cliqué est autorisée par la carte Test_deplacement(Sel_Y%,Sel_X%,l%,c%) : ' Si oui, on test si le joueur peut si déplacer ELSE PLAY S_Erreur% : ' Sinon, on l'averti par un beep que le mouvement n'est pas autorisé END_IF END_IF END_IF END_IF ON_CLICK P_E_affiche%,click_plateau RETURN
REM ======================== Papydall Début ==================================== Aide: SELECT NUMBER_CLICK CASE 92 tex$ = "STRATEGO®" + chr$(13) + chr$(13) tex$ = tex$ + "STRATEGO® est un jeu non seulement passionnant" + chr$(13) tex$ = tex$ + "pour les deux joueurs actifs, mais également captivant" + chr$(13) tex$ = tex$ + "pour les spectateurs. La stratégie, qui est le principe" + chr$(13) tex$ = tex$ + "fondamental de nombreux jeux tels que les échecs et" + chr$(13) tex$ = tex$ + "les dames, a donné son nom à Stratego. Le but à " + chr$(13) tex$ = tex$ + "atteindre dans le jeu de Stratego est de s’emparer du" + chr$(13) tex$ = tex$ + "drapeau de la partie adverse. A cet effet, chaque " + chr$(13) tex$ = tex$ + "joueur dispose d’une armée de 40 pièces classées" + chr$(13) tex$ = tex$ + "suivant les grades militaires, ce qui permet de retenir" + chr$(13) tex$ = tex$ + "facilement la valeur des pièces. Cette dénomination " + chr$(13) tex$ = tex$ + "n’a cependant pas été prise avec l’intention de lancer" + chr$(13) tex$ = tex$ + "un jeu inspiré de la guerre, mais simplement comme " + chr$(13) tex$ = tex$ + "exercice psychologique d’attaque et de défense. Chaque " + chr$(13) tex$ = tex$ + "joueur dispose d’une armée de 40 pièces, dont " + chr$(13) tex$ = tex$ + "vous pouvez voir sur le damier les emblèmes, les " + chr$(13) tex$ = tex$ + "grades militaires et le nombre. " + chr$(13) tex$ = tex$ + "On doit disposer stratégiquement les pièces de façon " + chr$(13) tex$ = tex$ + "à ce que l’attaque et la défense se déploient en faveur" + chr$(13) tex$ = tex$ + "de chaque joueur qui les déplace" + chr$(13) CASE 93 tex$ = "DISPOSITION DES PIÈCES" + chr$(13) + chr$(13) tex$ = tex$ + "Il y a deux camps : les rouges et les bleus. Etant donné" + chr$(13) tex$ = tex$ + "que ce sont les rouges qui ouvrent le jeu, on tire" + chr$(13) tex$ = tex$ + "d’abord au sort pour déterminer à quel joueur cette" + chr$(13) tex$ = tex$ + "couleur sera attribuée." + chr$(13) tex$ = tex$ + "Les joueurs se placent face à face, le carton du jeu" + chr$(13) tex$ = tex$ + "entre eux, l’emblème Stratego étant tourné vers eux." + chr$(13) tex$ = tex$ + "Chaque joueur place une pièce dans chaque case de" + chr$(13) tex$ = tex$ + "la moitié du carton qui lui est attribuée, mais de telle " + chr$(13) tex$ = tex$ + "façon que l’adversaire ne voit que les dos de ces pièces," + chr$(13) tex$ = tex$ + "afin que ce dernier ignore la valeur de chacune" + chr$(13) tex$ = tex$ + "des pièces placées." + chr$(13) tex$ = tex$ + "Les deux rangs de cases du milieu restent inoccupés," + chr$(13) tex$ = tex$ + "de même que les deux lacs à travers lesquels les" + chr$(13) tex$ = tex$ + "deux armées ne peuvent pas se mouvoir au cours du jeu." + chr$(13) tex$ = tex$ + "La disposition des pièces doit être étudiée d’après les" + chr$(13) tex$ = tex$ + "règles du jeu d’une part, et suivant l’inspiration stratégique " + chr$(13) tex$ = tex$ + "du joueur d’autre part." + chr$(13)
CASE 94 tex$ = "RÈGLES DU JEU" + chr$(13) + chr$(13) tex$ = tex$ + "A tour de rôle, les joueurs peuvent déplacer une de leurs pièces d’une case à la fois, soit en avant ou en " + chr$(13) tex$ = tex$ + "arrière, soit latéralement à gauche ou à droite.l’éclaireur, au contraire des autres pièces peut, en une" + chr$(13) tex$ = tex$ + "fois, se déplacer de plus d’une case libre. Il peut alors arriver sur une case vide ou sur une pièce de l’adversaire." + chr$(13) tex$ = tex$ + "Le drapeau et les bombes ne doivent pas être déplacés et restent donc pendant tout le jeu sur les cases" + chr$(13) tex$ = tex$ + "où ils ont été placés au début. Lorsque deux pièces adversaires se sont rapprochées, les pièces se trouvant" + chr$(13) tex$ = tex$ + "soit face à face, soit à côté les unes des autres — le joueur peut prendre sa pièce et en touchant celle de" + chr$(13) tex$ = tex$ + "son adversaire, il doit nommer le grade de sa pièce personnelle. Le joueur adverse répond en nommant" + chr$(13) tex$ = tex$ + "le rang de sa pièce. Si c’est une pièce d’un rang inférieur, elle est alors enlevée du carton et la pièce" + chr$(13) tex$ = tex$ + "de rang supérieur prend la place devenue libre. Si cependant la pièce de l’adversaire est d’un rang " + chr$(13) tex$ = tex$ + "supérieur, alors la pièce de rang inférieur disparaît du carton et la pièce de rang supérieur reste à sa place." + chr$(13) tex$ = tex$ + "En cas de rang identiques, les deux pièces tombent. L’espion tombe devant les éclaireurs, ceux-ci tombent" + chr$(13) tex$ = tex$ + "devant les démineurs, les démineurs tombent devant les sergents, les sergents devant les Lieutenants,etc." + chr$(13) tex$ = tex$ + "Si deux pièces se trouvent rapprochées, il n’est pas nécessaire d’attaquer immédiatement;" + chr$(13) tex$ = tex$ + "l’initiative de l’attaque peut venir de chacun des deux joueurs. Chaque pièce, quel que soit son rang, sauf un démineur," + chr$(13) tex$ = tex$ + "tombe contre une bombe qui, rappelons-le, ne doit pas être déplacée. Si l’un des joueurs vient" + chr$(13) tex$ = tex$ + "à frapper une bombe de l’adversaire, celui-ci répond « boum ». Seul un démineur est en mesure de" + chr$(13) tex$ = tex$ + "détruire une bombe, après quoi elle doit être retirée du jeu. Le drapeau, qui ne doit pas être déplacé, tombe " + chr$(13) tex$ = tex$ + "devant n’importe quelle pièce de l’adversaire. Le maréchal, le plus haut en grade, tombe seulement" + chr$(13) tex$ = tex$ + "devant l’espion, s’il est pris par le dernier. Quand, au contraire, le maréchal attaque l’espion, ce dernier" + chr$(13) tex$ = tex$ + "tombe. Si un joueur ne peut plus déplacer aucune de ses pièces, par exemple lorsqu’il n’a plus" + chr$(13) tex$ = tex$ + "que des bombes et le drapeau, il doit capituler. Une pièce ne peut être déplacée plus de cinq fois de" + chr$(13) tex$ = tex$ + "suite entre les mêmes 2 cases. C’est le joueur qui réussit à s’emparer du drapeau de son adversaire,qui est le gagnant." + chr$(13) CASE 95 tex$ = "TACTIQUE" + chr$(13) + chr$(13) tex$ = tex$ + "D’après les règles du jeu ci-dessus indiquées, il" + chr$(13) tex$ = tex$ + "ressort que la mise en place des pièces au début" + chr$(13) tex$ = tex$ + "du jeu peut être déterminante pour l’issue de la" + chr$(13) tex$ = tex$ + "partie. Il sera donc raisonnable d’entourer le drapeau" + chr$(13) tex$ = tex$ + "de quelques bombes, afin de bien pourvoir le" + chr$(13) tex$ = tex$ + "défendre. Pour tromper l’adversaire, on fera bien," + chr$(13) tex$ = tex$ + "toutefois, de disposer aussi deux ou trois bombes à " + chr$(13) tex$ = tex$ + "une certaine distance de ce drapeau. Quelques " + chr$(13) tex$ = tex$ + "pièces d’un grade supérieur en première ligne peuvent " + chr$(13) tex$ = tex$ + "être d’une bonne valeur stratégique, mais un" + chr$(13) tex$ = tex$ + "joueur qui perd rapidement ses officiers supérieurs" + chr$(13) tex$ = tex$ + "se trouve dans une position défavorable. Les éclaireurs " + chr$(13) tex$ = tex$ + "ont leur raison d’être en première ligne, car ils" + chr$(13) tex$ = tex$ + "permettent de sonder la puissance de l’adversaire" + chr$(13) tex$ = tex$ + "mais si l’on vient à les perdre, on doit jouer ensuite comme un aveugle." + chr$(13) END_SELECT
MESSAGE tex$ RETURN REM ======================== Papydall (Fin) ==================================== | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Stratego collaboratif Lun 7 Mar 2016 - 16:18 | |
| J'ai intégré me moteur dans cette version Stratego_V1_3, sous le nom de Stratego_v1_3_avec_moteur.bas, dans mon WebDav. Il faut reprendre également Stragego.rlg, puisque j'ai modifié une règle concernant le rendez-vous entre un éclaireur et une bombe.
Tout cela est sur mon WebDav, dossier Stratego. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratego collaboratif Lun 7 Mar 2016 - 16:39 | |
| OK, Merci Klaus. Au niveau de l'écran, la carte est assez grande ou je fais une version pour les pions en 60 ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Stratego collaboratif Lun 7 Mar 2016 - 19:07 | |
| Voici ce que ça donne chez moi: Ca remplit tout l'écran. Ma résolution est 1366 x 768 pixels. Dans cette version, tu pourrais aisément déplacer le terrain de jeu vers la gauche et réduire la taille de la fenêtre. Ou alors prévoir des panels pour des informations sur le jeu (nombre de pions restants, nombre de coups joués, temps passé, ...) ou pour des commandes (nouvelle partie, placement des personnages etc). | |
| | | Contenu sponsorisé
| Sujet: Re: Stratego collaboratif | |
| |
| | | | Stratego collaboratif | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |