import pygame
pygame.init()
white = (255, 255, 255)
black = (0, 0, 0)
address = "C:/Users/user/PycharmProjects/untitled16/safsa/"
# 이미지 로드
imgWhiteRook = pygame.image.load(address + "MEETAMER.png")
imgBlackRook = pygame.image.load(address + "GOCKMINANDPOWER.png")
imgWhiteBishop = pygame.image.load(address + "a.png")
imgBlackBishop = pygame.image.load(address + "b.png")
imgBlackNight = pygame.image.load(address + "g.png")
imgWhiteNight = pygame.image.load(address + "l.png")
imgWhitePhon = pygame.image.load(address + "download.png")
imgWhiteQueen = pygame.image.load(address + "zld.png")
imgBlackPhon = pygame.image.load(address + "sada.png")
imgWhiteKing = pygame.image.load(address + "znls.png")
# 화면 설정
width, height = 1024, 1024
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Chessboard")
clock = pygame.time.Clock()
ic, jc = 8, 8
v = 128
size = width // jc
# 이미지 크기 조정 (모든 말을 동일한 크기로)
objScaleWhiteRook = pygame.transform.scale(imgWhiteRook, (size, size))
objScaleBlackRook = pygame.transform.scale(imgBlackRook, (size, size))
objScaleWhiteBishop = pygame.transform.scale(imgWhiteBishop, (size, size))
objScaleBlackBishop = pygame.transform.scale(imgBlackBishop, (size, size))
objScaleBlackNight = pygame.transform.scale(imgBlackNight, (size, size))
objScaleWhiteNight = pygame.transform.scale(imgWhiteNight, (size, size))
objScaleWhitePhon = pygame.transform.scale(imgWhitePhon, (size, size))
objScaleWhiteQueen = pygame.transform.scale(imgWhiteQueen, (size, size))
objScaleWhiteKing = pygame.transform.scale(imgWhiteKing, (size, size))
objScaleBlackPhon = pygame.transform.scale(imgBlackPhon, (size, size))
board = [[None for _ in range(jc)] for _ in range(ic)]
board[0][0] = (objScaleBlackRook, objScaleBlackRook.get_rect(topleft=(0, 0)))
board[0][1] = (objScaleBlackNight, objScaleBlackNight.get_rect(topleft=(v, 0)))
board[0][2] = (objScaleBlackBishop, objScaleBlackBishop.get_rect(topleft=(v * 2, 0)))
board[0][3] = (objScaleWhiteQueen, objScaleWhiteQueen.get_rect(topleft=(v * 3, 0)))
board[0][4] = (objScaleWhiteKing, objScaleWhiteKing.get_rect(topleft=(v * 4, 0)))
board[0][5] = (objScaleBlackBishop, objScaleBlackBishop.get_rect(topleft=(v * 5, 0)))
board[0][6] = (objScaleBlackNight, objScaleBlackNight.get_rect(topleft=(v * 6, 0)))
board[0][7] = (objScaleBlackRook, objScaleBlackRook.get_rect(topleft=(v * 7, 0)))
# 폰 배치
for i in range(jc):
board[1][i] = (objScaleBlackPhon, objScaleBlackPhon.get_rect(topleft=(v * i, v)))
board[6][i] = (objScaleWhitePhon, objScaleWhitePhon.get_rect(topleft=(v * i, v * 6)))
board[7][0] = (objScaleWhiteRook, objScaleWhiteRook.get_rect(topleft=(0, v * 7)))
board[7][1] = (objScaleWhiteNight, objScaleWhiteNight.get_rect(topleft=(v, v * 7)))
board[7][2] = (objScaleWhiteBishop, objScaleWhiteBishop.get_rect(topleft=(v * 2, v * 7)))
board[7][3] = (objScaleWhiteQueen, objScaleWhiteQueen.get_rect(topleft=(v * 3, v * 7)))
board[7][4] = (objScaleWhiteKing, objScaleWhiteKing.get_rect(topleft=(v * 4, v * 7)))
board[7][5] = (objScaleWhiteBishop, objScaleWhiteBishop.get_rect(topleft=(v * 5, v * 7)))
board[7][6] = (objScaleWhiteNight, objScaleWhiteNight.get_rect(topleft=(v * 6, v * 7)))
board[7][7] = (objScaleWhiteRook, objScaleWhiteRook.get_rect(topleft=(v * 7, v * 7)))
dragged_piece = None
offset_x = 0
offset_y = 0
def draw_board():
for i in range(ic):
for j in range(jc):
x = j * size
y = i * size
if (i + j) % 2 == 0:
color = white
else:
color = black
pygame.draw.rect(screen, color, (x, y, size, size))
def draw_pieces():
for i in range(ic):
for j in range(jc):
piece_data = board[i][j]
if piece_data is not None and piece_data != dragged_piece:
screen.blit(piece_data[0], piece_data[1])
# 드래그 중인 말을 맨 위에 그리기
if dragged_piece is not None:
screen.blit(dragged_piece[0], dragged_piece[1])
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 마우스 버튼 누름
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1: # 왼쪽 마우스 버튼
mouse_pos = event.pos
# 클릭된 말 찾기
for i in range(ic):
for j in range(jc):
piece_data = board[i][j]
if piece_data is not None and piece_data[1].collidepoint(mouse_pos):
dragged_piece = piece_data
board[i][j] = None
offset_x = mouse_pos[0] - dragged_piece[1].x
offset_y = mouse_pos[1] - dragged_piece[1].y
break
if dragged_piece:
break
# 마우스 이동
if event.type == pygame.MOUSEMOTION:
if dragged_piece is not None:
mouse_pos = event.pos
dragged_piece[1].x = mouse_pos[0] - offset_x
dragged_piece[1].y = mouse_pos[1] - offset_y
# 마우스 버튼 놓음
if event.type == pygame.MOUSEBUTTONUP:
if event.button == 1 and dragged_piece is not None:
# 드래그가 끝난 위치를 보드 좌표로 변환
final_pos_x = dragged_piece[1].x
final_pos_y = dragged_piece[1].y
# 정해진 격자 위치에 놓기
grid_x = round(final_pos_x / size)
grid_y = round(final_pos_y / size)
# 보드 범위 내에 있는지 확인
if 0 <= grid_x < jc and 0 <= grid_y < ic:
# 해당 위치에 말이 없으면 이동
if board[grid_y][grid_x] is None:
dragged_piece[1].x = grid_x * size
dragged_piece[1].y = grid_y * size
board[grid_y][grid_x] = dragged_piece
else: # 이미 다른 말이 있으면 먹어치우기
board[grid_y][grid_x]=dragged_piece
dragged_piece = None
# 그리기
draw_board()
draw_pieces()
pygame.display.flip()
clock.tick(60) # 프레임 속도 증가
pygame.quit()
top of page

실제 작동 상태를 확인하려면 라이브 사이트로 이동하세요.
20250918
20250918
댓글 0개
좋아요
댓글(0)
더 이상 게시물에 대한 댓글 기능이 지원되지 않습니다. 자세한 사항은 사이트 소유자에게 문의하세요.
bottom of page


