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