FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Stratego collaboratif Emptypar Klaus Aujourd'hui à 14:02

» item_index(résolu)
Stratego collaboratif Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Stratego collaboratif Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Stratego collaboratif Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Stratego collaboratif Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Stratego collaboratif Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Stratego collaboratif Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Stratego collaboratif Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Stratego collaboratif Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Stratego collaboratif Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Stratego collaboratif Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Stratego collaboratif Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Stratego collaboratif Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Stratego collaboratif Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Stratego collaboratif Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-55%
Le deal à ne pas rater :
Coffret d’outils – STANLEY – STMT0-74101 – 38 pièces – ...
21.99 € 49.04 €
Voir le deal

 

 Stratego collaboratif

Aller en bas 
+5
Yannick
JL35
silverman
Jean Claude
Jicehel
9 participants
Aller à la page : 1, 2, 3, 4, 5  Suivant
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 0:14

Voilà, je jette ici l'embryon d'un Stratego.

Le début du source avec le plateau et les pions.

Le programme est embryonnaire et il est tard, je vais aller me coucher bien que j'ai une erreur dans la copie du fond quand je déplace une pièce mais je suis trop fatigué pour bien réfléchir alors je poste dans l'état.

Le but serait que chacun donne ses idées pour améliorer bien sûr mais surtout que chacun développe une fonction. Par exemple: dise qu'il gère le placement des pions sur le plateau pour remplir le tableau des pièces, un autre dise qu'il gère les déplacements, un autre qu'il résolve les 'combats', etc ...

http://www.fichier-zip.com/2016/02/25/stratego/
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 8:42

J'ai téléchargé, et testé.

Pour moi, ça ne va pas être simple, le code est déjà complexe. C'est le problème quand on ne l'a pas écrit soi-même.

Effectivement, l'image de fond est modifiée l'ors du déplacement d'une pièce.
En remettant en service la ligne 245, on voit dans le bandeau que les numéros des cases cliquées ne correspondent pas à la réalité, c'est sans doute là le problème....

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 11:27

Tu es sur ?
En bas tu a la ligne 0, en haut la ligne 9
A gauche la colonne 0 et à droite la colonne 9

Je n'ai pas eu le temps de trop commenté le source hier mais j'ai essayé de le rendre le plus clair possible sauf à la fin comme je voulais finir un début de moteur qui tourne.

Je peux prendre en charge la routine de déplacement et j'essayerais de faire une passe de commentaires sur le code ce soir.

Si tu te poses des questions, tu ne sera pas le seul, alors n'hésites pas à les poster ici après avoir regardé le code source, j'essayerais d'y répondre ou de corriger si c'est suite à une erreur de ma part. Après dans quelques temps, ce ne sera plus mon code mais le notre et ça devra donc être plus clair sinon c'est qu'il faudra travailler pour l'éclaircir. N'hésites pas à le triturer pour le rendre plus facilement compréhensible. Moi, comme j'ai l'esprit tordu, j'ai du mal à rendre les choses simples...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 12:03

Oui OK,
Le problème est que d'une part on a des numéros de cases, de l'autre des positions de la pièce.

Ce soir, quand tu changeras le zip, mets les éléments dans un dossier car je dézippe sur le bureau et je voudrais le tout dans un seul dossier.

Si j'ai un peu de temps cet après-midi, je vais essayer de comprendre le code.

A+

Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 14:28

OK et si tu veux, rajoute les commentaires avec ce que tu as compris comme ça si tu le poste ce soir, je n'aurais pas à le faire d'une part et en plus je pourrais vérifier que l'on s'est bien compris Wink

Sinon, pour le zip, normalement, on n'en a plus besoin pour le moment puisque l'on a les graphiques. Tous les graphiques sont dans un répertoire img. Seul le code source est à la racine. Je l'ai mis dedans puisque je me suis dit que pour la version de base, ce serait plus pratique à récupérer avec le zip (ça évite un copier / coller avec risque de transformation ou de suppression de caractères), mais normalement maintenant, on peut échanger directement les évolutions sur le forum (sans avoir à retélécharger le zip) sauf si à la fin on rajoute des musiques ou des bruitage. (Qui sait, si le jeu est sympa, bignono nous fera peut être un (ou plusieurs) thème original. Wink
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 18:18

Pourquoi ne pas utiliser des sprites? l'image de fond, les pièces,... tout est rectangulaire, ça ne serait pas adapté?
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 19:01

Je me suis posé la même question Silverman...

Bon je n'ai pas eu le temps de regarder le code en détail, et ce ne sera pas pour ce soir.

Pour le zip, c'est OK tant qu'on ajoute pas des images.

Une Question Importante: Pangine2D ne conviendrait-il pas mieux pour ce jeu.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyJeu 25 Fév 2016 - 21:20

Les sprites sont très mal adaptés je pense (pas de gestion des clics etc ...) il me semble. En fait je trouve qu'ils n'apporteraient pas grand chose pour ce type de jeux, mais je peux me tromper et vous pouvez proposer d'autres approches. J'ai juste proposer une ossature avec quelques graphiques et le but et surtout d'essayer de construire un programme de façon collaborative donc avant d'aller plus loin, on peut essayer différentes approches.

Tout est possible à ce stade et rien n'est validé ou écrit dans le marbre.

Au contraire ce sera intéressant , je pense de voir pourquoi on choisit telle solution ou telle solution.

N'héistez pas à proposer, corriger, modifier, critiquer, etc ... On est là pour se faire un mécano avec les atouts et idées de chacun et si on arrive à prendre un peu du meilleur de chacun, le résultat sera sans doute intéressant.

Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 10:12

Bon, j'aurais essayé.
Je ne parviens pas à comprendre le code.
Il y a des objets Panoramic (comme IMAGE_...) que je n'ai jamais utilisé.
Je vais, pour le moment, rester spectateur et je ferais mes commentaires si besoin.

En attendant j'ai pioché ça dans Wikipédia
règles du stratégo:

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 14:11

OK, alors, je retournerais sur le code ce soir pour essayer de le rendre plus clair et pour avancer sur la procédure de déplacement d'une pièce vers une case vide.

Je rajouterais du commentaire. Après sinon l'idée c'est de charger les objets graphiques fond, pièces etc ...
De travailler sur une image et de recopier cette image de travail quand elle est prête vers l'écran affiché.

Je contrôlerais ce soir que c'est bien ce que j'ai codé et je rajouterais du commentaire avant de le publier sur le forum pour que tu puisse MAJ.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 14:41

Eh, les mecs, quand vous aurez fini de confondre le futur et le conditionnel !
'j'aurais essayé', 'je ferais mes commentaires', 'je retournerais', je rajouterais', je contrôlerais', 'je rajouterais'
Sad
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Stratego collaboratif Empty
MessageSujet: re   Stratego collaboratif EmptyVen 26 Fév 2016 - 14:45

Je viens de lire les règles du jeu.
Le code, je suis un peu comme Jean Claude Wink .

On peut utiliser les sprites car les déplacements sont simples (avant,arrière,droite,gauche) 
le click à déjà été détourné sur d' autres jeux comme le taquin. On doit en avoir une trace quelque part.

Le plus compliqué est le placement des pièces au départ qui est à la volonté des joueurs.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 15:16

oui, mais pour ce genre de jeu honnêtement, je ne sais pas ce qu'apporte les sprites. Je trouve les sprites limitatifs pour ce genre d'usage et je trouve qu'ils n'apporte rien d'intéressant (Toujours dans ce cadre). Si quelqu'un veut faire une maquette fonctionnelle basé sur les sprites pour me montrer que j'ai tord par contre, je ne demande pas mieux.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 15:55

Une petite remarque technique, concernant les spites, Jicehel.

Le grand avantage des sprites est leur couleur de transparence, ce qui permet de donner n'importe quelle forme à un objet ou personnage, sans avoir des modifications complexes du dessin à faire.

Certes, il y a le problème du clic. Mais je pense que de toutes façons, un tel jeu doit garder, dans des tables, tous les caractéristiques de chaque objet, et donc les coordonnées et dimensions. Ce qui permet de déduire le sprite ciblé à l'endroit du clic, ou au contraire déterminer l'endroit du terrain de jeu clique.

Je suis peut-être tout à fait en-dehors du sujet, auquel cas je te demande de ne tenir aucun cas de mon commentaire, puisque je n'interviens pas sur le fond du sujet que tu proposes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 17:20

C'est vrai que les sprites offrent cet avantage de la transparence.

Voila comment je vois les choses:
Pour les déplacement des sprites le clic dans le scene2d peut nous servir à repérer la case qui est cliqué.
les cases seraient numérotées de 1 à 100 [cases%(n%)], et pour chacune on définie dès le début la position du coin supérieur-gauche par Top_cases%(cases%(n%)) et Left_cases%(cases%(n%))
Ces 2 variables nous servent d'une part à définir quelle case est cliquée en fonction de la position de la souris et ensuite à positionner le Sprite dans la case (si c'est le moment du déplacement.

Il y a une chose à ne pas oublier c'est que chaque pion a 2 états. Un état visible, et un état invisible, du moins pour les pions joués par l'ordinateur, (je suppose que que l'on joues contre l'ordinateur).

Je vais tenter de mettre ça en pratique, si j'ai un minimum de temps.

De ton coté Jicehel, fais ce que tu as dit plus bas, puis nous ferons le point.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptyVen 26 Fév 2016 - 17:26

oui je suis d'accord Klaus, la transparence est sympas pour les sprites quand on en a besoin mais pour des pions pleins rectangulaires, la transparence n'est pas utile. C'est bien pour cela que je dis que je ne pense pas que les sprites apportent grand chose dans ce contexte. Pour simplifier la gestion, j'avais pensé aussi à créer un picture par case sur un fond noir pour simplifier la gestion des clics, mais un clic sur un picture divisé de façon matricielle est déjà tellement simple que je ne suis pas sûr que ce soit nécessaire.

Il faut juste que je prenne quelques minutes ce soir pour corriger le problème de copie de colonne ou de ligne que j'ai fais un peu trop vite avant hier soir et pour lequel j'ai dû faire une erreur de logique.

J'aurais dû numéroter les lignes et les colonnes dans le même sens que les axes de l'écran pour simplifier d'avantage.

Je vais peut être quand même faire le test d'une version avec les pictures pour voir ce que ça donne, mais n'hésitez pas à jouer avec le code pour faire les essais que vous voulez pour trouver la solution la plus simple et la plus jolie.


Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 0:25

Voilà, j'ai inversé le sens de numérotation des lignes pour que les formules soient plus simples et j'ai corrigé le petit problème de logique dans la copie de l'image de fond (lié au fait qu'il fallait réfléchir les bords "à l'envers" par rapport à la numérotation des lignes)

J'ai rajouté la gestion des cases infranchissables et mis le principe des tours avec une petite lumière temporaire (en attendant un affichage plus joli) qui indique les tours. Je me suis arrêté là, comme ça on peut faire le point déjà sur cette partie Jean-Claude. Tu pourras me dire si c'est plus clair et on pourra voir si ta méthode est meilleure.

Edit: Vous trouverez les images dans le zip du premier message

Code:
' -------------------------
' * Structure du Stratego *
' -------------------------

LABEL click_plateau

' * Déclaration des variables
DIM compt%

' * Déclaration des variables pour les images
DIM I_Fond%          : ' Numéro du picture où l'on charge l'image de fond (on n'y touche pas)
DIM I_E_affiche%     : ' Numéro du picture qui sera affiché
DIM I_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

' * 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%

' * Déclaration des constantes contenant les dimensions de l'image de fond
DIM Largeur_Fond%,Hauteur_Fond% : Largeur_Fond% = 811 : Hauteur_Fond% = 811

' * 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 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)


' * 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  : I_Fond% = compt%  : TOP compt%, -2000
FILE_LOAD compt%,"img/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  : I_E_affiche% = compt% : TOP compt%, (HEIGHT(0)-Hauteur_Fond%)/2
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  : I_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 de toutes les images correspondant aux différents pions
PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Bombe% = compt% : O_Bombe% = 11
FILE_LOAD compt%,"img/Bomb.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Capitaine% = compt% : O_Capitaine% = 6
FILE_LOAD compt%,"img/Captain.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Colonel% = compt% :O_Colonel% = 8
FILE_LOAD compt%,"img/Colonel.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Drapeau% = compt% : O_Drapeau% = 0
FILE_LOAD compt%,"img/Flag.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_General% = compt%  : O_General% = 9
FILE_LOAD compt%,"img/General.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Lieutenant% = compt% : O_Lieutenant% = 5
FILE_LOAD compt%,"img/Lieutenant.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Major% = compt%  : O_Major% = 7
FILE_LOAD compt%,"img/Major.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Marechal% = compt% : O_Marechal% = 10
FILE_LOAD compt%,"img/Marshal.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Demineur% = compt% : O_Demineur% = 3
FILE_LOAD compt%,"img/Miner.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Eclaireur% = compt% : O_Eclaireur% =  2
FILE_LOAD compt%,"img/Scout.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Sergent% = compt% :O_Sergent% = 4
FILE_LOAD compt%,"img/Sergeant.jpg" : compt% = compt% + 1

PICTURE compt% : HIDE compt% : HEIGHT compt%,80 : WIDTH compt%,60
TOP compt%, 5000  : I_Espion% = compt%  : O_Espion% = 1
FILE_LOAD compt%,"img/Spy.jpg" : compt% = compt% + 1

Init()
Preparation()
Image_Recopy()

ON_CLICK  I_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%
   Tour1()

   ' * Section à remplacer quand le placement des pièces sera programmé juste pour afficher quelques pions le temps
   ' * de faire les test
  
   ' * 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
  
END_SUB

SUB Trace_piece(p%,c%,l%)
DIM_LOCAL image%
         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,60,79
            2D_TARGET_IS I_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%)*81 +  2,(l%)*81 + 2, (c%+1)*81+1,(l%+1)*81
            2D_IMAGE_PASTE I_copy%,(c%)*81 +  12,(l%)*81 + 2
         END_IF
END_SUB

SUB Preparation()
DIM_LOCAL piece%
   2D_TARGET_IS I_Fond% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond%
   2D_TARGET_IS I_E_preparation% : 2D_IMAGE_PASTE I_copy%,0,0
   FOR Ligne% = 0 TO 9
     FOR Colonne% = 0 TO 9
         piece% = Pieces(Ligne%,Colonne%)
         Trace_piece(piece%,Colonne%,Ligne%)
     NEXT Colonne%
   NEXT Ligne%
END_SUB

SUB Image_Recopy()
   2D_TARGET_IS I_E_preparation% : 2D_IMAGE_COPY I_copy%,0,0,Largeur_Fond%,Hauteur_Fond%
   2D_TARGET_IS I_E_affiche%  : 2D_IMAGE_PASTE I_copy%,0,0
END_SUB

SUB encadre(cc%,lc%)
       2D_LINE (c%  )*81+2,(l%  )*81 + 2,(c%+1)*81+1,(l%  )*81 + 2
       2D_LINE (c%+1)*81+1,(l%  )*81 + 2,(c%+1)*81+1,(l%+1)*81 + 2
       2D_LINE (c%+1)*81+1,(l%+1)*81 + 2,(c%  )*81+2,(l%+1)*81 + 2
       2D_LINE (c%  )*81+2,(l%+1)*81 + 2,(c%  )*81+2,(l%  )*81 + 2
END_SUB

SUB Test_deplacement(Type_P%,C_d%,L_d%,C_a%,L_a%)
DIM_LOCAL Boucle%,x_sup%,y_sup%,x_inf%,y_inf%
'  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 EXIT_SUB
  IF Type_P% <> 2
      IF ABS(L_d% - L_a%) > 1 OR ABS(C_d% - C_a%) > 1
         EXIT_SUB
      ELSE
          ' CAPTION 0,"Deplace la piece de : "+STR$(L_d%)+","+STR$(C_d%)+" en :"+STR$(L_a%)+","+STR$(C_a%)
          IF L_d% > L_a%
             y_inf% =  (L_d%+1)*81 + 2
             y_sup% =  (L_a%)*81
          ELSE
             y_inf% =  (L_a%+1)*81 + 2
             y_sup% =  (L_d%)*81
          END_IF
          IF C_d% > C_a%
             x_inf% =  (C_a%)*81
             x_sup% =  (C_d%+1)*81+1
          ELSE
             x_inf% =  (C_d%)*81
             x_sup% =  (C_a%+1)*81+1
          END_IF
          2D_TARGET_IS I_Fond% : 2D_IMAGE_COPY I_copy%,x_inf%,y_sup%, x_sup%, y_inf%
          2D_TARGET_IS I_E_preparation% : 2D_IMAGE_PASTE I_copy%,x_inf%,y_sup%
          Pieces(L_a%,C_a%) = Pieces(L_d%,C_d%) : Pieces(L_d%,C_d%) = -1 : Sel_X% = -1
          Trace_Piece(Pieces(L_a%,C_a%),C_a%,L_a%)
          Image_Recopy()
          IF Tour% = 1 THEN Tour2() : ELSE : Tour1()
      END_IF
  ELSE
  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 I_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 I_E_affiche%
END_SUB



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%)
  IF tmp% >= 0
    IF Tour% = 1 AND tmp% < 11 AND tmp% > 0
       IF Sel_X% >= 0 THEN Image_Recopy()
       Sel_X% = c% : Sel_Y% = l%
       2D_PEN_COLOR 200,0,0 : encadre(c%,l%)
    ELSE
      IF Tour% = 2 AND tmp% > 20 AND tmp% < 31
         IF Sel_X% >= 0 THEN Image_Recopy()
         Sel_X% = c% : Sel_Y% = l%
         2D_PEN_COLOR 0,0,200 : encadre(c%,l%)
      END_IF
    END_IF
  ELSE
    IF Sel_X% > 0 AND Franchissable(l%,c%) > 0
       Test_deplacement(Pieces(Sel_X% , Sel_Y%),Sel_X% , Sel_Y%,c%,l%)
    END_IF
  END_IF
ON_CLICK  I_E_affiche%,click_plateau
RETURN
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 2:41

Je me permets d'apporter une petite contribution: un générateur de fichier de règles. C'est une maquette, fonctionnelle pour l'essentiel. Il manque encore des fonctions pour changer l'ordre des règles. Mais on peut créer des objets avec certains attributs, et les utiliser dans des règles qu'un peut créer. Un clic sur une règle existante affiche son détail dans les champs sur la droite. On peut aussi modifier ou supprimer une règle. On peut bien sûr créer, modifier ou supprimer un objet. Mais attention: dans cette version, il n'y a pas encore de contrôle, en cas de suppression d'un objet, si cet objet est encore utilisé dans une règle, et il n'y a pas non plus l'ajustement des références aux objets, dans les règles, suite à la suppression d'un objet au milieu de la liste. Ca viendra.

C'est encore très simple, et on peut ajouter plein de choses dans ce schéma. Si cela peut présenter un intérêt, je peux faire une SUB d'application des règles, par rapport à une situation donnée... Ca peut être un noyau de moteur de jeu, géré par des règles paramétrables par un tel fichier. Voici le programme:
Code:
' moteur_de_jeu_definir_regles.bas

label nouveau, ouvrir, fermer, save, saveas, sortir
label creer_objet, clic_type_objet, select_objet, modifier_objet, supprimer_objet
label clic_sujet_regle, clic_cible_regle, clic_relation_regle, clic_action_regle
label creer_regle, modifier_regle, supprimer_regle, clic_finir_regle, select_regles

dim n_objets%
dim n_regles%

dim regles$, no%, no1%, no2%
dim no_list_objets%, no_nom_objet%, no_nature_objet%, no_vie_objet%
dim no_list_regles%, no_sujet_regle%, no_relation_regle%, no_cible_regle%
dim no_action_regle%, no_N_regle%, no_finir_regle%, no_open_dialog%, no_save_dialog%
dim index_nature_objet%, index_list_objets%, index_list_regles%, index_relation_regle%
dim index_action_regle%, index_finir_regle%, index_regle%
dim regle_sujet%, regle_cible%

full_space 0

no% = no% + 1 : main_menu no% : no1% = no%
no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Fichiers"
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nouveau"
  on_click no%, nouveau
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Ouvrir..."
  on_click no%,ouvrir
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Fermer"
  on_click no%,fermer
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer"
  on_click no%,save
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Enregistrer sous..."
  on_click no%,saveas
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Sortir"
  on_click no%,sortir
no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Objets"
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nouveau"
  on_click no%, creer_objet
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Modifier"
  on_click no%,modifier_objet
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer"
  on_click no%,supprimer_objet
no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Règles"
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Nouveau"
  on_click no%, creer_regle
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Modifier"
  on_click no%,modifier_regle
no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Supprimer"
  on_click no%,supprimer_regle

no% = no% + 1 : alpha no% : top no%,10 : left no%,10 : caption no%,"Objets:"
no% = no% + 1 : list no% : no_list_objets% = no% : top no%,30 : left no%,10 : width no%,150 : height no%,400
  on_click no%,select_objet
no% = no% + 1 : dlist no%

no% = no% + 1 : alpha no% : top no%,30 : left no%,180 : caption no%,"Nom:"
no% = no% + 1 : edit no% : no_nom_objet% = no% : top no%,30 :left no%,220 : width no%,100
no% = no% + 1 : alpha no% : top no%,60 : left no%,180 : caption no%,"Nature:"
no% = no% + 1 : combo no% : no_nature_objet% = no% : top no%,60 :left no%,220 : width no%,100
  item_add no%,"Décor"
  item_add no%,"Personnage"
  item_add no%,"Objet"
  on_click no%,clic_type_objet
no% = no% + 1 : alpha no% : top no%,90 : left no%,180 : caption no%,"Points de vie:"
no% = no% + 1 : spin no% : no_vie_objet% = no% : top no%,90 :left no%,260 : width no%,60

no% = no% + 1 : alpha no% : top no%,10 : left no%,360 : caption no%,"Règles:"
no% = no% + 1 : list no% : no_list_regles% = no% : top no%,30 : left no%,360 : width no%,500 : height no%,400
  on_click no%,select_regles
no% = no% + 1 : dlist no%
no% = no% + 1 : alpha no% : top no%,30 : left no%,970 : caption no%,"Si"
no% = no% + 1 : button no% : top no%,60 : left no%,880 : width no%,80 : caption no%,"Sujet"
  on_click no%,clic_sujet_regle
no% = no% + 1 : edit no% : no_sujet_regle% = no% : top no%,60 : left no%,970 : width no%,100
no% = no% + 1 : alpha no% : top no%,90 : left no%,880 : caption no%,"Est en relation"
no% = no% + 1 : combo no% : no_relation_regle% = no% : top no%,90 : left no%,970 : width no%,100
  item_add no%,"est isolé"
  item_add no%,"est devant"
  item_add no%,"est à droite"
  item_add no%,"est à gauche"
  item_add no%,"est devant"
  item_add no%,"touche"
  on_click no%,clic_relation_regle
no% = no% + 1 : button no% : top no%,120 : left no%,880 : width no%,80 : caption no%,"Cible"
  on_click no%,clic_cible_regle
no% = no% + 1 : edit no% : no_cible_regle% = no% : top no%,120 : left no%,970 : width no%,100
no% = no% + 1 : alpha no% : top no%,150 : left no%,970 : caption no%,"Alors"
no% = no% + 1 : alpha no% : top no%,180 : left no%,880 : caption no%,"Effectuer"
no% = no% + 1 : combo no% : no_action_regle% = no% : top no%,180 : left no%,970 : width no%,210
  item_add no%,"sujet meurt/est détruit"
  item_add no%,"déplacer le sujet de N cases en haut"
  item_add no%,"déplacer le sujet de N cases en bas"
  item_add no%,"déplacer le sujet de N cases à droite"
  item_add no%,"déplacer le sujet de N cases à gauche"
  item_add no%,"retirer N points de vie à la cible"
  item_add no%,"ajouter N points de vie à la cible"
  item_add no%,"retirer N points de vie au sujet"
  item_add no%,"ajouter N points de vie au sujet"
  item_add no%,"cible meurt/est détruite"
  on_click no%,clic_action_regle
no% = no% + 1 : alpha no% : top no%,210 : left no%,880 : caption no%,"N"
no% = no% + 1 : spin no% : no_N_regle% = no% : top no%,210 : left no%,970 : width no%,100
no% = no% + 1 : alpha no% : top no%,240 : left no%,970 : caption no%,"Puis"
no% = no% + 1 : alpha no% : top no%,270 : left no%,880 : caption no%,"Finir par"
no% = no% + 1 : combo no% : no_finir_regle% = no% : top no%,270 : left no%,970 : width no%,150
  item_add no%,"enchaîner un autre cycle"
  item_add no%,"terminer le cycle"
  on_click no%,clic_finir_regle
no% = no% + 1 : : open_dialog no% : no_open_dialog% = no% : filter no%,"Règles *.rgl|*.rgl"
no% = no% + 1 : : save_dialog no% : no_save_dialog% = no% : filter no%,"Règles *.rgl|*.rgl"

end

sortir:
  terminate
 
nouveau:
  nouveau()
  return

ouvrir:
  ouvrir()
  return

fermer:
  fermer()
  return
 
save:
  save()
  return
 
saveas:
  saveas()
  return
 
clic_type_objet:
  index_nature_objet% = item_index(no_nature_objet%)
  select index_nature_objet%
    case 1: ' décor
      position no_vie_objet%,0

    case 2: ' personnage
      position no_vie_objet%,100

    case 3: ' objet
      position no_vie_objet%,10
  end_select
  return
 
clic_sujet_regle:
  clic_sujet_regle()
  return
 
clic_relation_regle:
  clic_relation_regle()
  return

clic_cible_regle:
  clic_cible_regle%()
  return
 
clic_action_regle:
  clic_action_regle()
  return

clic_finir_regle:
  clic_finir_regle()
  return
 
select_regles:
  select_regles()
  return

select_objet:
  select_objet()
  return
 
creer_objet:
  creer_objet()
  return

modifier_objet:
  modifier_objet()
  return

supprimer_objet:
  supprimer_objet()
  return
 
creer_regle:
  creer_regle()
  return

modifier_regle:
  modifier_regle()
  return

supprimer_regle:
  supprimer_regle()
  return


sub creer_objet()
  dim_local nom$, i%, cnt%
  nom$ = trim$(text$(no_nom_objet%))
  if nom$=""
    message "Le nom manque."
    exit_sub
  end_if
  if index_nature_objet%=0
    message "La nature n'est pas choisie."
    exit_sub
  end_if
  cnt% = 0
  if count(no_list_objets%)>0
    for i%=1 to count(no_list_objets%)
      if left$(item_read$(no_list_objets%,i%),len(nom$))=nom$ then cnt% = cnt% + 1
    next i%
  end_if
  if cnt%>0 then  nom$ = nom$ + "_"+str$(cnt%)
  item_add no_list_objets%,nom$
  item_add no_list_objets%+1,str$(item_index(no_nature_objet%))+","+str$(position(no_vie_objet%))
  index_list_objets% = count(no_list_objets%)
end_sub

sub modifier_objet()
  dim_local nom$, i%, cnt%
  if count(no_list_objets%)=0
    message "Aucun objet n'est défini."
    exit_sub
  end_if
  if index_list_objets%=0
    message "Aucun objet n'est sélectionné."
    exit_sub
  end_if
  nom$ = trim$(text$(no_nom_objet%))
  if nom$=""
    message "Le nom manque."
    exit_sub
  end_if
  if nom$<>item_read$(no_list_objets%,index_list_objets%)
    cnt% = 0
    for i%=1 to count(no_list_objets%)
      if left$(item_read$(no_list_objets%,i%),len(nom$))=nom$ then cnt% = cnt% + 1
    next i%
    if cnt%>0 then  nom$ = nom$ + "_"+str$(cnt%)
  end_if
  item_delete no_list_objets%,index_list_objets%
  item_insert no_list_objets%,index_list_objets%,nom$
  item_delete no_list_objets%+1,index_list_objets%
  item_insert no_list_objets%+1,index_list_objets%,str$(item_index(no_nature_objet%))+","+str$(position(no_vie_objet%))
end_sub

sub supprimer_objet()
  if count(no_list_objets%)=0
    message "Aucun objet n'est défini."
    exit_sub
  end_if
  if index_list_objets%=0
    message "Aucun objet n'est sélectionné."
    exit_sub
  end_if
  item_delete no_list_objets%,index_list_objets%
  item_delete no_list_objets%+1,index_list_objets%
end_sub

sub select_objet()
  dim_local nom$, s$
  index_list_objets% = item_index(no_list_objets%)
  text no_nom_objet%,item_read$(no_list_objets%,index_list_objets%)
  s$ = item_read$(no_list_objets%+1,index_list_objets%)
  index_nature_objet% = val(left$(s$,1))
  text no_nature_objet%,item_read$(no_nature_objet%,index_nature_objet%)
  position no_vie_objet%,val(mid$(s$,3,len(s$)))
end_sub

sub select_regles()
  dim_local s$, p%, n%
  index_list_regles% = item_index(no_list_regles%)
  s$ = item_read$(no_list_regles%+1,index_list_regles%)

  p% = instr(s$,",")
  regle_sujet% = val(left$(s$,p%-1))
  text no_sujet_regle%,item_read$(no_list_objets%,regle_sujet%)
  s$ = mid$(s$,p%+1,len(s$))

  p% = instr(s$,",")
  index_relation_regle% = val(left$(s$,p%-1))
  text no_relation_regle%,item_read$(no_relation_regle%,index_relation_regle%)
  s$ = mid$(s$,p%+1,len(s$))

  p% = instr(s$,",")
  regle_cible% = val(left$(s$,p%-1))
  text no_cible_regle%,item_read$(no_list_objets%,regle_cible%)
  s$ = mid$(s$,p%+1,len(s$))

  p% = instr(s$,",")
  index_action_regle% = val(left$(s$,p%-1))
  text no_action_regle%,item_read$(no_action_regle%,index_action_regle%)
  s$ = mid$(s$,p%+1,len(s$))

  p% = instr(s$,",")
  n% = val(left$(s$,p%-1))
  position no_N_regle%,n%
  s$ = mid$(s$,p%+1,len(s$))

  index_finir_regle% = val(s$)
  text no_finir_regle%,item_read$(no_finir_regle%,index_finir_regle%)

end_sub

sub clic_sujet_regle()
  if index_list_objets%=0
    message "Aucun objet n'est choisi."
    exit_sub
  end_if
  regle_sujet% = index_list_objets%
  text no_sujet_regle%,item_read$(no_list_objets%,regle_sujet%)
end_sub

sub clic_relation_regle()
  index_relation_regle% = item_index(no_relation_regle%)
end_sub

sub clic_cible_regle%()
  if index_list_objets%=0
    message "Aucun objet n'est choisi."
    exit_sub
  end_if
  regle_cible% = index_list_objets%
  text no_cible_regle%,item_read$(no_list_objets%,regle_cible%)
end_sub

sub clic_action_regle()
  index_action_regle% = item_index(no_action_regle%)
end_sub

sub clic_finir_regle()
  index_finir_regle% = item_index(no_finir_regle%)
end_sub

sub creer_regle()
  dim_local s$
  if regle_sujet%=0
    message "Le sujet n'est pas choisi."
    exit_sub
  end_if
  if index_relation_regle%=0
    message "La relation n'est pas choisie."
    exit_sub
  end_if
  if regle_cible%=0
    message "La cible n'est pas choisie."
    exit_sub
  end_if
  if index_action_regle%=0
    message "L'action n'est pas choisie."
    exit_sub
  end_if
  if index_finir_regle%=0
    message "La fin n'est pas choisie."
    exit_sub
  end_if
  s$ = "si <"+item_read$(no_list_objets%,regle_sujet%)+">"
  s$ = s$ + " <"+item_read$(no_relation_regle%,index_relation_regle%)+">"
  s$ = s$ + " <"+item_read$(no_list_objets%,regle_cible%)+"> alors "
  s$ = s$ + "<"+item_read$(no_action_regle%,index_action_regle%)+">"
  s$ = s$ + " N=<"+str$(position(no_N_regle%))+"> puis "
  s$ = s$ + "<"+item_read$(no_finir_regle%,index_finir_regle%)+">"
  item_add no_list_regles%,s$
  s$ = str$(regle_sujet%)+","+str$(index_relation_regle%)+","+str$(regle_cible%)
  s$ = s$ + ","+str$(index_action_regle%)+","+str$(position(no_N_regle%))
  s$ = s$ + ","+str$(index_finir_regle%)
  item_add no_list_regles%+1,s$
end_sub

sub modifier_regle()
  dim_local s$
  if count(no_list_regles%)=0
    message "Il n'y a pas de règles."
    exit_sub
  end_if
  if index_list_regles%=0
    message "Aucune règle n'est sélectionnée."
    exit_sub
  end_if

  if regle_sujet%=0
    message "Le sujet n'est pas choisi."
    exit_sub
  end_if
  if index_relation_regle%=0
    message "La relation n'est pas choisie."
    exit_sub
  end_if
  if regle_cible%=0
    message "La cible n'est pas choisie."
    exit_sub
  end_if
  if index_action_regle%=0
    message "L'action n'est pas choisie."
    exit_sub
  end_if
  if index_finir_regle%=0
    message "La fin n'est pas choisie."
    exit_sub
  end_if
 
  item_delete no_list_regles%,index_list_regles%
  item_delete no_list_regles%+1,index_list_regles%

  s$ = "si <"+item_read$(no_list_objets%,regle_sujet%)+">"
  s$ = s$ + " <"+item_read$(no_relation_regle%,index_relation_regle%)+">"
  s$ = s$ + " <"+item_read$(no_list_objets%,regle_cible%)+"> alors "
  s$ = s$ + "<"+item_read$(no_action_regle%,index_action_regle%)+">"
  s$ = s$ + " N=<"+str$(position(no_N_regle%))+"> puis "
  s$ = s$ + "<"+item_read$(no_finir_regle%,index_finir_regle%)+">"
  item_insert no_list_regles%,index_list_regles%,s$
  s$ = str$(regle_sujet%)+","+str$(index_relation_regle%)+","+str$(regle_cible%)
  s$ = s$ + ","+str$(index_action_regle%)+","+str$(position(no_N_regle%))
  s$ = s$ + ","+str$(index_finir_regle%)
  item_insert no_list_regles%+1,index_list_regles%,s$
 
end_sub

sub supprimer_regle()
  if count(no_list_regles%)=0
    message "Il n'y a pas de règles."
    exit_sub
  end_if
  if index_list_regles%=0
    message "Aucune règle n'est sélectionnée."
    exit_sub
  end_if
  item_delete no_list_regles%,index_list_regles%
  item_delete no_list_regles%+1,index_list_regles%
end_sub

sub nouveau()
  regles$ = ""
  clear no_list_objets%
  clear no_list_objets%+1
  clear no_list_regles%
  clear no_list_regles%+1
  n_objets% = 0
  index_nature_objet% = 0
  index_list_objets% = 0
  index_list_regles% = 0
  index_relation_regle% = 0
  index_action_regle% = 0
  index_finir_regle% = 0
  regle_sujet% = 0
  regle_cible% = 0
  text no_nom_objet%,""
  text no_nature_objet%,""
  position no_vie_objet%,0
 
  text no_sujet_regle%,""
  text no_relation_regle%,""
  text no_cible_regle%,""
  text no_action_regle%,""
  position no_N_regle%,0
  text no_finir_regle%,""

end_sub

sub ouvrir()
  dim_local f$, s$, i%, n%
  f$ = file_name$(no_open_dialog%)
  if f$="_" then exit_sub
  if file_exists(f$)=0
    message "Le fichier n'existe pas"
    exit_sub
  end_if
  fermer()
  regles$ = f$
  file_open_read 1,regles$
  file_readln 1,s$
  n% = val(s$)
  for i%=1 to n%
    file_readln 1,s$
    item_add no_list_objets%,s$
    file_readln 1,s$
    item_add no_list_objets%+1,s$
  next i%
  file_readln 1,s$
  n% = val(s$)
  if n%>0
    for i%=1 to n%
      file_readln 1,s$
      item_add no_list_regles%,s$
      file_readln 1,s$
      item_add no_list_regles%+1,s$
    next i%
  end_if
  file_close 1
end_sub

sub fermer()
  nouveau()
end_sub

sub save()
  dim_local i%
  if regles$=""
    message "Aucun fichier n'est ouvert."
    exit_sub
  end_if
  if count(no_list_objets%)=0
    message "Il n'y a rien à sauvegarder."
    exit_sub
  end_if
  file_open_write 1,regles$
  file_writeln 1,str$(count(no_list_objets%))
  for i%=1 to count(no_list_objets%)
    file_writeln 1,item_read$(no_list_objets%,i%)
    file_writeln 1,item_read$(no_list_objets%+1,i%)
  next i%
  file_writeln 1,str$(count(no_list_regles%))
  if count(no_list_regles%)>0
    for i%=1 to count(no_list_regles%)
      file_writeln 1,item_read$(no_list_regles%,i%)
      file_writeln 1,item_read$(no_list_regles%+1,i%)
    next i%
  end_if
  file_close 1
end_sub

sub saveas()
  dim_local f$
  f$ = file_name$(no_save_dialog%)
  if f$="_" then exit_sub
  regles$ = f$
  save()
end_sub

Et voici le fichier Premier.rgl (*.rgl est l'extension imposée, puisque *.reg est en principe réservée pour le système):
Code:
3
soldat
2,100
bombe
3,10
infirmier
2,100
2
si <soldat> <touche> <bombe> alors <retirer N points de vie au sujet> N=<20> puis <terminer le cycle>
1,6,2,8,20,2
si <soldat> <est devant> <infirmier> alors <ajouter N points de vie au sujet> N=<5> puis <enchaîner un autre cycle>
1,2,3,9,5,1
Pour chaque élément, il y a deux lignes: la première est le libellé affiché dans les listes du programme, et la deuxième est un codage interne qui s'y rattache. Il y a donc 2 personnages et 1 objet, et deux règles que je vous laisse découvrir.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 8:38

J'ai déplacé la discussion dans une nouvelle rubrique "Stratego" des Grands projets réalisés avec Panoramic

_________________
Stratego collaboratif Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 9:32

C'est intéressant Klaus, car en effet, ça permettrait de relayer toute la logique sous forme de règle facilement lisible.
Il y a encore du travail à faire dessus (J'ai créé un objet mais je ne pouvais pas le renommer) et je pense qu'il faudrait faire un petit programme qui montre l'interprétation des règles générées pour être exhaustif.

Pour être peut être encore plus intéressant, le top selon moi serait de rendre les règle plus graphiques sous formes de blocs (tel que dans Ardublock ou Blockly)

Tu prendrais un bloc personnage, objet ou décor (je pense qu'il faudrait rajouter aussi temps) ou d'autre types d'objet d'une bibliothèque à enrichir avec chacun ses propre propriétés que l'on pourrait paramétrer sur les blocs

Tu prendrais un bloc relation ("est à gauche", "est à droite", "touche", ...) mais ces types de relations dépendraient de l'objet sujet (par exemple pour un sujet "temps", la position n'a pas de sens, mais le temps peut avoir par exemple "est égal" ou "dépasse")

La cible n'a de sens que selon le type de relations. Toujours pour garder l'exemple du temps, (mais j'aurais pu prendre score ou niveau ou points de vie)

L'idée serait vraiment de pouvoir vraiment avoir toutes les conditions et actions fondamentales du jeu dans ces règles

Si <touche_appuyée> <égale> <Z><deplacement_soldat><égale><vers le haut>
Si <deplacement_soldat><égale><obstacle><ne pas deplacer>
Si <deplacement_soldat><égale><ennemi><retirer n points de vie à soldat>
Si <deplacement_soldat><égale><ennemi><ennemi meurt>

Je pense qu'en travaillant par objet, ce serait plus simple mais ça reste un très gros boulot dans lequel tu te lances pour que les règles soient suffisantes pour pouvoir interpréter toute la logique d'un jeu.

J'espère avoir bien compris le but de ce que tu viens de commencer et ne pas être parti hors sujet. Par contre vu l'ampleur de la tâche si j'ai bien compris ce que tu veux faire, tu peux ouvrir un sujet dédié car le chemin sera quand même assez long, je pense.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 9:41

Bonjour à tous,

@Jack,
Merci pour cette rubrique spéciale...

@Klaus,
J'ai regardé ton "moteur de règle", c'est pas mal. A suivre...

@Jicehel,

Ça avance, j'ai testé et j'ai découvert un bug. C'est peut-être dû au fait que le code est incomplet.

Sur l'image ci-dessous le pion bleu, qui est sélectionné, ne peut plus bouger ???
Stratego collaboratif Image_11

De mon coté, Je suis parti sur une version avec sprites. J'ai terminé le codage pour la détection des cases.
Il faut que je fabrique 2 ou 3 images pour mes sprites pour continuer. J'espère pouvoir vous sortir une première version avant demain soir.
J'ai un peu de mal, à cause de Lilou (ma petite fille) qui me demande toute les 3 minutes "Papy qu'est-ce que tu fais"  Very Happy

A+

PS: Je viens de regarder la page d’accueil du forum en bas "Grands projets réalisés avec Panoramic"
Je constate que Jack a eu l'excellente idée d'y mettre les règles du jeu (pour ceux que ça intéresse)

D'autre part, je propose d'ouvrir un post pour la version avec sprite, pour éviter les confusions... Si vous êtes d'accord ce sera fait dans la journée...


Dernière édition par Jean Claude le Sam 27 Fév 2016 - 9:53, édité 2 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 9:50

DE toute façon Jean-Claude, on n'est pas pressé. Collaboré ça prend du temps. Surtout au début, mais si ça marche, plus on travaillera l'exercice, plus vite on rendra un travail abouti et ça nous permettra peut être de nous attaquer plus tard à des projets plus importants, mais ne brusquons rien et commençons déjà par tranquillement finir ce Stratego Wink
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 9:54

On s'est croisé Jicehel.

PS: Je viens de regarder la page d’accueil du forum en bas "Grands projets réalisés avec Panoramic"
Je constate que Jack a eu l'excellente idée d'y mettre les règles du jeu (pour ceux que ça intéresse)

D'autre part, je propose d'ouvrir un post pour la version avec sprite, pour éviter les confusions... Si vous êtes d'accord ce sera fait dans la journée...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 10:07

Bien sûr Jean-Claude.

On peut faire ça et le top serait de garder les mêmes noms de procédures principales pour garder la même structure de jeux en dehors des spécificités graphiques.

Ca permettra ainsi que les procédures que certains feront puisse être ajoutées dans les 2 versions.

PS: Tu as raisons pour le bug, ça met arrivé aussi. Il faut que j'arrive à le reproduire et à comprendre d'où ça vient... Certainement un problème de logique quelque part ou le en effet, le fait que pour le moment je n'ai pas encore fini de le faire mais pour le moment, je n'ai pas encore compris pourquoi et ce sera certainement pour ce soir cr là, c'est course, repas avec les parents, jouer avec les enfants, etc ... Comme pour vous certainement... A bientôt
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif EmptySam 27 Fév 2016 - 10:28

Ok, j'ouvre un post dans la journée.

Pour le moment, c'est comme toi: courses, petit enfants, etc.....

A+
Revenir en haut Aller en bas
Contenu sponsorisé





Stratego collaboratif Empty
MessageSujet: Re: Stratego collaboratif   Stratego collaboratif Empty

Revenir en haut Aller en bas
 
Stratego collaboratif
Revenir en haut 
Page 1 sur 5Aller à la page : 1, 2, 3, 4, 5  Suivant
 Sujets similaires
-
» site web de notre projet collaboratif
» Stratego
» information sur stratégo 2D
» Stratégo Colaboratif (version sur un scene2d)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Grands projets réalisés avec Panoramic :: Stratego-
Sauter vers: