¡Esperando en línea! Estoy buscando un código fuente de backgammon en Python, preferiblemente uno con funciones de "reproductor para todos" y "reproductor para humanos y máquinas".
Prueba esto.
importar numpy como np
importar pygame
importar sistema
importar rastreo
importar copia
de pygame.locals importar *
pygame.init()
pygame.mixer.init()
#Color
fondo=(201, 202, 187)
tablero de ajedrez=(80, 80, 80)
botón=(52, 53, 44)
#Música
play_chess_sound = pygame.mixer.Sound("music/play_chess.wav")
play_chess_sound.set_volume(0.2)
button_sound = pygame.mixer .Sound("music/button.wav")
button_sound.set_volume(0.2)
victor_sound = pygame.mixer.Sound("music/victory.wav")
victor_sound.set_volume(0.2)
#Dibujar tablero de ajedrez
def Draw_a_chessboard(pantalla):
#Rellenar color de fondo
screen.fill(fondo)
Fondo=pygame.image.load("fondo.jpg").convert_alpha()
screen.blit(Fondo, (0, 0) )
#Dibuja el tablero de ajedrez
para i en el rango(21):
pygame.draw.line(screen, checkerboard, (40*i 3, 3 ), (40*i 3, 803))
pygame.draw.line(pantalla, tablero de ajedrez, (3, 40*i 3), (803, 40*i 3))
#Dibujar el borde
pygame.draw.line(pantalla, tablero de ajedrez, (3, 3), (803, 3), 5)
pygame.draw. line( pantalla, tablero de ajedrez, (3, 3), (3, 803), 5)
pygame.draw.line(pantalla, tablero de ajedrez, (803, 3), (803, 803), 5 )
pygame.draw.line(pantalla, tablero de ajedrez, (3, 803), (803, 803), 5)
#Dibujar punto de anclaje
pygame.draw.circle(pantalla, tablero de ajedrez, (163, 163), 6)
pygame.draw.circle(pantalla, tablero de ajedrez, (163, 643), 6)
pygame.draw.circle(pantalla, tablero de ajedrez, (643, 163), 6)
pygame.draw.circle(pantalla, tablero de ajedrez, (643, 643), 6)
pygame.draw.circle(pantalla, tablero de ajedrez, (403, 403), 6)
#Dibuja los botones 'Arrepentirse', 'Reiniciar' y 'Salir'
pygame.draw.rect(pantalla, botón,, 5)
pygame . draw.rect(pantalla, botón,, 5)
pygame.draw.rect(pantalla, botón,, 5)
s_font=pygame.font.Font('font. ttf ', 40)
text1=s_font.render("Arrepentirse", Verdadero, botón)
text2=s_font.render("Reiniciar", Verdadero, botón)
text3=s_font.render("Salir del juego", Verdadero, botón)
screen.blit(text1, (920, 370))
screen.blit(text2 , (920, 520))
screen.blit(text3, (920, 670))
#Dibujar piezas de ajedrez (abscisas, ordenadas, pantalla, color de ajedrez (1 representa Negro , 2 representa blanco))
def Draw_a_chessman(x, y, pantalla, color):
if color==1:
Black_chess=pygame. .load("Black_chess.png").convert_alpha()
screen.blit(Black_chess, (40*x 3-15, 40*y 3-15))
if color==2:
White_chess=pygame.image.load("White_chess.png").convert_alpha()
screen.blit(White_chess, (40*x 3- 15 , 40*y 3-15))
#Dibujar un tablero de ajedrez con piezas de ajedrez
def Draw_a_chessboard_with_chessman(mapa, pantalla):
screen.fill( fondo )
Draw_a_chessboard(pantalla)
para i en el rango(24):
para j en el rango(24):
Dr
aw_a_chessman(i 1, j 1, pantalla, mapa)
#Borrar lista de mapas
def clear():
mapa global
para i en rango(24):
para j en rango(24):
mapa)
#Definir fuente y tamaño
s_font=pygame.font.Font('font.ttf', x)
#Definir contenido de clase, ya sea suavizado, color
s_text=s_font.render( s , True, botón)
#Coloca el texto en la posición especificada en la ventana
screen.blit(s_text, (880, 100))
pygame.display. flip()
#Se usa para controlar la secuencia
t=True
#Se usa para evitar movimientos después de terminar el juego
running=True
#Función principal
def main():
#Establecer t, mapa y ejecución como modificables
global t , map, running, mapas, r, h
#Restablecer el mapa a cero
clear()
#Definir una lista que almacene todo el tablero de ajedrez estados (usados para ajedrez de arrepentimiento)
map2=copy.deepcopy(map)
maps=)
#Definir nombre de ventana
pygame.display.set_caption ("Gobang")
#Dibuja el tablero de ajedrez, indicaciones y botones en la ventana
Draw_a_chessboard(screen)
pygame.display. flip() p>
clock=pygame.time.Clock()
while True:
# Solo cuando correr es verdadero se puede realizar el movimiento, principalmente usado para evitar que se vuelva a mover una vez finalizado el juego
p>si se está ejecutando:
si t:
color=1
texto ('Movimiento negro', pantalla, 54)
else:
color=2
text('Movimiento blanco', pantalla, 54)
para evento en pygame.event.get ():
#Haga clic en x para cerrar la ventana
si event.type ==pygame.QUIT:
pygame.quit()
sys.exit()
#Haga clic en el contenido de la clase en la ventana para completar
Instrucciones correspondientes
elif event.type == MOUSEBUTTONDOWN:
if event.button == 1:
x, y=event.pos[0], event.pos[1]
para i en rango(19):
para j en rango(19):
#Haga clic en la posición correspondiente en el tablero de ajedrez
p>if i*40 3 20lt;xlt;i*40 3 60 and j*40 3 20lt;ylt;j*40 3 60 y no map[i][j] y corriendo :
#Coloca las piezas de ajedrez del color correspondiente en la posición correspondiente en el tablero
Draw_a_chessman(i 1, j 1, screen, color)
#Reproduce el efecto de sonido
play_chess_sound.play (0)
#Registra la posición del movimiento en el mapa
map[i][j]= color
#Guardar el mapa en mapas
map3=copy.deepcopy(map)
maps.append(map3)
# Juzgue si hay una línea de cinco piezas después de la jugada
if win(i , j):
if t:
text('Las negras ganan, por favor, juega de nuevo', pantalla, 30)
else:
text('Las blancas ganan, por favor juega de nuevo', pantalla, 30)
#Reproducir sonido efectos
victor_sound.play(0)
#Evitar más movimientos al tablero
running=False
pygame.display.flip()
t=not t
# Si hace clic en 'Comenzar de nuevo'
si 900lt;xlt;1100 y 500lt;ylt;600:
#Unblock
running=True
#Reproducir efectos de sonido
button_sound.play(0)
#Reiniciar
main()
#Haz clic en 'para salir el juego', sal del juego
elif 900lt >
pygame.quit()
sys.exit()
#Haz clic en 'Arrepentirse'
elif 900lt; xlt; 1020 y 350lt; ylt ;450 y len(maps)!=1:
#Reproducir efectos de sonido
button_sound.play( 0)
#Eliminar el último elemento en mapas
p>del mapas[len(maps)-1]
#Copiar el último elemento al mapa
map=copy.deepcopy(maps[len(maps) -1])
#Cambiar orden
t=not t
#Mostrar el mapa
Draw_a_chessbo
ard_with_chessman(mapa, pantalla)
#El arrepentimiento se completa, evita el arrepentimiento nuevamente
x, y=0, 0
clock.tick(60) p >
if __name__ == "__main__":
prueba:
main()
excepto SystemExit:
pasa
excepto:
traceback.print_exc()
pygame.quit()
input()