親自動手實現Python+pygame中國象棋遊戲

dong4716138發表於2021-04-03

功能1:實現遊戲整體介面顯示

一、建立基本的結構

程式碼如下:

import time
import pygame


def main():
    # 初始化pygame
    pygame.init()
    # 建立用來顯示畫面的物件(理解為相框)
    screen = pygame.display.set_mode((750, 667))

    # 主迴圈
    while True:
        time.sleep(0.1)

        # 顯示screen這個相框的內容(此時在這個相框中的內容像照片、文字等會顯示出來)
        pygame.display.update()


if __name__ == '__main__':
    main()

執行效果:

二、顯示背景

1. 新增圖片

點選如下地址下載素材

https://www.itprojects.cn/58.html

2. 顯示一張圖片

程式碼如下

import time
import pygame


def main():
    # 初始化pygame
    pygame.init()
    # 建立用來顯示畫面的物件(理解為相框)
    screen = pygame.display.set_mode((750, 667))
    # 遊戲背景圖片
    background_img = pygame.image.load("images/bg.jpg")

    # 主迴圈
    while True:
        # 顯示遊戲背景
        screen.blit(background_img, (0, 0))

        time.sleep(0.1)

        # 顯示screen這個相框的內容(此時在這個相框中的內容像照片、文字等會顯示出來)
        pygame.display.update()


if __name__ == '__main__':
    main()

執行效果

3. 通過多張圖片實現整體背景

import time
import pygame


def main():
    # 初始化pygame
    pygame.init()
    # 建立用來顯示畫面的物件(理解為相框)
    screen = pygame.display.set_mode((750, 667))
    # 遊戲背景圖片
    background_img = pygame.image.load("images/bg.jpg")

    # 主迴圈
    while True:
        # 顯示遊戲背景
        screen.blit(background_img, (0, 0))
        screen.blit(background_img, (0, 270))
        screen.blit(background_img, (0, 540))

        time.sleep(0.1)

        # 顯示screen這個相框的內容(此時在這個相框中的內容像照片、文字等會顯示出來)
        pygame.display.update()


if __name__ == '__main__':
    main()

三、滑鼠關閉視窗

import sys
import time
import pygame


def main():
    # 初始化pygame
    pygame.init()
    # 建立用來顯示畫面的物件(理解為相框)
    screen = pygame.display.set_mode((750, 667))
    # 遊戲背景圖片
    background_img = pygame.image.load("images/bg.jpg")

    # 主迴圈
    while True:
        # 事件檢測(例如點選了鍵盤、滑鼠等)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()  # 退出程式

        # 顯示遊戲背景
        screen.blit(background_img, (0, 0))
        screen.blit(background_img, (0, 270))
        screen.blit(background_img, (0, 540))

        time.sleep(0.1)

        # 顯示screen這個相框的內容(此時在這個相框中的內容像照片、文字等會顯示出來)
        pygame.display.update()


if __name__ == '__main__':
    main()

執行效果

四、顯示棋盤

程式碼

import sys
import time
import pygame


def main():
    # 初始化pygame
    pygame.init()
    # 建立用來顯示畫面的物件(理解為相框)
    screen = pygame.display.set_mode((750, 667))
    # 遊戲背景圖片
    background_img = pygame.image.load("images/bg.jpg")
    # 遊戲棋盤
    chessboard_img = pygame.image.load("images/bg.png")

    # 主迴圈
    while True:
        # 事件檢測(例如點選了鍵盤、滑鼠等)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()  # 退出程式

        # 顯示遊戲背景
        screen.blit(background_img, (0, 0))
        screen.blit(background_img, (0, 270))
        screen.blit(background_img, (0, 540))

        # 顯示棋盤
        screen.blit(chessboard_img, (50, 50))

        time.sleep(0.1)

        # 顯示screen這個相框的內容(此時在這個相框中的內容像照片、文字等會顯示出來)
        pygame.display.update()


if __name__ == '__main__':
    main()

執行效果

五、顯示棋子

程式碼

import sys
import time
import pygame


def main():
    # 初始化pygame
    pygame.init()
    # 建立用來顯示畫面的物件(理解為相框)
    screen = pygame.display.set_mode((750, 667))
    # 遊戲背景圖片
    background_img = pygame.image.load("images/bg.jpg")
    # 遊戲棋盤
    chessboard_img = pygame.image.load("images/bg.png")
    # 棋子
    chessboard_map = [
        ["b_c", "b_m", "b_x", "b_s", "b_j", "b_s", "b_x", "b_m", "b_c"],
        ["", "", "", "", "", "", "", "", ""],
        ["", "b_p", "", "", "", "", "", "b_p", ""],
        ["b_z", "", "b_z", "", "b_z", "", "b_z", "", "b_z"],
        ["", "", "", "", "", "", "", "", ""],
        ["", "", "", "", "", "", "", "", ""],
        ["r_z", "", "r_z", "", "r_z", "", "r_z", "", "r_z"],
        ["", "r_p", "", "", "", "", "", "r_p", ""],
        ["", "", "", "", "", "", "", "", ""],
        ["r_c", "r_m", "r_x", "r_s", "r_j", "r_s", "r_x", "r_m", "r_c"],
    ]
    for row, line in enumerate(chessboard_map):
        for col, chess_name in enumerate(line):
            if chess_name:
                # 將建立的棋子新增到屬性map中
                chessboard_map[row][col] = [pygame.image.load("images/" + chess_name + ".png"), (50 + col * 57, 50 + row * 57)]
            else:
                chessboard_map[row][col] = None

    # 主迴圈
    while True:
        # 事件檢測(例如點選了鍵盤、滑鼠等)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()  # 退出程式

        # 顯示遊戲背景
        screen.blit(background_img, (0, 0))
        screen.blit(background_img, (0, 270))
        screen.blit(background_img, (0, 540))

        # 顯示棋盤
        screen.blit(chessboard_img, (50, 50))

        # 顯示棋盤上的所有棋子
        for line_chess in chessboard_map:
            for chess in line_chess:
                if chess:
                    screen.blit(chess[0], chess[1])

        time.sleep(0.1)

        # 顯示screen這個相框的內容(此時在這個相框中的內容像照片、文字等會顯示出來)
        pygame.display.update()


if __name__ == '__main__':
    main()

執行效果

更多步驟

更多步驟請訪問 https://book.itprojects.cn/01-b29fd8caf9b9ad57558c3a7c84c3de97/index.html

相關文章