PureBasic

Forums PureBasic
Nous sommes le Sam 24/Aoû/2019 8:03

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 13:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1646
Localisation: Belgique
Je sais que pour beaucoup d'entre vous les opérateurs logiques sont inutiles et pourtant. Pour le fun je développe actuellement un petit jeux d'échec en Pb.

Je traite l'échiquier sous forme de matrice carrée (8,8) (si vous préfère avec un tableau de 8 lignes et 8 colonnes ).

Reste le problème de mémorisé dans chaque case de la matrice le type de pion ainsi que sa couleur.

Voila entre autre à quoi peuvent servir les opérateurs logiques :wink:

Voila une exemple avec une partie (adapté pour l'exemple) de mon code.

Nb: Ne voulant pas vous imposé le chargement d'images les pions ne sont pas représentés visuellement mais seulement en mémoire

Utilisation: déplacez la souri à l'emplacement d'un pion, si vous avez déjà joué au échecs cela ne devrait pas posé de problème

Code:
Global Dim ChessBoard.l(8,8)
EnableExplicit

#CaseSize=64
#Rook=$00000001
#Knight=$00000002
#Bishop=$00000004
#King=$00000008
#Queen=$00000010
#Pawn=$00000020
#WhiteC=$01000000
#BlackC=$10000000
Enumeration
  #MainForm
  #Canvas
EndEnumeration

Declare OpenForm()
Declare DrawChessBoard()
Declare ManageStartChessPawn()
Declare Exit()
Declare ManageCanvas()
Declare WhoIsThere(Line,Column)

Procedure OpenForm()
  Protected W=(8 * #CaseSize),H=(8 * #CaseSize)
  OpenWindow(#MainForm,0,0,W,H,"Pb chess board",$CB0001)
  CanvasGadget(#Canvas,0,0,W,H,#PB_Canvas_Key)
  BindGadgetEvent(#Canvas,@ManageCanvas())
  BindEvent(#PB_Event_CloseWindow,@Exit(),0)
  AddKeyboardShortcut(0,#PB_Shortcut_Escape,0)
  BindEvent(#PB_Event_Menu,@Exit(),0,0)
  ManageStartChessPawn()
  DrawChessBoard()
EndProcedure
Procedure DrawChessBoard()
  Protected Dim Color(2),nColor=1,i,j,X,Y
  Color(0)=$B5E4FF
  Color(1)=$13458B
  StartDrawing(CanvasOutput(#Canvas))
  DrawingMode(#PB_2DDrawing_Default)
  For i=0 To 7
    X=0
    nColor+1
    If nColor>1
      nColor=0
    EndIf
    For j=0 To 7
      Box(X,Y,#CaseSize,#CaseSize,Color(nColor))
      nColor+1
      If nColor>1
        nColor=0
      EndIf
      X+#CaseSize
    Next
    Y+#CaseSize
  Next
  StopDrawing()
EndProcedure
Procedure ManageStartChessPawn()
  Protected i
  ; Black chess pawns
  ChessBoard(0,0)=#BlackC|#Rook
  ChessBoard(0,1)=#BlackC|#Knight
  ChessBoard(0,2)=#BlackC|#Bishop
  ChessBoard(0,3)=#BlackC|#Queen
  ChessBoard(0,4)=#BlackC|#King
  ChessBoard(0,5)=#BlackC|#Bishop
  ChessBoard(0,6)=#BlackC|#Knight
  ChessBoard(0,7)=#BlackC|#Rook
  For i=0 To 7
    ChessBoard(1,i)=#BlackC|#Pawn
  Next
  ; white chess pawns
  ChessBoard(7,0)=#WhiteC|#Rook
  ChessBoard(7,1)=#WhiteC|#Knight
  ChessBoard(7,2)=#WhiteC|#Bishop
  ChessBoard(7,3)=#WhiteC|#Queen
  ChessBoard(7,4)=#WhiteC|#King
  ChessBoard(7,5)=#WhiteC|#Bishop
  ChessBoard(7,6)=#WhiteC|#Knight
  ChessBoard(7,7)=#WhiteC|#Rook
  For i=0 To 7
    ChessBoard(6,i)=#WhiteC|#Pawn
  Next
EndProcedure
Procedure Exit()
  CloseWindow(#MainForm)
  End
EndProcedure
Procedure ManageCanvas()
  Protected MousePosX,MousePosY,CurrentLine.w,CurrentColumn.w
  MousePosY=GetGadgetAttribute(#Canvas,#PB_Canvas_MouseY)
  MousePosX=GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX)
  CurrentLine=MousePosY/#CaseSize
  CurrentColumn=MousePosX/#CaseSize
  Select EventType()
    Case #PB_EventType_MouseMove
      WhoIsThere(CurrentLine,CurrentColumn)
  EndSelect
EndProcedure
Procedure WhoIsThere(Line,Column)
  Protected CurrentPiece,Message.s="Je suis "
  If ChessBoard(Line,Column)>0
    CurrentPiece=ChessBoard(Line,Column)&$00FFFFFF ; Extract the piece value only
    Select CurrentPiece
      Case #Pawn
        Message+"un Pion"
      Case #Rook
        Message+"une Tour"
      Case #King
        Message+"le Roi"
      Case #Queen
        Message+"la Reine"
      Case #Knight
        Message+"un cavalier"
      Case #Bishop
        Message+"un Fou"
    EndSelect
    If ChessBoard(Line,Column)&#WhiteC
      Message+" blanc"
    Else
      Message+" noir"
    EndIf
    Debug Message
  EndIf
EndProcedure

OpenForm()

Repeat:WaitWindowEvent():ForEver

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Dernière édition par microdevweb le Sam 04/Fév/2017 22:58, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 14:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2159
Localisation: 50200 Coutances
Et comment que ça peut servir, merci pour ce partage ludique, moi ça m'éclate.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Dernière édition par Micoute le Dim 05/Fév/2017 7:06, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 19:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2053
Code:
Message+"une Toure"

hum sans le "e" ;)

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 22:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1646
Localisation: Belgique
Hum Zorro est arrivé et d'un coup de lasso à corrigé une grosse erreur.

Merci je corrige :wink:

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 23:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2053
n'y vois pas de malice :)
c'est juste que ça m'a arraché la vue :lol:
en général j'aime pas les redresseurs de torts syntaxique :)
mais là, c’était trop pour moi :)

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 23:22 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Zorro a écrit:
c'est juste que ça m'a arraché la vue
en général j'aime pas les redresseurs de torts syntaxique :)
mais là, c’était trop pour moi :)
Trop pour toi ? ^^

Moi aussi certaines de tes phrases m'arrachent la vue et ce n'est qu'un exemple.
Zorro a écrit:
sans erreurs ce serai mieux
ne voit pas de malice ni aucune agression de ma part hein? Soit beau joueur ^^
Le post en question : viewtopic.php?p=189141#p189141

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Sam 04/Fév/2017 23:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1646
Localisation: Belgique
Zorro cela ne me vexe pas, et il est vrai que je suis plutôt nul en orthographe. Et on apprend de ses erreurs.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Dim 05/Fév/2017 7:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2159
Localisation: 50200 Coutances
Je pense qu'on devrait corriger les erreurs de code plutôt que les erreurs d'orthographe, l'école n'a pas toujours fait son travail d'apprentissage car elle chouchoute les meilleurs au lieu des nuls.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Dim 05/Fév/2017 10:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2053
Micoute a écrit:
Je pense qu'on devrait corriger les erreurs de code plutôt que les erreurs d'orthographe, l'école n'a pas toujours fait son travail d'apprentissage car elle chouchoute les meilleurs au lieu des nuls.


heu, lorsque tu aura corrigé autant de codes sur le forum, que j'ai pu le faire , on en reparlera ;)
quant a l’école, j'ai arrêté l’école en 6em ;)

mais comme je l'ai dis, c'etait une remarque sans intentions aucune, et microdevweb l'a tres bien compris , donc ça ne vous concerne pas ..

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Dim 05/Fév/2017 11:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2159
Localisation: 50200 Coutances
Ce n'était pas toi que je visais, je voulais juste faire remarquer qu'on était sur un forum PB et non pas de cours de grammaire

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Dim 05/Fév/2017 11:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2053
certes , mais si on peut aider de temps en temps de ce coté, c'est pas mal non plus
(et il y a deja eu des précédents...notamment avec Dayvid )

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Dim 05/Fév/2017 12:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1646
Localisation: Belgique
Et bien moi Zorro, j'ai repris l'école pour 3 ans pour l'obtention d'un baccalauréat en informatique et système orienté industrie.

Et même si en temps qu'autodidacte j'ai beaucoup appris, on ne cesse d'apprendre.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Dim 05/Fév/2017 13:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2053
oui, bon courage a toi ,
c'est pas évident de se relancer dans les études, et ça demande de la volonté :)

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Lun 06/Fév/2017 16:09 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 904
Pour info, il était possible d'utiliser la fonction EnumerationBinary:

Code:
EnumerationBinary
#Rook;=$00000001
#Knight;=$00000002
#Bishop;=$00000004
#King;=$00000008
#Queen;=$00000010
#Pawn;=$00000020
EndEnumeration


M.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les opérateurs logiques ca peut servir!
MessagePosté: Mer 01/Mar/2017 12:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8739
J'avais loupé ce sujet, c'est intéressant merci.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye