파이 게임을 사용하는 간단한 Python Tic-Tac-Toe 게임

6760 단어 pythonpygametictactoe
안녕하세요 데브월드입니다! 이 블로그는 우리가 어린 시절부터 하던 간단하고 멋진 게임을 만들려고 합니다. 90년대 우리가 학교 시간에 했던 최고의 게임입니다.네 잘 들었습니다! 그것의 TIC TAC TOE 게임. Python으로 빌드하는 방법을 보여 드리겠습니다. 그러나 멀리 이동하여 Tic Tac Toe 게임의 정의를 알려 드리겠습니다.

박하 사탕 발가락 게임의 정의:

두 명의 플레이어가 서로 다른 차례를 찾아 행, 열 또는 대각선을 완성하는 전통적인 전략 게임으로, 9개의 사각형 격자 공간에 3개의 O 또는 3개의 X가 그려져 있습니다. 사각형에는 다른 넛과 십자가가 있습니다. 그것은 일반적으로 종이와 연필 게임이지만 지금은 컴퓨터 게임처럼 프로그래밍되어 있습니다. 사각형의 가로, 세로 또는 대각선 행에 세 개의 표시를 먼저 완료한 플레이어가 승리합니다.

우리가 이것에 대해 알게 되면서, 이 게임을 만드는 첫 번째 단계로 가자:

게임 요구 사항:


  • Python 환경 및 pygame 패키지가 설치된 빠르고 처리가 좋은 PC. Mac Book, Asus Zenbook, Dell Inspiron 또는 고성능 프로세서가 탑재된 모든 PC를 선택할 수 있습니다.
  • Code Ide 또는 Code Editor.(저는 Pycharm 편집기를 사용했습니다. 완전히
    당신에게 달려 있습니다)
  • 중요한 표기법을 쓰기 위한 노트.
  • 당신의 초점.

  • 게임 작동 방식:


  • 우리의 Tic Tac Toe는 두 명의 사용자 또는
    플레이어가 동시에 게임을 플레이할 수 있습니다.
  • GUI 게임이며 플레이어가 승리하거나
    패배하거나 게임을 무승부.

  • 이 멋진 게임을 라이브로 만드는 데 필요한 단계:


  • 우선, PC에 any라는 폴더를 만들고 드래그하십시오.
    당신의 코드 편집기.
  • 둘째, 명령 프롬프트(CMD)를 열고 파이 게임을 설치합니다.
    pip install pygame 명령을 입력하여 패키지를 만듭니다.
    Windows10 OS)
  • 셋째, TicTacToeGame.py라는 파일과 폴더를 만듭니다.
    영상. 모든 코드 및 이미지 리소스를 저장합니다.
    게임에 필요한 파일.
  • 아래에 주어진 코드를 각각의 파일에 설정하십시오.
    그리고 그 코드에서 사용한 이미지는 당신에게 달려 있습니다. 단지
    X 및 O에 대한 편의 이미지를 다운로드하여 내부에 넣으십시오.
    이미지 폴더. 경로를 올바르게 지정하십시오.
  • **X_IMAGE =
    pygame.transform.scale(pygame.image.load("**Images/x.png**"), (150,
    150))

    O_IMAGE =
    pygame.transform.scale(pygame.image.load("**Images/o.png**"),(150,
    150))**
  • 마지막으로 이 코드를 실행하고 게임을 즐기십시오.

  • 암호



    나는 모든 새로운 코드가 이 프로젝트에 추가되기 전에 주석을 언급했습니다. 이 게임을 만들고자 하는 새로운 개발자들에게 도움이 되기를 바랍니다.

    TicTacToeGame.py

    import pygame
    import math
    # Initializing Pygame
    pygame.init()
    
    # Screen
    WIDTH = 500
    ROWS = 3
    win = pygame.display.set_mode((WIDTH, WIDTH))
    pygame.display.set_caption("TicTacToe")
    
    # Colors
    WHITE = (255, 255, 255)
    BLACK = (0, 0, 0)
    GRAY = (200, 200, 200)
    RED = (255, 0, 0)
    BLUE = (0, 0, 255)
    
    # Images
    X_IMAGE = pygame.transform.scale(pygame.image.load("Images/x.png"), (150, 150))
    O_IMAGE = pygame.transform.scale(pygame.image.load("Images/o.png"), (150, 150))
    
    # Fonts
    END_FONT = pygame.font.SysFont('courier', 40)
    
    
    def draw_grid():
        gap = WIDTH // ROWS
    
        # Starting points
        x = 0
        y = 0
    
        for i in range(ROWS):
            x = i * gap
    
            pygame.draw.line(win, GRAY, (x, 0), (x, WIDTH), 3)
            pygame.draw.line(win, GRAY, (0, x), (WIDTH, x), 3)
    
    
    def initialize_grid():
        dis_to_cen = WIDTH // ROWS // 2
    
        # Initializing the array
        game_array = [[None, None, None], [None, None, None], [None, None, None]]
    
        for i in range(len(game_array)):
            for j in range(len(game_array[i])):
                x = dis_to_cen * (2 * j + 1)
                y = dis_to_cen * (2 * i + 1)
    
                # Adding centre coordinates
                game_array[i][j] = (x, y, "", True)
    
        return game_array
    
    
    def click(game_array):
        global x_turn, o_turn, images
    
        # Mouse position
        m_x, m_y = pygame.mouse.get_pos()
    
        for i in range(len(game_array)):
            for j in range(len(game_array[i])):
                x, y, char, can_play = game_array[i][j]
    
                # Distance between mouse and the centre of the square
                dis = math.sqrt((x - m_x) ** 2 + (y - m_y) ** 2)
    
                # If it's inside the square
                if dis < WIDTH // ROWS // 2 and can_play:
                    if x_turn:  # If it's X's turn
                        images.append((x, y, X_IMAGE))
                        x_turn = False
                        o_turn = True
                        game_array[i][j] = (x, y, 'x', False)
    
                    elif o_turn:  # If it's O's turn
                        images.append((x, y, O_IMAGE))
                        x_turn = True
                        o_turn = False
                        game_array[i][j] = (x, y, 'o', False)
    
    
    # Checking if someone has won
    def has_won(game_array):
        # Checking rows
        for row in range(len(game_array)):
            if (game_array[0][2] == game_array[1][2] == game_array[2][2]) and game_array[0][2] != "":
                display_message(game_array[0][2].upper() + " has won!")
                return True
    
        # Checking columns
        for col in range(len(game_array)):
            if (game_array[0][2] == game_array[1][2] == game_array[2][2]) and game_array[0][2] != "":
                display_message(game_array[0][2].upper() + " has won!")
                return True
    
        # Checking main diagonal
        if (game_array[0][0][2] == game_array[1][1][2] == game_array[2][2][2]) and game_array[0][0][2] != "":
            display_message(game_array[0][0][2].upper() + " has won!")
            return True
    
        # Checking reverse diagonal
        if (game_array[0][2][2] == game_array[1][1][2] == game_array[2][0][2]) and game_array[0][2][2] != "":
            display_message(game_array[0][2][2].upper() + " has won!")
            return True
    
        return False
    
    
    def has_drawn(game_array):
        for i in range(len(game_array)):
            for j in range(len(game_array[i])):
                if game_array[i][j][2] == "":
                    return False
    
        display_message("It's a draw!")
        return True
    
    
    def display_message(content):
        pygame.time.delay(500)
        win.fill(WHITE)
        end_text = END_FONT.render(content, 1, BLACK)
        win.blit(end_text, ((WIDTH - end_text.get_width()) // 2, (WIDTH - end_text.get_height()) // 2))
        pygame.display.update()
        pygame.time.delay(3000)
    
    
    def render():
        win.fill(WHITE)
        draw_grid()
    
        # Drawing X's and O's
        for image in images:
            x, y, IMAGE = image
            win.blit(IMAGE, (x - IMAGE.get_width() // 2, y - IMAGE.get_height() // 2))
    
        pygame.display.update()
    
    
    def main():
        global x_turn, o_turn, images, draw
    
        images = []
        draw = False
    
        run = True
    
        x_turn = True
        o_turn = False
    
        game_array = initialize_grid()
    
        while run:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                if event.type == pygame.MOUSEBUTTONDOWN:
                    click(game_array)
    
            render()
    
            if has_won(game_array) or has_drawn(game_array):
                run = False
    
    
    while True:
        if __name__ == '__main__':
            main()
    

    최종 진술:



    초보자가 쉽게 구축하고 이해할 수 있는 간단한 초보자 친화적인 Tic-Tac-Toe 게임입니다. 내 github 페이지에서 이 코드를 직접 다운로드할 수도 있습니다. 이것이 이 게임을 만들고 친구나 친구와 함께 이 게임을 즐기는 데 도움이 되기를 바랍니다. 훌륭한 개발 환경을 연결하고 함께 구축합시다.

    건배! 행복한 코딩

    좋은 웹페이지 즐겨찾기