Juegos de ajedrez
robinmoon
-
Phil_1857 Mensajes publicados 1883 Fecha de registro Estado Miembro Última intervención -
Phil_1857 Mensajes publicados 1883 Fecha de registro Estado Miembro Última intervención -
Bonjour, je suis en apprentissage de pygame et je commence à faire un jeu d'échecs en pygame et je suis bloqué dessus depuis 3 jours sur comment détecter les pièces et par la suite faire des déplacements, même si je pense que j'utiliserai des calculs de coordonnées. Merci d'avance pour l'aide !
Configuration: Windows / Chrome 88.0.4324.190
import pygame
from pygame.locals import *
import time
case = 84
A = 60
B = 60 + case
C = 60 + case * 2
D = 60 + case * 3
E = 60 + case * 4
F = 60 + case * 5
G = 60 + case * 6
H = 60 + case * 7
Huit = 60
Sept = 60 + case
Six = 60 + case * 2
Cinq = 60 + case * 3
Quatre = 60 + case * 4
Trois = 60 + case * 5
Deux = 60 + case * 6
Un = 60 + case * 7
SIZE = 100
WIDTH = 8
HEIGHT = 8
pygame.init()
fenetre = pygame.display.set_mode((800,800))
echiquier = pygame.image.load("plateau.png").convert_alpha()
fenetre.blit(echiquier,(0,0))
#Placement reines
QeB= pygame.image.load("Reine_Blanc.png").convert_alpha()
fenetre.blit(QeB,(D,Un))
pygame.display.flip()
QeW= pygame.image.load("Reine_Noir.png").convert_alpha()
fenetre.blit(QeW,(D,Huit))
pygame.display.flip()
#Placement rois
KiB= pygame.image.load("Roi_Noir.png").convert_alpha()
fenetre.blit(KiB,(E,Huit))
pygame.display.flip()
KiW= pygame.image.load("Roi_Blanc.png").convert_alpha()
fenetre.blit(KiW,(E,Un))
pygame.display.flip()
#Placement fous
BB= pygame.image.load("Fou_Noir.png").convert_alpha()
fenetre.blit(BB,(F,Huit))
pygame.display.flip()
BW= pygame.image.load("Fou_Blanc.png").convert_alpha()
fenetre.blit(BW,(F,Un))
pygame.display.flip()
BB= pygame.image.load("Fou_Noir.png").convert_alpha()
fenetre.blit(BB,(C,Huit))
pygame.display.flip()
BW= pygame.image.load("Fou_Blanc.png").convert_alpha()
fenetre.blit(BW,(C,Un))
pygame.display.flip()
#Placement cavaliers
KB= pygame.image.load("Cavalier_Noir.png").convert_alpha()
fenetre.blit(KB,(B,Huit))
pygame.display.flip()
KW= pygame.image.load("Cavalier_Blanc.png").convert_alpha()
fenetre.blit(KW,(B,Un))
pygame.display.flip()
KB= pygame.image.load("Cavalier_Noir.png").convert_alpha()
fenetre.blit(KB,(G,Huit))
pygame.display.flip()
KW= pygame.image.load("Cavalier_Blanc.png").convert_alpha()
fenetre.blit(KW,(G,Un))
pygame.display.flip()
#Placement tours
RB= pygame.image.load("Tour_Noir.png").convert_alpha()
fenetre.blit(RB,(A,Huit))
pygame.display.flip()
RW= pygame.image.load("Tour_Blanc.png").convert_alpha()
fenetre.blit(RW,(A,Un))
pygame.display.flip()
RB= pygame.image.load("Tour_Noir.png").convert_alpha()
fenetre.blit(RB,(H,Huit))
pygame.display.flip()
RW= pygame.image.load("Tour_Blanc.png").convert_alpha()
fenetre.blit(RW,(H,Un))
pygame.display.flip()
#Placement pions noirs
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(A,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(B,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(C,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(D,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(E,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(F,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(G,Sept))
pygame.display.flip()
PB= pygame.image.load("Pion_Noir.png").convert_alpha()
fenetre.blit(PB,(H,Sept))
pygame.display.flip()
#Placement pions blancs
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(A,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(B,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(C,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(D,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(E,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(F,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(G,Deux))
pygame.display.flip()
PW= pygame.image.load("Pion_Blanc.png").convert_alpha()
fenetre.blit(PW,(H,Deux))
pygame.display.flip()
pièces =[RB,KB,BB,QeB,KiB,PB,PW,RW,KW,BW,QeW,KiW]
Echiquier = [ ['RB','KB','BB','QeB','KiB','BB','KB','RB'],
['PB','PB','PB','PB','PB','PB','PB','PB'],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
['PW','Pw','PW','PW','PW','PW','PW','PW'],
['RW','KW','BW','QeW','KiW','BW','KW','RW'] ]
while True:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN :
x_souris = event.pos[0]
y_souris = event.pos[1]
print(x_souris, y_souris)
colonne = (y_souris-60) //case
ligne = ( x_souris-60) //case
print(ligne,colonne)
Configuration: Windows / Chrome 88.0.4324.190
7 respuestas
-
yg_be Mensajes publicados 23437 Fecha de registro Estado Colaborador Última intervención Ambassadeur 1 588
Hola,
"¿cómo detectar las piezas?": examinando el contenido del tablero de ajedrez.
¿Has hecho juegos más simples? -
base
no, aún no, pero estoy aprendiendo con la ayuda de alguien que está tomando clases en primero y así lo hago al mismo tiempo, por lo que es el primer juego que estoy haciendo. -
Bonjour,
La indentación es importante en Python, gracias de copiar/pegar aquí tu código completo con las etiquetas de código
modo de empleo:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visualmente, debería parecerse a esto (con la coloración de sintaxis):
def test(): print('test') test()
Dicho esto, yo inicializaría una variable tabla de 2 dimensiones (filas, columnas) que contendría los nombres de las piezas
Luego, se puede interrogar una celda dada: Tablero [fila][columna], o recorrer la tabla con dos bucles
anidados:
for k in range(0,nb_lignes): for j in range(0,nb_colonnes):
Luego, después de un desplazamiento de piezas en la tabla, actualizamos la visualización gráfica en función de esto.-
-
-
-
-
[linha] e [coluna], eu acho que entendi, mas isso corresponde à localização na minha lista, então, por exemplo, para RB eu tenho Tabuleiro [O] [O] ou Tabuleiro [0] [7], se eu entendi bem? E depois, como eu o detecto na tela para saber qual casa corresponde a qual localização na minha tabela?
-
-
ok aquí el código :
import pygame from pygame.locals import * import time coord=[ 'a8','b8','c8','d8','e8','f8','g8','h8', 'a7','b7','c7','d7','e7','f7','g7','h7', 'a6','b6','c6','d6','e6','f6','g6','h6', 'a5','b5','c5','d5','e5','f5','g5','h5', 'a4','b4','c4','d4','e4','f4','g4','h4', 'a3','b3','c3','d3','e3','f3','g3','h3', 'a2','b2','c2','d2','e2','f2','g2','h2', 'a1','b1','c1','d1','e1','f1','g1','h1' ] pygame.init() ventana = pygame.display.set_mode((800,800)) tablero = pygame.image.load("plateau.png").convert_alpha() ventana.blit(tablero,(0,0)) #Colocación reinas QeB= pygame.image.load("Reine_Blanc.png").convert_alpha() ventana.blit(QeB,(D,Un)) pygame.display.flip() QeW= pygame.image.load("Reine_Noir.png").convert_alpha() ventana.blit(QeW,(D,Huit)) pygame.display.flip() #Colocación reyes KiB= pygame.image.load("Roi_Noir.png").convert_alpha() ventana.blit(KiB,(E,Huit)) pygame.display.flip() KiW= pygame.image.load("Roi_Blanc.png").convert_alpha() ventana.blit(KiW,(E,Un)) pygame.display.flip() #Colocación alfiles BB= pygame.image.load("Fou_Noir.png").convert_alpha() ventana.blit(BB,(F,Huit)) pygame.display.flip() BW= pygame.image.load("Fou_Blanc.png").convert_alpha() ventana.blit(BW,(F,Un)) pygame.display.flip() BB= pygame.image.load("Fou_Noir.png").convert_alpha() ventana.blit(BB,(C,Huit)) pygame.display.flip() BW= pygame.image.load("Fou_Blanc.png").convert_alpha() ventana.blit(BW,(C,Un)) pygame.display.flip() #Colocación caballos KB= pygame.image.load("Cavalier_Noir.png").convert_alpha() ventana.blit(KB,(B,Huit)) pygame.display.flip() KW= pygame.image.load("Cavalier_Blanc.png").convert_alpha() ventana.blit(KW,(B,Un)) pygame.display.flip() KB= pygame.image.load("Cavalier_Noir.png").convert_alpha() ventana.blit(KB,(G,Huit)) pygame.display.flip() KW= pygame.image.load("Cavalier_Blanc.png").convert_alpha() ventana.blit(KW,(G,Un)) pygame.display.flip() #Colocación torres RB= pygame.image.load("Tour_Noir.png").convert_alpha() ventana.blit(RB,(A,Huit)) pygame.display.flip() RW= pygame.image.load("Tour_Blanc.png").convert_alpha() ventana.blit(RW,(A,Un)) pygame.display.flip() RB= pygame.image.load("Tour_Noir.png").convert_alpha() ventana.blit(RB,(H,Huit)) pygame.display.flip() RW= pygame.image.load("Tour_Blanc.png").convert_alpha() ventana.blit(RW,(H,Un)) pygame.display.flip() #Colocación peones negros PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(A,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(B,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(C,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(D,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(E,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(F,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(G,Sept)) pygame.display.flip() PB= pygame.image.load("Pion_Noir.png").convert_alpha() ventana.blit(PB,(H,Sept)) pygame.display.flip() #Colocación peones blancos PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(A,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(B,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(C,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(D,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(E,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(F,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(G,Deux)) pygame.display.flip() PW= pygame.image.load("Pion_Blanc.png").convert_alpha() ventana.blit(PW,(H,Deux)) pygame.display.flip() piezas =[RB,KB,BB,QeB,KiB,PB,PW,RW,KW,BW,QeW,KiW] Tablero = [ ['RB','KB','BB','QeB','KiB','BB','KB','RB'], ['PB','PB','PB','PB','PB','PB','PB','PB'], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], ['PW','Pw','PW','PW','PW','PW','PW','PW'], ['RW','KW','BW','QeW','KiW','BW','KW','RW'] ] while True: for event in pygame.event.get(): if event.type == MOUSEBUTTONDOWN : x_mouse = event.pos[0] y_mouse = event.pos[1] print(x_mouse, y_mouse) columna = (y_mouse-60) //case fila = ( x_mouse-60) //case print(fila,columna)
¡Gracias de antemano si encuentras algo! -
Hola,
¿Un truco para hacer qué? -
-
Yo, no uso Pygame, sino tkinter
Ya he hecho un juego, no de ajedrez, sino de damas
En resumen, muevo un peón negro así:
clic en peón sobre el tablero -> función evento clic izquierdo del ratón: inicializo una variable boton_izquierdo en True mover el peón con el ratón botón siempre presionado -> función evento movimiento del ratón: si boton_izquierdo: obtengo coordenadas x,y en el instante t mover objeto peón a x,y y así sucesivamente, mientras muevo el ratón soltar botón izquierdo del ratón -> función evento soltar botón del ratón: boton_izquierdo = False llamar función actualizar_tablero función actualizar_tablero: conversión x,y de casilla de salida a fila/columna: l1,c1 idem casilla de llegada: l2,c2 tablero[l1][c1] = '' tablero[l2][c2] = BLACK probar si hemos pasado por encima de un peón a comer, si es así: tablero[filas][columnas] = '' movimiento del peón comido al lado probar si hemos llegado al borde del tablero: dama !, si es así: borramos un peón comido por el adversario y lo redibujamos en la casilla de llegada (un poco desplazado para mostrar los 2 peones) tablero [l2][c2] = BLACK_K
sabiendo que:
WHITE = 0
BLACK = 1
WHITE_K = 2
BLACK_K = 3
(esto permite manipular nombres en lugar de números)