plateau_jeu_de_dames.py

Created by laurent-cortot

Created on December 06, 2019

3.19 KB

Création d’un jeu de dame : damier et informations déroulantes


from kandinsky import *
import time

# Valeurs pour espace grahique NumWorks
xMax = 320
yMax = 240 - 20
nbCarAffichable = 32
# - 20 en ordonnée à cause du bandeau info

# Zone d'affichage de messages
hZoneMsg = 20
tpsScrolling = 0.2
tpsTroncature = 2

# Paramétrage du damier
tailleCase = 24
nbCase = 8
taillePion = tailleCase // 2

# Paramétrage des pions
CouleurPion1 = color(255,0,0)
CouleurPion2 = color(0,255,0)

# Gestion des pions
L1=[1,1,1,1,1,1,1,1]
L2=[1,1,1,1,1,1,1,1]
L3=[0,0,0,0,0,0,0,0]
L4=[0,0,0,0,0,0,0,0]
L5=[0,0,0,0,0,0,0,0]
L6=[0,0,0,0,0,0,0,0]
L7=[2,2,2,2,2,2,2,2]
L8=[2,2,2,2,2,2,2,2]
Grille=[L1,L2,L3,L4,L5,L6,L7,L8]

# Centrage du damier
xDeb = (xMax - nbCase * tailleCase)//2
yDeb = (yMax - hZoneMsg - nbCase * tailleCase)//2

# Creation du damier
def dessineDamier():
  for iC in range(nbCase):
    for iL in range(nbCase):
      xCase = xDeb+iC*tailleCase
      yCase = yDeb+iL*tailleCase
      couleurCase = color(160*((iC+iL)%2),160*((iC+iL)%2),160*((iC+iL)%2))
      fill_rect(xCase,yCase, tailleCase, tailleCase, couleurCase)

# Affichage des pions
def tracePion(numCPion, numLPion, couleurPion):
  xCase = xDeb+(numCPion-1)*tailleCase+(tailleCase-taillePion)//2
  yCase = yDeb+(numLPion-1)*tailleCase+(tailleCase-taillePion)//2
  fill_rect(xCase,yCase, taillePion, taillePion, couleurPion)

def afficherTousLesPions():
  for iLigne in range(nbCase):
    for iCol in range(nbCase):
      if Grille[iLigne][iCol]==1:
        # pion Style1
        tracePion(iCol+1, iLigne+1, CouleurPion1)
      elif Grille[iLigne][iCol]==2:
        # pion Style2
        tracePion(iCol+1, iLigne+1, CouleurPion2)

# Gestion de la zone d'information
def effaceZoneMsg():
  fill_rect(0,yMax-hZoneMsg,xMax,hZoneMsg,color(255,255,255))

def afficheMsgZoneMsgParTroncature(txt, tempsPause):
  effaceZoneMsg()
  if len(txt) > nbCarAffichable-3:
    draw_string(txt[0:nbCarAffichable-4]+"...",0,yMax-hZoneMsg)
    time.sleep(tempsPause)
    afficheMsgZoneMsgParTroncature(txt[nbCarAffichable-4:], tempsPause)
  else:
    draw_string(txt,0,yMax-hZoneMsg)

def afficheMsgZoneMsgParDefilement(txt, tempsPause):
  # assure le démarrage à partir de la droite
  txt = " " * nbCarAffichable + txt
  while len(txt)>0:
    effaceZoneMsg()
    draw_string(txt,0,yMax-hZoneMsg)
    time.sleep(tempsPause)
    txt=txt[1:]

# Lancement du programme
dessineDamier()
afficherTousLesPions()
effaceZoneMsg()
afficheMsgZoneMsgParDefilement("Bienvenue pour une partie de dame. Pour jouer, il faut designer la case du pion a deplacer puis indiquer celle de destination. Pour designer une case, on utilise des nombres. Le chiffre des dizaines donne le numero de la colonne (en partant de la gauche) et le chiffre des unites celui de la ligne (en partant du haut). Exemple : 43 designe la case situee dans la colonne 4 a la ligne 3. Attention : l'echo des saisies n'est pas toujours possible. il faut donc rentrer les nombres puis valider par EXE meme si rien ne s'affiche.",tpsScrolling)
afficheMsgZoneMsgParTroncature("C'est à vous de jouer...",tpsTroncature)

# case = 65
# tracePion(case//10,case%10,color(255,0,0))

# time.sleep(2)
# case = int(input("Code case ? (de 11 à 88)"))
# dessineDamier()
# tracePion(case//10,case%10,color(255,0,0))

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.