Jeu d'echec
Jeu d'echec
Bonjour, cela fait quelques jour que j'ai découvert purebasic et j'ai commencer a apprendre par moi même quelque trucs, mais là j'en arrive à une impasse et décide de vous demander votre aide
Voila l'histoire, j'ai décidé de créer mon propre jeu d’échec mais je ne vois vraiment pas comment détecter le clic sur une case ni la position d'un pion sur une case, donc auriez vous l'amabilité de me venir en aide ? (sans me donner le code si possible j’aimerais bien travailler quand même hein (x )
Ah et aussi comment rendre "portable" la résolution du plein écran, j'ai essayer plusieurs méthode mais aucune ne marche
Merci d'avance pour votre aide (:
Voila l'histoire, j'ai décidé de créer mon propre jeu d’échec mais je ne vois vraiment pas comment détecter le clic sur une case ni la position d'un pion sur une case, donc auriez vous l'amabilité de me venir en aide ? (sans me donner le code si possible j’aimerais bien travailler quand même hein (x )
Ah et aussi comment rendre "portable" la résolution du plein écran, j'ai essayer plusieurs méthode mais aucune ne marche
Merci d'avance pour votre aide (:
Re: Jeu d'echec
Bonjour et bienvenu
Si tu ne nous montre pas un petit peu de code ou si tu nous explique pas comment est ton graphisme pour le jeu (le damier). Il nous est difficile de pouvoir t'aidé.
Si tu ne nous montre pas un petit peu de code ou si tu nous explique pas comment est ton graphisme pour le jeu (le damier). Il nous est difficile de pouvoir t'aidé.

- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Jeu d'echec
Bienvenu. Pour un jeu en 2D j'utiliserais le CanvasGadget (je suis un peu accro à ce gadget en ce moment) associé à une structure qui contient les informations de chaque cellule.
0 - Création d'une structure représentant le jeu d’échec
1 - Dessin des 64 cases du jeu d'échec. Chaque case est un CanvasGadget
2 - Analyse des évènement de chaque CanvasGadget
Tu ne veux pas de code c'est ok. Mais si tu en souhaites un peu quand même pour illustrer ce que je viens de dire, tu le dis.
0 - Création d'une structure représentant le jeu d’échec
1 - Dessin des 64 cases du jeu d'échec. Chaque case est un CanvasGadget
2 - Analyse des évènement de chaque CanvasGadget
Tu ne veux pas de code c'est ok. Mais si tu en souhaites un peu quand même pour illustrer ce que je viens de dire, tu le dis.
Dernière modification par falsam le ven. 20/juil./2012 18:20, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Jeu d'echec
merci falsam, je pense que ce sera le moyen le plus simple, j'essaye dans la soirée et je posterais mon code pour avoir quelques avis sa si vous derange pas (si je n'est pas le temps se sera surement demain dans l'apres midi (: )
Edit : mon purebasic me dit que canvas gadget n'est pas une fonction ni un tableau, normal ?
Edit : mon purebasic me dit que canvas gadget n'est pas une fonction ni un tableau, normal ?
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
Re: Jeu d'echec
Sin_Mth a écrit :merci falsam, je pense que ce sera le moyen le plus simple, j'essaye dans la soirée et je posterais mon code pour avoir quelques avis sa si vous derange pas (si je n'est pas le temps se sera surement demain dans l'apres midi (: )
Edit : mon purebasic me dit que canvas gadget n'est pas une fonction ni un tableau, normal ?
quel version de purebasic tu as ?
Jbernard13
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Jeu d'echec
Le CanvasGadget a été introduit avec la version 4.60 de Pure Basic. Pour ton information, la version 4.61 est la version officiel.Sin_Mth a écrit :mon purebasic me dit que canvas gadget n'est pas une fonction ni un tableau, normal ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Jeu d'echec
ah oui 4.51 (x merci de l'information (:
Re: Jeu d'echec
Pour le plein écran je te conseille cette méthode plutôt:
Tu as un tableau qui fait Jeu.i(8,8) qui contient les pièces de ton jeu et les cases vides. (0=case vide, 1=pion, 2=tour, 3=cavalier, 4=fou, 5=reine, 6=roi pour les blancs et 11=pion, 12=tour etc... pour les noirs)
Tu as des sprites qui correspondent à tes pièces. Tu les numérotes comme ci dessus par exemple.
Tes cases affichées ont une certaine largeur par exemple 64x64 pixels. Tu affiches 8 cases sur 8 cases pour ton ère de jeu (si je me rappelle bien)
Tu as la coordonnée du sprite de ta souris X et Y.
Tu as la coordonnée de ta première case en haut à gauche biasX et biasY
pour savoir sur quelle case ton curseur est, tu fais:
caseX= (X-biasX)/64+1
caseY=(Y-biasY)/64+1
Lors du clic, tu sais que la case cliquée est CaseX et caseY.
Si CaseX ou CaseY<1 ou >8 ton curseur est en dehors du jeu.
Voila.
Pour ce qui est de tes pièces, tu les déplaces dans le tableau.
C'est le contenu de ce tableau que tu affiche à l'écran sur ton damier.
Tu es sûr que tu ne veux pas un petit code d'exemple ?
Par contre pour l'IA du jeu ça va être plus coton. Je serai toi je commencerai par un jeu de dame plutôt ...
POur la résolution courante de l'écran, tu peux la connaitre avec ça:
xmax=DesktopWidth(0),ymax=DesktopHeight(0)
xmax contient la résolution du bureau en X et ymax en Y.
tu fais ensuite un produit en croix pour ajuster la taille de tes éléments si tu le souhaite.
Tu as un tableau qui fait Jeu.i(8,8) qui contient les pièces de ton jeu et les cases vides. (0=case vide, 1=pion, 2=tour, 3=cavalier, 4=fou, 5=reine, 6=roi pour les blancs et 11=pion, 12=tour etc... pour les noirs)
Tu as des sprites qui correspondent à tes pièces. Tu les numérotes comme ci dessus par exemple.
Tes cases affichées ont une certaine largeur par exemple 64x64 pixels. Tu affiches 8 cases sur 8 cases pour ton ère de jeu (si je me rappelle bien)
Tu as la coordonnée du sprite de ta souris X et Y.
Tu as la coordonnée de ta première case en haut à gauche biasX et biasY
pour savoir sur quelle case ton curseur est, tu fais:
caseX= (X-biasX)/64+1
caseY=(Y-biasY)/64+1
Lors du clic, tu sais que la case cliquée est CaseX et caseY.
Si CaseX ou CaseY<1 ou >8 ton curseur est en dehors du jeu.
Voila.
Pour ce qui est de tes pièces, tu les déplaces dans le tableau.
C'est le contenu de ce tableau que tu affiche à l'écran sur ton damier.
Tu es sûr que tu ne veux pas un petit code d'exemple ?

Par contre pour l'IA du jeu ça va être plus coton. Je serai toi je commencerai par un jeu de dame plutôt ...
POur la résolution courante de l'écran, tu peux la connaitre avec ça:
xmax=DesktopWidth(0),ymax=DesktopHeight(0)
xmax contient la résolution du bureau en X et ymax en Y.
tu fais ensuite un produit en croix pour ajuster la taille de tes éléments si tu le souhaite.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Jeu d'echec
Salut.
Si tu as une version d'essai, sache que les API (sous windows donc) ne sont pas pris en compte.
Si c'est une version complète "non officielle", nous te conseillons d'investir dans une licence (79€ à vie...).
Tu participeras ainsi à la pérennité de ce langage et tu pourras te "mettre à jour" sans soucis.
Si tu as une version d'essai, sache que les API (sous windows donc) ne sont pas pris en compte.
Si c'est une version complète "non officielle", nous te conseillons d'investir dans une licence (79€ à vie...).
Tu participeras ainsi à la pérennité de ce langage et tu pourras te "mettre à jour" sans soucis.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
Re: Jeu d'echec
salut sin_Mth
tu as un exemple sur le forum de la création d'un damier :
http://www.purebasic.fr/french/viewtopi ... =6&t=12555
tu as un exemple sur le forum de la création d'un damier :
http://www.purebasic.fr/french/viewtopi ... =6&t=12555
Jbernard13
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Jeu d'echec
Je n'ai pas pu m'en empécher :p
Code : Tout sélectionner
Enumeration
#Mainform
#Information
EndEnumeration
Enumeration 10 Step 64 ;Réservation de 64 constantes
#Cell_Start
#Cell_End
EndEnumeration
;Evenements (Fenetre, Menu, Gadget, Dernier evenement)
Define.l Event, WEvent, MEvent, GEvent, TEvent
;Style window
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
;Definition trés simplifiée d'une cellule de ton jeu d'echec
Structure Cell
Idgadget.i ;Canvas associé
NumCell.i ;Numéro de cellule
BackColor.i ;Couleur de fond pour redessin de la cellule
EndStructure
Global NewList Chess.Cell() ;Le jeu d'échec
Procedure Open_MainForm()
Protected NumCell.i, X.b, BackColor.i
OpenWindow(#Mainform, 0, 0, 450, 450, "New Form", WindowStyle)
;Un jeu d'echec c'est une grille de 8 x 8
;Le Canvasgadget peut être une solution pour créer une grille
For Row = 1 To 8
For Col = 1 To 8
IdGadget = #Cell_Start+NumCell
CanvasGadget(IdGadget, Col*43, Row*43, 40, 40) ;J'ecarte volontairement les cases
;Un peu de couleur. On dessine sur le canvas nouvellement crée.
StartDrawing(CanvasOutput(IdGadget))
;Si X = #False, on colore en jaune sinon marron
If X=#False
BackColor = RGB(255, 215, 0)
X=#True
Else
BackColor = RGB(210, 105, 30)
X=#False
EndIf
;Dessin du fond de la cellule
Box(0, 0, 40 ,40, BackColor)
;Dessin d'un cadre
DrawingMode(#PB_2DDrawing_Outlined)
Box(0, 0, 40, 40, RGB(0, 0, 0))
StopDrawing() ;Fin du dessin et affichage
;Mise à jour de la structure associé au jeu d'echec
AddElement(Chess()) ;Ajout d'un élement dans la structure du jeu d'echec
SetGadgetData(IdGadget, NumCell) ;Le Canvasgadget connait sa position dans la structure
With Chess()
\IdGadget = IdGadget ;Quel est le canvas associé
\NumCell = NumCell ;Numéro de cellule
\BackColor = BackColor
EndWith
NumCell+1
Next
;C'est une astuce pour la création du damier.Peut etre qu'il y a mieux :)
If X=#True
X=#False
Else
X=#True
EndIf
Next
TextGadget(#Information, 200, 420, 50, 20, "?/?")
EndProcedure
Open_MainForm()
Repeat
Event = WaitWindowEvent(10)
WEvent = EventWindow() ;Quelle fenetre reçoit l'evenement. Different de WindowEvent() :p (oui je me suis fais avoir !!!)
MEvent = EventMenu() ;Evenement menu
GEvent = EventGadget() ;Evenement gadget
TEvent = EventType() ;Type du dernier évènement survenu
Select Event
Case #PB_Event_Gadget
Select GEvent
Case #Cell_Start To #Cell_End ;Quel est la cellule qui reçoit l'evenement
Select TEvent ;Quel type d'évenement reçoit la cellule
Case #PB_EventType_MouseEnter
;La souris survole la cellule
SetGadgetAttribute(GEvent, #PB_Canvas_Cursor, #PB_Cursor_Hand) ;Changement de curseur
;Dessin d'un cadre de sélection
StartDrawing(CanvasOutput(GEvent))
DrawingMode(#PB_2DDrawing_Outlined)
Box(0, 0, 40, 40, RGB(255, 0, 0))
StopDrawing()
Case #PB_EventType_MouseLeave
;La souris quitte la cellule : Dessin du cadre noir sur la cellule (CanvasGadget)
StartDrawing(CanvasOutput(GEvent))
DrawingMode(#PB_2DDrawing_Outlined)
Box(0, 0, 40, 40, RGB(0, 0, 0))
StopDrawing()
Case #PB_EventType_LeftButtonUp
;Le joueur clique sur une cellule : Recherche de la cellule correspondante dans la structure
;Le canvas represantant une case de ton jeu d'echec connait une position dans la structure
SelectElement(Chess(), GetGadgetData(GEvent)) ;On se positionne dans la structure
SetGadgetText(#Information, Str(Chess()\NumCell + 1)) ;Affichage du numéro de cellule
EndSelect
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Jeu d'echec
Une vrais machine a codé se Falsam
Tu code a la chaine c'est impressionnant

Tu code a la chaine c'est impressionnant

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php