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 |
|
|
| Stratégo Colaboratif (version sur un scene2d) | |
|
+5papydall silverman Yannick Jicehel Jean Claude 9 participants | |
Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 13:12 | |
| J'ouvre ce post en parallèle avec le projet de Jicehel, pour éviter des confusions entre les 2. Le projet est le même (Stratégo). Il ne s'agit pas de concurrence, mais de pouvoir comparer. Si on doit sortir le même jeu de 2 manières différentes, c'est tant mieux.
J'espère pouvoir vous donner la base de départ d'ici ce soir....
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 14:35 | |
| C'est super Jean-Claude et une partie des procédure pourront être communes de toute façon, normalement. Par exemple si quelqu'un plus tard essaye de faire la partie IA de l'ordinateur pour jouer contre lui. (Dans un premier temps, ce sera en mode joueur vs joueur humains) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 15:34 | |
| Bon c'est parti !
Vous trouverez sur mon Webdav un zip nommé Stratégo_en_2D. Attention: Le fichier img contenant les images n'est pas le même que celui de Jicehel. Le code à charger est Statego_2D_v1.bas (tiens encore une faute statego, je corrigerai)
Pour le moment j'ai deux BUG(s) ' 1) le message " la case est vide (à développer)" est répeté 2 fois ??? ' 2) ' sprite_create_hide et sprite_show_all ne fonctionnent pas, mais là je crois que ça été signalé.
Dites-moi ce que vous en pensez et faites vos commentaires.
Du travail pour les intéressés: ' 1) message "Attention: vous risquez de vous mouiller les pieds..." ' je cherche des idées d'animation pour ce message.... ' 2) SUB init_case() voir la qualité de la méthode
C'est terminé pour moi aujourd'hui, il faut que je passe en cuisine....
A+
Dernière édition par Jean Claude le Mar 1 Mar 2016 - 7:53, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 27 Fév 2016 - 16:10 | |
| Je vais regarder mais...qu' est ce qu' on mange ?... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 19:04 | |
| C'est choucroute Alsacienne faite maison. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 19:16 | |
| Nous ce soir, ce n'est pas compliqué, c'est raclette ... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 19:56 | |
| bonne raclette !
As-tu regarder la version en 2D, je n'ai pas eu de commentaire ?
Je viens de recharger sur mon Webdav, j'ai créer toute les images pour les sprites (en bmp), tu peux les essayer sur ta version.
Je pourrais maintenant, diffuser le code ici, tant qu'il n'y aura pas de nouvelles images.
Bon, je vais passer à table.
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 21:08 | |
| J'ai testé mais je n'ais pas encore mis de commentaire, j'attends la suite mais ça commence bien | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Sam 27 Fév 2016 - 22:25 | |
| Mes réflexions pour la suite.
Si vous voyez que je fais fausse route merci de me le dire.
' liste des images et grade et nombre par joueur ' à noter: les bombes et le drapeau ne sont pas déplaçable ' les bombes => "Bomb.bmp"=0 6/Joueur . le drapeau => "Flag.bmp"=0 1/Joueur ' l'espion => "Spy.bmp"=1 1/Joueur . les Éclaireurs => "Scout.bmp"=2 8/Joueur ' les Démineurs => "Miner.bmp"=3 5/Joueur . les Sergents => "Sergeant.bmp"=4 4/Joueur ' les Lieutenants => "Lieutenant.bmp"=5 4/Joueur . les Capitaines => "Captain.bmp"=6 4/Joueur ' les Commandants => "Major.bmp"=7 4/Joueur . les Colonels => "Colonel.bmp"=8 3/Joueur ' le Général => "General.bmp"=9 1/Joueur . le Maréchal => "Marshal.bmp"=10 1/Joueur ' Réflexion pour la suite ' il faut 40 acteurs (pions) par équipe ' en utilisant des sprites rouges pour l'ordi et bleus pour le joueur ' en conséquence: il faut 80 images (sprites) au total (80 pions) ' chaque numéro de sprite doit fournir sa position actuel, son grade, et son état (Mort ou vivant) et sa visibilité ' donc c'est à gérer par des variables: - ' PPC%(p%)=Kaz% => Position du pion p% dans la case Kaz% - ' GP%(p%)=grade% du pion (0=pas de dépacement, 1=espion traitement particulier, ensuite voir tableau précédent) - ' EP%(p%)=état du pion 0=vivant, 1=mort (invisible ou delete) - ' VP%(p%)=visibilité du pion . 1=visible pour les pions bleus, 0=invisible pour les pions rouges de l'ordi - ' prévoir de masquer le pion rouge de l'ordi (sprite) - ' p% correspond au n° de sprite ' donc créer 80 pions (sprites) p% avec les 4 variables ci-dessus en respectant les couleurs de chaque camps.
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 0:23 | |
| Pour le "grade" de la bombe moi j'ai mis 11 puisqu'elle détruit tout sauf le démineur. C'est de toute façon un cas à part, mais je trouvais ça mieux de le mettre au dessus des pièces qu'elle détruisait (A part pour le démineur qui du coup est la seule exception à gérer pour la bombe) Perso, je ne prévois pas de rendre les pièces visibles car dans le jeu, on ne montre les pièces que lors de l'attaque (pendant la résolution de l'attaque). Le joueur valide le résultat durant lequel il voit le pion ennemi qui disparaît s'il perd. C'est au joueur de ce souvenir de l'emplacement et de la valeur des pièces qu'il a vu. Le Stratego a un peu des échecs et du Memory Pour moi, pendant le tour 1, le joueur 1 voit ses pions et des rectangles rouges pour ceux du joueur 2. Il y a une fenêtre qui s'affiche quand le joueur 1 à joué pour valider que le joueur 2 est prêt à jouer. Quand cette fenêtre est affichée tous les pions sont sous formes de rectangles monochromes (rouges ou bleus) quand le joueur 2 valide qu'il est pret, ces pions apparaissent sur les rectangles . Voilà mes remarques et avis / conseils / façon imaginée de résoudre le mode 2 joueurs sur le même ordi. En mode joueurs vs ordinateur, ou jours vs joueur en mode réseau, en effet les pions du joueur 1 resteraient affichés et ceux du joueur 2 resteraient masqués. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 9:27 | |
| Je t'offre l'intégration de l'aide de Papydall qui m'ont couté le terrible effort de faire 3 copier / coller Son aide est très bien mais bien sûr tu peux l'adapter si tu veux faire autrement Je t'ai fais une petite boucle pour l'init des cases et j'ai cherché pour l'histoire du double affichage des message, mais par contre ça, je n'ai pas trouvé d'où ça venait et j'ai essayé différents palliatifs sans succès. Solution proposé: Affiche plutôt les textes dans un alpha sur le côté de ton plateau de jeu. Ca j'ai essayé et ça marche bien (Je n'ai pas mis dans le code mais c'est simple à coder) - Code:
-
rem ============================================================================ rem JEU DU STRATEGO (Version en 2d) rem VERSION DE JEAN-CLAUDE BASEE SUR SCENE2D / SPRITES rem OUVERT A LA COLLABORATION DES TOUS LES PANORAMICIENS STRATEGOYENS rem ============================================================================ ' Notes sur la version actuelle : ' Problème à résoudre (BUG) ' 1) le message " la case est vide (à développer)" est répeté 2 fois ??? ' 2) ' sprite_create_hide et sprite_show_all ne fonctionnent pas ' Travail à faire ' 1) message "Attention: vous risquez de vous mouiller les pieds..." ' je cherche des idées d'animation pour ce message.... ' 2) SUB init_case() voir la qualité de la méthode dim rep$,repimage$ dim n%,x%,y% rem ======================== Papydall ========================================== LABEL Aide DIM tex$ APPLICATION_TITLE "**** STRATEGO Version 2d / Sprites *****" rem ======================== Papydall ========================================== width 0,811+16 : height 0,811+31+8+20 ' Menu (à développer par la suite) main_menu 10 command_target_is 0 sub_menu 11 : parent 11,10 : caption 11,"Fichier" rem =================== Papydall (Début) ======================================= rem J ai commencé les SUB_MENUs à partir de 91 pour laisser la place aux futurs autres SUB_MENUs rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 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) ========================================= ' répertoire rep$=dir_current$+"\" : repimage$=rep$+"img" : dir_change repimage$ ' scene2D 100 dim TypSel% : TypSel%=0 :' pour déterminer si c'est un clic de sélection (0) ou de déplacement(1) label click, rien scene2d 100 : on_click 100,click : file_load 100,"Fond.bmp" : width 100,811 : height 100,811 ' les cases dim Hcase%,Wcase%,CaseSel%:' Hcase%=Hauteur d'une case, Wcase%=largeur d'une case, CaseSel%= case sélectionnée dim cases%(100) , Top_cases%(100) , Left_cases%(100) , ContenuCase%(100) Hcase%=80 : Wcase%=80 init_case() ' création des sprites (à développer) ' sprite_create_hide sprite 101 ' pour essai ' sprite_show_all sprite_file_load 101,"Bomb.bmp" sprite_x_position 101,Top_cases%(cases%(12))+10 : sprite_y_position 101,Left_cases%(cases%(12))+5 ' affiche() : ' Sub de test à supprimer à la fin END rem ============================================================================ ' SUB provisoire SUB affiche() dim_local i% for i%=1 to 100 caption 0,str$(cases%(i%))+" => "+str$(Top_cases%(cases%(i%)))+"/"+str$(Left_cases%(cases%(i%))) : stop next i% END_SUB rem ============================================================================ rien: RETURN click: off_click 100:' neutraliser pendant le traitement du click ' retrouver la case qui correspond au clic x%=mouse_x_position(100) : y%=mouse_y_position(100) for n%=1 to 100 if y%>Top_cases%(cases%(n%)) and y%<Top_cases%(cases%(n%))+Hcase% if x%>Left_cases%(cases%(n%)) and x%<Left_cases%(cases%(n%))+Wcase% CaseSel%=cases%(n%) ' prévoir une animation de la case sélectionnée (Encadré, changement de couleur, etc.) caption 0,str$(CaseSel%) end_if end_if next n% ' gerer les cases des lacs if CaseSel%=43 or CaseSel%=44 or CaseSel%=47 or CaseSel%=48 or CaseSel%=53 or CaseSel%=54 or CaseSel%=57 or CaseSel%=58 ' prévoir une animation message "Attention: vous risquez de vous mouiller les pieds..." ' on sort sans changer TypSel% et on réactive le clic on_click 100,click : RETURN end_if ' Sélection ou déplacement if TypSel%=0 ' c'est une sélection ' regarde ce qu'il y a dans la case sélectionnée Contenu_de_la_Case(CaseSel%) ' agit en fonction du résultat du contenu ' gestion du prochain clic TypSel%=1: ' pour que le prochain clic soit un déplacement end_if if TypSel%=1 ' c'est un déplacement ' regarde ce qu'il y a dans la case visée Contenu_de_la_Case(CaseSel%) ' déplace le pion si c'est possible (pas chez un collègue) ' agit en fonction du résultat du contenu (gain ou défaite ou nul) ' gestion du prochain clic TypSel%=0: ' pour que le prochain clic soit une sélection end_if on_click 100,click RETURN rem ============================================================================ SUB Contenu_de_la_Case(NumCase%) if ContenuCase%(NumCase%)=0 message " la case n°"+str$(NumCase%)+" est vide (à développer)" : exit_sub else message " retourne le contenu de la case n°"+str$(NumCase%)+" (à développer)" : exit_sub end_if set_focus 1 END_SUB rem ============================================================================ SUB init_case() dim_local tt%,ll%,i%, j%, k% for j%=0 to 9 for k% = 1 to 10 i% = j%*10 + k% cases%(i%)=i% : ContenuCase%(cases%(i%))=0 : Top_cases%(cases%(i%))=tt% : Left_cases%(cases%(i%))=ll% ll%=ll%+Wcase% next k% ll%=0 : tt%=tt%+Hcase% next j% END_SUB rem ============================================================================ rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ======================== Papydall Début ==================================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 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) ==================================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ============================================================================ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 10:10 | |
| Bonjour à tous, Je prends le fichier aide fait par Papydall, il y aura peut-être des changements à y faire, mais ce n'est pas certain. à ce sujet, une petite correction à faire: Le maréchal, le plus haut en grade, tombe seulement devant l’espion, s’il est pris par le ce dernier.Merci Papydall pour cette participation. @Jicehel, Concernant le double affichage des messages dans la SUB Contenu_de_la_Case(NumCase%), je l'ai signalé pour que Jack se penche dessus (car à mon avis ça ne vient pas du code). Mais c'est sans importance car ces messages disparaîtront, ils ne servent qu'à repérer les partis à coder . Concernant l'attribution du grade 11 à la bombe, je prends car c'est logique et de plus en cas de sub commune..... Concernant la SUB init_case(), je prends également. C'est là qu'on voit mes limites en programmation, je suis un programmeur du dimanche. Mais peu importe, c'est le but d'un projet collaboratif. C'est bien pour cela que j'ai demandé (plus haut) d'y regarder. Concernant les différents types de partie, je vais en priorité revoir le menu pour que l'utilisateur ait le choix de jouer à deux ou contre l'ordi (pour le réseau on verra plus tard). Il me reste à mettre tout ça en pratique, mais d'abord, il faut que je décortique ton code... A+ | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 10:21 | |
| @jean-claude Pourquoi plusieurs variables pour les propriétés du pion? Une seule est plus simple à gérer: - Code:
-
dim positionx,positiony,grade,etat,visibilite,pion(80,5)
positionx=1 positiony=2 grade=3 etat=4 visibilite=5
' exemple lecture=pion(p%,etat)
Pour le message qui se repète 2 fois, ce n'est pas un bug, c'est toi qui l'a codé comme ça: - Code:
-
' Sélection ou déplacement if TypSel%=0 ' c'est une sélection ' regarde ce qu'il y a dans la case sélectionnée Contenu_de_la_Case(CaseSel%) ' agit en fonction du résultat du contenu ' gestion du prochain clic TypSel%=1: ' pour que le prochain clic soit un déplacement
end_if if TypSel%=1 ' c'est un déplacement ' regarde ce qu'il y a dans la case visée Contenu_de_la_Case(CaseSel%) ' déplace le pion si c'est possible (pas chez un collègue) ' agit en fonction du résultat du contenu (gain ou défaite ou nul) ' gestion du prochain clic TypSel%=0: ' pour que le prochain clic soit une sélection end_if
dès que TypSel%=0, tu affiche le message puis tu fais TypSel%=1, donc la deuxième condition s'effectue dans la foulé! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 10:34 | |
| Bien vu Silverman, j'avais remarqué cette anomalie de code, mais d'une part j'ai oublié de la signaler et d'autre part je n'ai pas pensé que c'était elle qui créait le double affichage du message. Bien vu. Comme quoi, c'est bien d'avoir plusieurs relecteurs | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 10:59 | |
| Merci Sylverman, Pour les messages doublés, bien vu. j'aurai dû mettre un stop en attendant.... Pour les variables des pions, ben oui, pourquoi je me complique la vie.... C'est super le collaboratif... Voici le nouveau code qui ressort de toutes vos interventions. Pour moi ce sera tout pour aujourd'hui, j'ai ma famille qui commence à me regarder d'un air menaçant... - Code:
-
' Stratego_2D_v1_01.bas ' Travail à faire ' 1) message "Attention: vous risquez de vous mouiller les pieds..." ' je cherche des idées d'animation pour ce message.... dim rep$,repimage$,tex$ dim n%,x%,y% width 0,811+16 : height 0,811+31+8+20 ' Menu (à développer par la suite) label aide main_menu 10 command_target_is 0 sub_menu 11 : parent 11,10 : caption 11,"Jeu" sub_menu 12 : parent 12,11 : caption 12,"Nouvelle partie contre l'ordinateur " sub_menu 13 : parent 13,11 : caption 13,"Nouvelle partie à 2 joueurs " sub_menu 14 : parent 14,11 : caption 14,"Charger une partie " sub_menu 15 : parent 15,11 : caption 15,"Sauver la partie " sub_menu 20 : parent 20,10 : caption 20,"Aide" SUB_MENU 21 : PARENT 21,20 : CAPTION 21,"Stratégo" : ON_CLICK 21,Aide SUB_MENU 22 : PARENT 22,20 : CAPTION 22,"Dispositions des pièces" : ON_CLICK 22,Aide SUB_MENU 23 : PARENT 23,20 : CAPTION 23,"Règles du jeu" : ON_CLICK 23,Aide SUB_MENU 24 : PARENT 24,20 : CAPTION 24,"Tactique" : ON_CLICK 24,Aide ' répertoire rep$=dir_current$+"" : repimage$=rep$+"img" : dir_change repimage$ ' scene2D 100 dim TypSel% : TypSel%=0 :' pour déterminer si c'est un clic de sélection (0) ou de déplacement(1) label click scene2d 100 : on_click 100,click : file_load 100,"Fond.bmp" : width 100,811 : height 100,811 ' les cases dim Hcase%,Wcase%,CaseSel%:' Hcase%=Hauteur d'une case, Wcase%=largeur d'une case, CaseSel%= case sélectionnée dim cases%(100) , Top_cases%(100) , Left_cases%(100) , ContenuCase%(100) Hcase%=80 : Wcase%=80 init_case() ' création des sprites (à développer) ' sprite_create_hide sprite 101 ' pour essai ' sprite_show_all sprite_file_load 101,"Captain.bmp" sprite_x_position 101,Left_cases%(cases%(12))+10 : sprite_y_position 101,Top_cases%(cases%(12))+2 ' liste des images et grade et nombre par joueur ' à noter: les bombes et le drapeau ne sont pas déplaçable ' les bombes => "Bomb.bmp"=0 6/Joueur . le drapeau => "Flag.bmp"=0 1/Joueur ' l'espion => "Spy.bmp"=1 1/Joueur . les Éclaireurs => "Scout.bmp"=2 8/Joueur ' les Démineurs => "Miner.bmp"=3 5/Joueur . les Sergents => "Sergeant.bmp"=4 4/Joueur ' les Lieutenants => "Lieutenant.bmp"=5 4/Joueur. les Capitaines => "Captain.bmp"=6 4/Joueur ' les Commandants => "Major.bmp"=7 4/Joueur . les Colonels => "Colonel.bmp"=8 3/Joueur ' le Général => "General.bmp"=9 1/Joueur . le Maréchal => "Marshal.bmp"=10 1/Joueur ' sur proposition de Silverman les variables pour gérer les pions dim positionX%,positionY%,grade%,etat%,visibilite%,pion%(80,5) ' exemple ' positionX%=1 : positionY%=2 : grade%=3 : etat%=4 : visibilite%=5 ' lecture=pion%(p%,etat) rem ======================================== Notes diverses (Partie à supprimer) ' affiche() : ' Sub de test à supprimer à la fin rem ============================================================================ END rem ============================================================================ ' SUB provisoire SUB affiche() dim_local i% for i%=1 to 100 caption 0,str$(cases%(i%))+" => "+str$(Top_cases%(cases%(i%)))+"/"+str$(Left_cases%(cases%(i%))) : stop next i% END_SUB rem ============================================================================ click: off_click 100:' neutraliser pendant le traitement du click ' retrouver la case qui correspond au clic x%=mouse_x_position(100) : y%=mouse_y_position(100) for n%=1 to 100 if y%>Top_cases%(cases%(n%)) and y%<Top_cases%(cases%(n%))+Hcase% if x%>Left_cases%(cases%(n%)) and x%<Left_cases%(cases%(n%))+Wcase% CaseSel%=cases%(n%) ' prévoir une animation de la case sélectionnée (Encadré, changement de couleur, etc.) caption 0,str$(CaseSel%) end_if end_if next n% ' gerer les cases des lacs if CaseSel%=43 or CaseSel%=44 or CaseSel%=47 or CaseSel%=48 or CaseSel%=53 or CaseSel%=54 or CaseSel%=57 or CaseSel%=58 ' prévoir une animation message "Attention: vous risquez de vous mouiller les pieds..." ' on sort sans changer TypSel% et on réactive le clic on_click 100,click : RETURN end_if ' Sélection ou déplacement if TypSel%=0 ' c'est une sélection ' regarde ce qu'il y a dans la case sélectionnée Contenu_de_la_Case(CaseSel%) ' agit en fonction du résultat du contenu STOP ' gestion du prochain clic TypSel%=1: ' pour que le prochain clic soit un déplacement end_if if TypSel%=1 ' c'est un déplacement ' regarde ce qu'il y a dans la case visée Contenu_de_la_Case(CaseSel%) ' déplace le pion si c'est possible (pas chez un collègue) ' agit en fonction du résultat du contenu (gain ou défaite ou nul) STOP ' gestion du prochain clic TypSel%=0: ' pour que le prochain clic soit une sélection end_if on_click 100,click RETURN rem ============================================================================ SUB Contenu_de_la_Case(NumCase%) if ContenuCase%(NumCase%)=0 message " la case n°"+str$(NumCase%)+" est vide (à développer)" : stop else message " retourne le contenu de la case n°"+str$(NumCase%)+" (à développer)" : stop end_if END_SUB rem ============================================================================ SUB init_case() dim_local tt%,ll%,i%, j%, k% for j%=0 to 9 for k% = 1 to 10 i% = j%*10 + k% cases%(i%)=i% : ContenuCase%(cases%(i%))=0 : Top_cases%(cases%(i%))=tt% : Left_cases%(cases%(i%))=ll% ll%=ll%+Wcase% next k% ll%=0 : tt%=tt%+Hcase% next j% END_SUB rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ====================== Aide de Papydall Début ============================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Aide: select number_click case 21 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 22 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 23 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 ce 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 24 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) ==================================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& A+ Réédition 11:58: Correction Bug (sprite 101) et suppression de 2 commentaires devenus inutiles.
Dernière édition par Jean Claude le Mar 1 Mar 2016 - 7:55, édité 2 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 14:04 | |
| Hello Jean Claude. Une fois de plus le forum t’a bouffé l’anti-slash en ligne 32. Il est recommandé d’utiliser CHR$(92) au lieu de « \ » dont le forum en est avide ! - Code:
-
rep$=dir_current$+chr$(92) : repimage$=rep$+"img" : dir_change repimage$ D’autre part, (et c’est STRICTEMENT PERSONNEL), j’aime mieux que FORM 0 soit centré. J’ai donc modifié la ligne 13 comme ceci : - Code:
-
width 0,811+16 : height 0,811+31+8+20 : left 0,(screen_x - width(0))/2 | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 14:55 | |
| @Papydall Merci pour cette mise en garde contre les méfaits du forum bouffeur de certains caractères. Pour la question de centrer FORM 0, j'y serai venu tôt ou tard. Application immédiate avec repérage de la taille du bandeau et des bords pour une meilleure portabilité du code: - Code:
-
' Stratego_2D_v1_01.bas
' ' Travail à faire ' 1) message "Attention: vous risquez de vous mouiller les pieds..." ' je cherche des idées d'animation pour ce message....
' portabilité Retourne_Dimension_Bandeau_Et_Bord() :' retourne bandeau%,bord%
dim rep$,repimage$,tex$ dim n%,x%,y%
width 0,811+(bord%*2) : height 0,811+bandeau%+bord%+20 :top 0,(screen_Y - height(0))/2 : left 0,(screen_x - width(0))/2
' Menu (à développer par la suite) label aide main_menu 10 command_target_is 0 sub_menu 11 : parent 11,10 : caption 11,"Jeu" sub_menu 12 : parent 12,11 : caption 12,"Nouvelle partie contre l'ordinateur " sub_menu 13 : parent 13,11 : caption 13,"Nouvelle partie à 2 joueurs " sub_menu 14 : parent 14,11 : caption 14,"Charger une partie " sub_menu 15 : parent 15,11 : caption 15,"Sauver la partie " sub_menu 20 : parent 20,10 : caption 20,"Aide" SUB_MENU 21 : PARENT 21,20 : CAPTION 21,"Stratégo" : ON_CLICK 21,Aide SUB_MENU 22 : PARENT 22,20 : CAPTION 22,"Dispositions des pièces" : ON_CLICK 22,Aide SUB_MENU 23 : PARENT 23,20 : CAPTION 23,"Règles du jeu" : ON_CLICK 23,Aide SUB_MENU 24 : PARENT 24,20 : CAPTION 24,"Tactique" : ON_CLICK 24,Aide
' répertoire rep$=dir_current$+chr$(92) : repimage$=rep$+"img" : dir_change repimage$
' scene2D 100 dim TypSel% : TypSel%=0 :' pour déterminer si c'est un clic de sélection (0) ou de déplacement(1) label click scene2d 100 : on_click 100,click : file_load 100,"Fond.bmp" : width 100,811 : height 100,811
' les cases dim Hcase%,Wcase%,CaseSel%:' Hcase%=Hauteur d'une case, Wcase%=largeur d'une case, CaseSel%= case sélectionnée dim cases%(100) , Top_cases%(100) , Left_cases%(100) , ContenuCase%(100) Hcase%=80 : Wcase%=80 init_case()
' création des sprites (à développer) ' sprite_create_hide
' pour essai ' sprite_show_all sprite 101 : sprite_file_load 101,"Bomb.bmp" sprite_x_position 101,Left_cases%(cases%(12))+10 : sprite_y_position 101,Top_cases%(cases%(12))+2 sprite 102 : sprite_file_load 102,"Flag.bmp" sprite_x_position 102,Left_cases%(cases%(13))+10 : sprite_y_position 102,Top_cases%(cases%(13))+2 sprite 103 : sprite_file_load 103,"Captain.bmp" sprite_x_position 103,Left_cases%(cases%(14))+10 : sprite_y_position 103,Top_cases%(cases%(14))+2
' liste des images et grade et nombre par joueur ' à noter: les bombes et le drapeau ne sont pas déplaçable ' les bombes => "Bomb.bmp"=11 6/Joueur . le drapeau => "Flag.bmp"=0 1/Joueur ' l'espion => "Spy.bmp"=1 1/Joueur . les Éclaireurs => "Scout.bmp"=2 8/Joueur ' les Démineurs => "Miner.bmp"=3 5/Joueur . les Sergents => "Sergeant.bmp"=4 4/Joueur ' les Lieutenants => "Lieutenant.bmp"=5 4/Joueur. les Capitaines => "Captain.bmp"=6 4/Joueur ' les Commandants => "Major.bmp"=7 4/Joueur . les Colonels => "Colonel.bmp"=8 3/Joueur ' le Général => "General.bmp"=9 1/Joueur . le Maréchal => "Marshal.bmp"=10 1/Joueur ' sur proposition de Silverman les variables pour gérer les pions dim positionX%,positionY%,grade%,etat%,visibilite%,pion%(80,5) ' exemple ' positionX%=1 : positionY%=2 : grade%=3 : etat%=4 : visibilite%=5 ' lecture=pion%(p%,etat)
rem ======================================== Notes diverses (Partie à supprimer) ' affiche() : ' Sub de test à supprimer à la fin
rem ============================================================================ END rem ============================================================================ ' SUB provisoire SUB affiche() dim_local i% for i%=1 to 100 caption 0,str$(cases%(i%))+" => "+str$(Top_cases%(cases%(i%)))+"/"+str$(Left_cases%(cases%(i%))) : stop next i% END_SUB
rem ============================================================================ click: off_click 100:' neutraliser pendant le traitement du click ' retrouver la case qui correspond au clic x%=mouse_x_position(100) : y%=mouse_y_position(100) for n%=1 to 100 if y%>Top_cases%(cases%(n%)) and y%<Top_cases%(cases%(n%))+Hcase% if x%>Left_cases%(cases%(n%)) and x%<Left_cases%(cases%(n%))+Wcase% CaseSel%=cases%(n%) ' prévoir une animation de la case sélectionnée (Encadré, changement de couleur, etc.) caption 0,str$(CaseSel%) end_if end_if next n% ' gerer les cases des lacs if CaseSel%=43 or CaseSel%=44 or CaseSel%=47 or CaseSel%=48 or CaseSel%=53 or CaseSel%=54 or CaseSel%=57 or CaseSel%=58 ' prévoir une animation message "Attention: vous risquez de vous mouiller les pieds..." ' on sort sans changer TypSel% et on réactive le clic on_click 100,click : RETURN end_if ' Sélection ou déplacement if TypSel%=0 ' c'est une sélection ' regarde ce qu'il y a dans la case sélectionnée Contenu_de_la_Case(CaseSel%) ' agit en fonction du résultat du contenu ' STOP ' gestion du prochain clic TypSel%=1: ' pour que le prochain clic soit un déplacement
end_if if TypSel%=1 ' c'est un déplacement ' regarde ce qu'il y a dans la case visée Contenu_de_la_Case(CaseSel%) ' déplace le pion si c'est possible (pas chez un collègue) ' agit en fonction du résultat du contenu (gain ou défaite ou nul) ' STOP ' gestion du prochain clic TypSel%=0: ' pour que le prochain clic soit une sélection end_if on_click 100,click RETURN rem ============================================================================ SUB Contenu_de_la_Case(NumCase%) if ContenuCase%(NumCase%)=0 message " la case n°"+str$(NumCase%)+" est vide (à développer)" :' stop else message " retourne le contenu de la case n°"+str$(NumCase%)+" (à développer)" :' stop end_if END_SUB rem ============================================================================ SUB init_case() dim_local tt%,ll%,i%, j%, k% for j%=0 to 9 for k% = 1 to 10 i% = j%*10 + k% cases%(i%)=i% : ContenuCase%(cases%(i%))=0 : Top_cases%(cases%(i%))=tt% : Left_cases%(cases%(i%))=ll% ll%=ll%+Wcase% next k% ll%=0 : tt%=tt%+Hcase% next j% END_SUB
rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ====================== Aide de Papydall Début ============================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Aide: select number_click case 21 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 22 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 23 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 ce 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 24 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) ==================================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ======================== =================================================== SUB Retourne_Dimension_Bandeau_Et_Bord() ' controle de la position de la procédure dans le programme IF NUMBER_OBJECTS>0 message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !" terminate END_IF ' création des VARIABLES GLOBALES IF VARIABLE("bandeau%")=0 then DIM bandeau% IF VARIABLE("bord%")=0 then DIM bord% ' Calcul de bandeau% et bord% dim_local w0%,h0%,w1%,h1%,w2%,h2% w0%=WIDTH(0) : h0%=HEIGHT(0) picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1) w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2 ' Suppression du Picture devenu inutile delete 1 END_SUB
A+
Dernière édition par Jean Claude le Mar 1 Mar 2016 - 7:55, édité 2 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 15:16 | |
| Sous Windows 7, il vaut mieux laisser le TOP implicite à 0 et ne pas utiliser : - Code:
-
top 0,(screen_Y - height(0))/2 Ce n’est qu’un détail que tout un chacun peut régler selon ses préférences. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 15:20 | |
| Oui, là chacun fera ce qu'il voudra.
Je viens de modifier le code (juste au dessus) pour que le programme détecte les dimensions du bandeau et des bords suivant la version Windows.
A+ | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 16:02 | |
| @jean-claude tu aurais dû reprendre les noms de variables de jicehel, c'est pas facile d'intégrer une sub dans ta version. Voici ce que j'ai fait pour la création des sprites(version d'hier soir, déplacement ou l'on veut sauf les zones infranchissables): - Code:
-
' ------------------------- ' * Structure du Stratego * ' -------------------------
LABEL click_plateau
' * Déclaration des variables DIM compt%
' * Déclaration des variables pour les images DIM I_Fond%, I_E_affiche%, I_E_preparation%, I_copy% 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 Largeur_Fond%,Hauteur_Fond% : Largeur_Fond% = 811 : Hauteur_Fond% = 811
' * Déclaration du nombre 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 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 Selection% : ' Si >=0 donne la case actuellement sélectionnée
' ' ' ' ' ' * Déclaration des variables pour les sprites DIM file$,plateau%,max_sprite% : max_sprite%=80 : ' sprites DIM rouge%,bleu%,vert%,blanc% DIM sprites(max_sprite%) FOR compt%=0 to max_sprite% : sprites(compt%)= -1 : NEXT compt%
' * 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 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) = -1 : Franchissable(4,3) = -1 Franchissable(4,6) = -1 : Franchissable(4,7) = -1 Franchissable(5,2) = -1 : Franchissable(5,3) = -1 Franchissable(5,6) = -1 : Franchissable(5,7) = -1
O_Drapeau% = 0 O_Espion% = 1 O_Eclaireur% = 2 O_Demineur% = 3 O_Sergent% = 4 O_Lieutenant% = 5 O_Capitaine% = 6 O_Major% = 7 O_Colonel% = 8 O_General% = 9 O_Marechal% = 10 O_Bombe% = 11
' * Création et chargement des images
FULL_SPACE 0
sprite_create_hide
' plateau plateau%=99 make_plateau(plateau%)
' BLEU ' bombe1 file$="Bomb" load_sprite(file$,O_Bombe%,"bleu") POSITION_PIECE(1,0,2)
' drapeau file$="Flag" load_sprite(file$,O_Drapeau%,"bleu") POSITION_PIECE(2,0,3)
' bombe2 file$="Captain" load_sprite(file$,O_Capitaine%,"bleu") POSITION_PIECE(3,0,4)
' ROUGE ' bombe1 file$="Bomb" load_sprite(file$,O_Bombe%+40,"rouge") POSITION_PIECE(1+40,9,2)
' drapeau file$="Flag" load_sprite(file$,O_Drapeau%+40,"rouge") POSITION_PIECE(2+40,9,3)
' bombe2 file$="Captain" load_sprite(file$,O_Capitaine%+40,"rouge") POSITION_PIECE(3+40,9,4)
' cadres colorés autour des pièces (fabriqué en dernier pour recouvrir les autres sprites) ' rouge make_encadre(255,0,0) :' numero de ce sprite = plateau%-1 rouge% = plateau%-1 ' bleu make_encadre(0,0,255) :' numero de ce sprite = plateau%-2 bleu% = plateau%-2
' montre les sprites sprite_show plateau% for tmp%=0 to max_sprite% if sprites(tmp%)>-1 then sprite_show tmp% next tmp%
END ' pour plus tard data "Flag",1 data "Spy",1 data "Scout"8, data "Miner",5 data "Sergeant",4 data "Lieutenant",4 data "Captain",4 data "Major",3 data "Colonel",2 data "General",1 data "Marshal",1 data "Bomb",6 data "_",0
sub make_plateau(plateau%) dim_local I_fond%,tmp_pic ' cherche une image libre I_fond%=0 repeat I_fond%=I_fond%+1 until object_exists(I_fond%)=0 image I_fond%
' cherche un picture libre tmp_pic=0 repeat tmp_pic=tmp_pic+1 until object_exists(tmp_pic)=0 ' NOTE: colorer un picture apès sa création évite le clignotement blanc très bref picture tmp_pic : color tmp_pic,236,233,216 : hide tmp_pic : 2d_target_is tmp_pic
' charge le fichier plateau file_load tmp_pic,"img/Fond.jpg": width tmp_pic,Largeur_fond% : height tmp_pic,Hauteur_Fond% 2d_image_copy I_fond%,0,0,Largeur_fond%,Hauteur_Fond%
' fabrique le plateau scene2D plateau% color plateau%,236,233,216 on_click plateau%,click_plateau ' taille et centrage du plateau width plateau%,Largeur_fond% : height plateau%,Hauteur_Fond% top plateau%,(height(0)-Hauteur_Fond%)/2 : left plateau%,(width(0)-Largeur_Fond%)/2 ' attribue un numéro de sprite pour le plateau sprite plateau% sprite_image_load plateau%,I_fond% sprite_position plateau%,0,0 ' libere les ressources inutiles 2d_target_is 0 delete tmp_pic delete I_fond% end_sub
sub make_encadre(r%,g%,b%) dim_local tmp_pic,tmp_sprite ' cherche une image libre I_fond%=0 repeat I_fond%=I_fond%+1 until object_exists(I_fond%)=0 image I_fond%
' cherche un picture libre tmp_pic=0 repeat tmp_pic=tmp_pic+1 until object_exists(tmp_pic)=0 ' NOTE: colorer un picture apès sa création évite le clignotement blanc très bref picture tmp_pic : color tmp_pic,236,233,216 : hide tmp_pic : 2d_target_is tmp_pic ' cherche un sprite libre tmp_sprite=plateau% repeat tmp_sprite=tmp_sprite-1 until sprite_exists(tmp_sprite)=0 ' trace le cadre 2d_fill_on 2d_pen_color 0,0,0 : 2d_fill_color 0,0,0 2d_rectangle 3,3,78,78 2d_fill_off 2d_pen_color r%,g%,b% 2d_rectangle 0,0,81+0,81+0 2d_rectangle 1,1,80+0,80+0 2d_rectangle 2,2,79+0,79+0
' le capturer 2d_image_copy I_fond%,0,0,81+0,81+0 sprite tmp_sprite sprite_image_load tmp_sprite,I_fond% ' libere les ressources inutiles 2d_target_is 0 delete tmp_pic delete I_fond% end_sub
' sub encadre_on(coul,x,y) sprite_position coul,1+(y*81),1+(x*81) sprite_show coul end_sub
' sub encadre_off(coul) sprite_hide coul end_sub
' sub load_sprite(file$,N%,r$) dim_local tmp_pic,I_E_preparation%,I_E_affiche%,r%,g%,b%,compt% ' cherche un picture libre tmp_pic=0 repeat tmp_pic=tmp_pic+1 until object_exists(tmp_pic)=0 ' NOTE: colorer un picture apès sa création évite le clignotement blanc très bref picture tmp_pic : color tmp_pic,236,233,216 : hide tmp_pic : 2d_target_is tmp_pic
' cherche une image libre I_E_preparation%=0 repeat I_E_preparation%=I_E_preparation%+1 until object_exists(I_E_preparation%)=0 image I_E_preparation%
' cherche une image libre I_E_affiche%=0 repeat I_E_affiche%=I_E_affiche%+1 until object_exists(I_E_affiche%)=0 image I_E_affiche%
' charge le fichier pions file_load tmp_pic,"img/"+file$+".jpg" : width tmp_pic,81 : height tmp_pic,81 2d_image_copy I_E_preparation%,0,0,61,81 : 2d_clear : 2d_image_paste I_E_preparation%,11,0 ' ajoute des bords colorés if r$="rouge" r%=200 : g%=0 : b%=0 compt%=40 :' incrément de sprite pour la couleur rouge else r%=0 : g%=0 : b%=200 compt%=0 :' incrément de sprite pour la couleur bleu end_if ' 2d_fill_off 2d_pen_color r%,g%,b% : 2d_rectangle 10,1,71,80 : 2d_rectangle 10,1,71,79 : 2d_rectangle 10,1,71,78 2d_pen_color 1,1,1 : 2d_rectangle 0,0,81,81 : 2d_flood 5,1,r%,g%,b% : 2d_flood 75,1,r%,g%,b%
' capture l'image finale 2d_image_copy I_E_affiche%,0,0,81,81 ' fabrique et attribue un numero à un sprite en fonction de sa couleur repeat compt%=compt%+1 until sprites(compt%)=-1 sprites(compt%)=N% sprite compt% sprite_image_load compt%,I_E_affiche% ' libere les ressources inutiles 2d_target_is 0 delete tmp_pic delete I_E_preparation% delete I_E_affiche% end_sub
' sub POSITION_PIECE(N%,x,y) Pieces(x,y)=N% ' Type_Pieces = sprites(N%) sprite_position N%,1+(y*81),1+(x*81) end_sub
click_plateau: ' affiche les coordonnées de la case cliqué Ligne%=int(abs((mouse_y_position(plateau%)-1)/81)) : ' bord exclu Colonne%=int(abs((mouse_x_position(plateau%)-1)/81)) : ' bord exclu ' caption 0,"Ligne="+str$(Ligne%)+" Colonne="+str$(Colonne%)
' sélection/déselection if pieces(Ligne%,Colonne%)>-1 if Selection%=0 encadre_on(bleu%,Ligne%,Colonne%) ' l%=ligne% c%=colonne% Selection%=1 else encadre_off(bleu%) Selection%=0 end_if end_if
if pieces(Ligne%,Colonne%)=-1 and Selection%=Franchissable(Ligne%,Colonne%) POSITION_PIECE(pieces(l%,c%),Ligne%,Colonne%) encadre_off(bleu%) pieces(l%,c%)=-1 Selection%=0 end_if return
les subs sont 'presques' portables('presque' car elles utilisent des tableaux) EDIT: je viens d'avoir une illumination ,je vais integrer les tableaux dans les subs pour les rendre 100% portable! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 16:26 | |
| Bravo Silverman. Le déplacement est très propre et je pense que les ajouts que les procédures que j'ai ajouté dans ma version pourront être intégrée assez facilement dans cette version. En tout cas la sélection et l'affichage est très propre (pas de clignotement)
Note dans la version de Jean-Claude, il utilise fond.bmp et le programme de Silverman utilise fond.jpg mais vous pouvez soit transformer le bmp en jpg soit reprendre le jpg depuis les images de la version utilisant les pictures. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 16:45 | |
| A priori Sprite et scene2d n'acceptent pas les des images autre que bmp. Il faut que je vérifie. Changer les variables: là, ça va être difficile car je ne suis pas parti sur les mêmes bases que Jicehel. Je vais regarder ce que je peux faire.Non je vais plutôt attendre que Sylverman ai fait ce qu'il a dit dans son dernier message. - Sylverman a écrit:
- EDIT: je viens d'avoir une illumination drunken ,je vais integrer les tableaux dans les subs pour les rendre 100% portable! santa
A+
Dernière édition par Jean Claude le Dim 28 Fév 2016 - 16:53, édité 1 fois | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 16:52 | |
| Merci jicehel . En effet, j'ai converti les '.jpg' en '.bmp' en interne pour ne pas à avoir à recharger le zip que tu as fourni; j'essaie de me rapprocher au plus près de la structure du code et des ressources. voici les subs intégrées dans le code de jean-claude: - Code:
-
' Stratego_2D_v1_01.bas ' Problème à résoudre (BUG) ' 2) ' sprite_create_hide et sprite_show_all ne fonctionnent pas ' Travail à faire ' 1) message "Attention: vous risquez de vous mouiller les pieds..." ' je cherche des idées d'animation pour ce message.... ' portabilité Retourne_Dimension_Bandeau_Et_Bord() :' retourne bandeau%,bord% dim rep$,repimage$,tex$ dim n%,x%,y% DIM compt% DIM Largeur_Fond%,Hauteur_Fond% : Largeur_Fond% = 811 : Hauteur_Fond% = 811 ' * Déclaration des matrices de terrain DIM Franchissable(9,9), Pieces(9,9) DIM Ligne%, Colonne%, tmp%,tmp2%, c%, l% DIM Selection% : ' Si >=0 donne la case actuellement sélectionnée ' * 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% DIM I_Fond%, I_E_affiche%, I_E_preparation%, I_copy% width 0,811+(bord%*2) : height 0,811+bandeau%+bord%+20 :top 0,(screen_Y - height(0))/2 : left 0,(screen_x - width(0))/2 ' Menu (à développer par la suite) label aide main_menu 10 command_target_is 0 sub_menu 11 : parent 11,10 : caption 11,"Jeu" sub_menu 12 : parent 12,11 : caption 12,"Nouvelle partie contre l'ordinateur " sub_menu 13 : parent 13,11 : caption 13,"Nouvelle partie à 2 joueurs " sub_menu 14 : parent 14,11 : caption 14,"Charger une partie " sub_menu 15 : parent 15,11 : caption 15,"Sauver la partie " sub_menu 20 : parent 20,10 : caption 20,"Aide" SUB_MENU 21 : PARENT 21,20 : CAPTION 21,"Stratégo" : ON_CLICK 21,Aide SUB_MENU 22 : PARENT 22,20 : CAPTION 22,"Dispositions des pièces" : ON_CLICK 22,Aide SUB_MENU 23 : PARENT 23,20 : CAPTION 23,"Règles du jeu" : ON_CLICK 23,Aide SUB_MENU 24 : PARENT 24,20 : CAPTION 24,"Tactique" : ON_CLICK 24,Aide ' répertoire ' rep$=dir_current$+chr$(92) : repimage$=rep$+"img" : dir_change repimage$ ' scene2D 100 dim TypSel% : TypSel%=0 :' pour déterminer si c'est un clic de sélection (0) ou de déplacement(1) label click ' scene2d 100 : on_click 100,click : file_load 100,"Fond.bmp" : width 100,811 : height 100,811 ' les cases dim Hcase%,Wcase%,CaseSel%:' Hcase%=Hauteur d'une case, Wcase%=largeur d'une case, CaseSel%= case sélectionnée dim cases%(100) , Top_cases%(100) , Left_cases%(100) , ContenuCase%(100) Hcase%=80 : Wcase%=80 init_case() ' création des sprites (à développer) ' * Définition des cases franchissables ou non 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) = -1 : Franchissable(4,3) = -1 Franchissable(4,6) = -1 : Franchissable(4,7) = -1 Franchissable(5,2) = -1 : Franchissable(5,3) = -1 Franchissable(5,6) = -1 : Franchissable(5,7) = -1 O_Drapeau% = 0 O_Espion% = 1 O_Eclaireur% = 2 O_Demineur% = 3 O_Sergent% = 4 O_Lieutenant% = 5 O_Capitaine% = 6 O_Major% = 7 O_Colonel% = 8 O_General% = 9 O_Marechal% = 10 O_Bombe% = 11 sprite_create_hide ' plateau make_plateau(99) ' BLEU ' bombe1 file$="Bomb" load_sprite(file$,O_Bombe%,"bleu") POSITION_PIECE(1,0,2) ' drapeau file$="Flag" load_sprite(file$,O_Drapeau%,"bleu") POSITION_PIECE(2,0,3) ' bombe2 file$="Captain" load_sprite(file$,O_Capitaine%,"bleu") POSITION_PIECE(3,0,4) ' ROUGE ' bombe1 file$="Bomb" load_sprite(file$,O_Bombe%+40,"rouge") POSITION_PIECE(1+40,9,2) ' drapeau file$="Flag" load_sprite(file$,O_Drapeau%+40,"rouge") POSITION_PIECE(2+40,9,3) ' bombe2 file$="Captain" load_sprite(file$,O_Capitaine%+40,"rouge") POSITION_PIECE(3+40,9,4) ' cadres colorés autour des pièces (fabriqué en dernier pour recouvrir les autres sprites) ' rouge make_encadre(255,0,0) :' numero de ce sprite = plateau%-1 rouge% = plateau%-1 ' bleu make_encadre(0,0,255) :' numero de ce sprite = plateau%-2 bleu% = plateau%-2 ' montre les sprites sprite_show plateau% for tmp%=0 to max_sprite% if sprites(tmp%)>-1 then sprite_show tmp% next tmp% ' liste des images et grade et nombre par joueur ' à noter: les bombes et le drapeau ne sont pas déplaçable ' les bombes => "Bomb.bmp"=11 6/Joueur . le drapeau => "Flag.bmp"=0 1/Joueur ' l'espion => "Spy.bmp"=1 1/Joueur . les Éclaireurs => "Scout.bmp"=2 8/Joueur ' les Démineurs => "Miner.bmp"=3 5/Joueur . les Sergents => "Sergeant.bmp"=4 4/Joueur ' les Lieutenants => "Lieutenant.bmp"=5 4/Joueur. les Capitaines => "Captain.bmp"=6 4/Joueur ' les Commandants => "Major.bmp"=7 4/Joueur . les Colonels => "Colonel.bmp"=8 3/Joueur ' le Général => "General.bmp"=9 1/Joueur . le Maréchal => "Marshal.bmp"=10 1/Joueur ' sur proposition de Silverman les variables pour gérer les pions dim positionX%,positionY%,grade%,etat%,visibilite%,pion%(80,5) ' exemple ' positionX%=1 : positionY%=2 : grade%=3 : etat%=4 : visibilite%=5 ' lecture=pion%(p%,etat) rem ======================================== Notes diverses (Partie à supprimer) ' affiche() : ' Sub de test à supprimer à la fin rem ============================================================================ END rem ============================================================================ ' fabrique le plateau sub make_plateau(num%) if variable("plateau%")=0 ' * Déclaration des variables pour les sprites DIM file$,plateau%,max_sprite% : max_sprite%=80 : ' sprites DIM rouge%,bleu%,vert%,blanc% DIM sprites(max_sprite%) label click_plateau FOR compt%=0 to max_sprite% : sprites(compt%)= -1 : NEXT compt% plateau%=num% end_if ' dim_local I_fond%,tmp_pic ' cherche une image libre I_fond%=0 repeat I_fond%=I_fond%+1 until object_exists(I_fond%)=0 image I_fond% ' cherche un picture libre tmp_pic=0 repeat tmp_pic=tmp_pic+1 until object_exists(tmp_pic)=0 ' NOTE: colorer un picture apès sa création évite le clignotement blanc très bref picture tmp_pic : color tmp_pic,236,233,216 : hide tmp_pic : 2d_target_is tmp_pic ' charge le fichier plateau file_load tmp_pic,"img/Fond.jpg": width tmp_pic,Largeur_fond% : height tmp_pic,Hauteur_Fond% 2d_image_copy I_fond%,0,0,Largeur_fond%,Hauteur_Fond% ' fabrique le plateau scene2D plateau% color plateau%,236,233,216 on_click plateau%,click_plateau ' taille et centrage du plateau width plateau%,Largeur_fond% : height plateau%,Hauteur_Fond% top plateau%,(height(0)-Hauteur_Fond%)/2 : left plateau%,(width(0)-Largeur_Fond%)/2 ' attribue un numéro de sprite pour le plateau sprite plateau% sprite_image_load plateau%,I_fond% sprite_position plateau%,0,0 ' libere les ressources inutiles 2d_target_is 0 delete tmp_pic delete I_fond% end_sub ' fabrique un cadre coloré pour entourer le pion sub make_encadre(r%,g%,b%) dim_local tmp_pic,tmp_sprite ' cherche une image libre I_fond%=0 repeat I_fond%=I_fond%+1 until object_exists(I_fond%)=0 image I_fond% ' cherche un picture libre tmp_pic=0 repeat tmp_pic=tmp_pic+1 until object_exists(tmp_pic)=0 ' NOTE: colorer un picture apès sa création évite le clignotement blanc très bref picture tmp_pic : color tmp_pic,236,233,216 : hide tmp_pic : 2d_target_is tmp_pic ' cherche un sprite libre tmp_sprite=plateau% repeat tmp_sprite=tmp_sprite-1 until sprite_exists(tmp_sprite)=0 ' trace le cadre 2d_fill_on 2d_pen_color 0,0,0 : 2d_fill_color 0,0,0 2d_rectangle 3,3,78,78 2d_fill_off 2d_pen_color r%,g%,b% 2d_rectangle 0,0,81+0,81+0 2d_rectangle 1,1,80+0,80+0 2d_rectangle 2,2,79+0,79+0 ' le capturer 2d_image_copy I_fond%,0,0,81+0,81+0 sprite tmp_sprite sprite_image_load tmp_sprite,I_fond% ' libere les ressources inutiles 2d_target_is 0 delete tmp_pic delete I_fond% end_sub ' place le cadre coloré sur le plateau sub encadre_on(coul,x,y) sprite_position coul,1+(y*81),1+(x*81) sprite_show coul end_sub ' cache le cadre coloré sub encadre_off(coul) sprite_hide coul end_sub ' charge les pions sub load_sprite(file$,N%,r$) dim_local tmp_pic,I_E_preparation%,I_E_affiche%,r%,g%,b%,compt% ' cherche un picture libre tmp_pic=0 repeat tmp_pic=tmp_pic+1 until object_exists(tmp_pic)=0 ' NOTE: colorer un picture apès sa création évite le clignotement blanc très bref picture tmp_pic : color tmp_pic,236,233,216 : hide tmp_pic : 2d_target_is tmp_pic ' cherche une image libre I_E_preparation%=0 repeat I_E_preparation%=I_E_preparation%+1 until object_exists(I_E_preparation%)=0 image I_E_preparation% ' cherche une image libre I_E_affiche%=0 repeat I_E_affiche%=I_E_affiche%+1 until object_exists(I_E_affiche%)=0 image I_E_affiche% ' charge le fichier pions file_load tmp_pic,"img/"+file$+".jpg" : width tmp_pic,81 : height tmp_pic,81 2d_image_copy I_E_preparation%,0,0,61,81 : 2d_clear : 2d_image_paste I_E_preparation%,11,0 ' ajoute des bords colorés if r$="rouge" r%=200 : g%=0 : b%=0 compt%=40 :' incrément de sprite pour la couleur rouge else r%=0 : g%=0 : b%=200 compt%=0 :' incrément de sprite pour la couleur bleu end_if ' 2d_fill_off 2d_pen_color r%,g%,b% : 2d_rectangle 10,1,71,80 : 2d_rectangle 10,1,71,79 : 2d_rectangle 10,1,71,78 2d_pen_color 1,1,1 : 2d_rectangle 0,0,81,81 : 2d_flood 5,1,r%,g%,b% : 2d_flood 75,1,r%,g%,b% ' capture l'image finale 2d_image_copy I_E_affiche%,0,0,81,81 ' fabrique et attribue un numero à un sprite en fonction de sa couleur repeat compt%=compt%+1 until sprites(compt%)=-1 sprites(compt%)=N% sprite compt% sprite_image_load compt%,I_E_affiche% ' libere les ressources inutiles 2d_target_is 0 delete tmp_pic delete I_E_preparation% delete I_E_affiche% end_sub ' positionne le pion sur le plateau sub POSITION_PIECE(N%,x,y) Pieces(x,y)=N% ' Type_Pieces = sprites(N%) sprite_position N%,1+(y*81),1+(x*81) end_sub ' SUB provisoire SUB affiche() dim_local i% for i%=1 to 100 caption 0,str$(cases%(i%))+" => "+str$(Top_cases%(cases%(i%)))+"/"+str$(Left_cases%(cases%(i%))) : stop next i% END_SUB rem ============================================================================ ' test du plateau + deplacement(incomplet) click_plateau: ' affiche les coordonnées de la case cliqué Ligne%=int(abs((mouse_y_position(plateau%)-1)/81)) : ' bord exclu Colonne%=int(abs((mouse_x_position(plateau%)-1)/81)) : ' bord exclu ' caption 0,"Ligne="+str$(Ligne%)+" Colonne="+str$(Colonne%) ' sélection/déselection if pieces(Ligne%,Colonne%)>-1 if Selection%=0 encadre_on(bleu%,Ligne%,Colonne%) ' l%=ligne% c%=colonne% Selection%=1 else encadre_off(bleu%) Selection%=0 end_if end_if if pieces(Ligne%,Colonne%)=-1 and Selection%=Franchissable(Ligne%,Colonne%) POSITION_PIECE(pieces(l%,c%),Ligne%,Colonne%) encadre_off(bleu%) pieces(l%,c%)=-1 Selection%=0 end_if return click: off_click 100:' neutraliser pendant le traitement du click ' retrouver la case qui correspond au clic x%=mouse_x_position(100) : y%=mouse_y_position(100) for n%=1 to 100 if y%>Top_cases%(cases%(n%)) and y%<Top_cases%(cases%(n%))+Hcase% if x%>Left_cases%(cases%(n%)) and x%<Left_cases%(cases%(n%))+Wcase% CaseSel%=cases%(n%) ' prévoir une animation de la case sélectionnée (Encadré, changement de couleur, etc.) caption 0,str$(CaseSel%) end_if end_if next n% ' gerer les cases des lacs if CaseSel%=43 or CaseSel%=44 or CaseSel%=47 or CaseSel%=48 or CaseSel%=53 or CaseSel%=54 or CaseSel%=57 or CaseSel%=58 ' prévoir une animation message "Attention: vous risquez de vous mouiller les pieds..." ' on sort sans changer TypSel% et on réactive le clic on_click 100,click : RETURN end_if ' Sélection ou déplacement if TypSel%=0 ' c'est une sélection ' regarde ce qu'il y a dans la case sélectionnée Contenu_de_la_Case(CaseSel%) ' agit en fonction du résultat du contenu ' STOP ' gestion du prochain clic TypSel%=1: ' pour que le prochain clic soit un déplacement end_if if TypSel%=1 ' c'est un déplacement ' regarde ce qu'il y a dans la case visée Contenu_de_la_Case(CaseSel%) ' déplace le pion si c'est possible (pas chez un collègue) ' agit en fonction du résultat du contenu (gain ou défaite ou nul) ' STOP ' gestion du prochain clic TypSel%=0: ' pour que le prochain clic soit une sélection end_if on_click 100,click RETURN rem ============================================================================ SUB Contenu_de_la_Case(NumCase%) if ContenuCase%(NumCase%)=0 message " la case n°"+str$(NumCase%)+" est vide (à développer)" :' stop else message " retourne le contenu de la case n°"+str$(NumCase%)+" (à développer)" :' stop end_if END_SUB rem ============================================================================ SUB init_case() dim_local tt%,ll%,i%, j%, k% for j%=0 to 9 for k% = 1 to 10 i% = j%*10 + k% cases%(i%)=i% : ContenuCase%(cases%(i%))=0 : Top_cases%(cases%(i%))=tt% : Left_cases%(cases%(i%))=ll% ll%=ll%+Wcase% next k% ll%=0 : tt%=tt%+Hcase% next j% END_SUB rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ====================== Aide de Papydall Début ============================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Aide: select number_click case 21 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 22 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 23 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 ce 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 24 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) ==================================== rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ======================== =================================================== SUB Retourne_Dimension_Bandeau_Et_Bord() ' controle de la position de la procédure dans le programme IF NUMBER_OBJECTS>0 message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !" terminate END_IF ' création des VARIABLES GLOBALES IF VARIABLE("bandeau%")=0 then DIM bandeau% IF VARIABLE("bord%")=0 then DIM bord% ' Calcul de bandeau% et bord% dim_local w0%,h0%,w1%,h1%,w2%,h2% w0%=WIDTH(0) : h0%=HEIGHT(0) picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1) w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2 ' Suppression du Picture devenu inutile delete 1 END_SUB Par contre, il va falloir faire un peu de ménage dans le source Pour les variables, c'est bon, je me suis arrangé. La main passe | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 17:05 | |
| Cette fois, je suis largué.
Sylverman, je te propose de reprendre le flambeau car vous allez trop vite pour moi. Je veux dire que je reste à disposition, mais je préfère que tu reprennes le code, car tu sais où tu vas. Moi je suis parti à l'aventure sans vision à long terme.
A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) Dim 28 Fév 2016 - 17:47 | |
| OK, Silverman, peux tu nettoyer le code des variables qui ne sont plus utiles ? Je pense que puisque l'on part sur une organisation commune, on peut développer les 2 versions en parallèle Le plus dur sera de faire la partie intelligence de l'ordinateur en mode humain / ordi. Moi c'est un truc que je n'arrive pas à bien penser mais certains y arrive assez facilement (les chanceux). Comme les programmes sont homogéniser, que ce soit fait dans une des versions ou dans l'autre, on pourra la reprendre. Moi, j'attend un peu Klaus pour voir s'il arrive à adapter son système d'écriture de règles et aussi pour pouvoir juger réellement si cela facilite l'écriture des règles. Je n'arrive pas encore à en juger mais ça permettrait sans doute de faire des espèce de moteur de jeux standard où l'on pourrait associer une image à un "acteur" ou à un objet définir quelques paramètres et écrire les règles pour avoir un jeu, ce qui me parait intéressant. C'est un vrai concept en soit, alors j'attends de voir et connaissant Klaus, ça ne m'étonnerait vraiment pas qu'il y arrive (il est bien parti pour ça d'ailleurs). | |
| | | Contenu sponsorisé
| Sujet: Re: Stratégo Colaboratif (version sur un scene2d) | |
| |
| | | | Stratégo Colaboratif (version sur un scene2d) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |