图形编程五子棋代码是什么
其他 13
-
五子棋是一种非常经典的棋类游戏,它可以通过图形编程实现。下面是一个简单的五子棋代码示例:
import pygame # 初始化游戏 pygame.init() # 设置棋盘大小和每个格子的大小 board_size = 15 grid_size = 40 board_width = board_size * grid_size board_height = board_size * grid_size # 设置窗口大小 screen = pygame.display.set_mode((board_width, board_height)) # 设置游戏标题 pygame.display.set_caption("五子棋") # 定义棋盘数组 board = [[0] * board_size for _ in range(board_size)] # 定义当前玩家,默认为1 current_player = 1 # 定义游戏是否结束,默认为False game_over = False # 定义游戏主循环 while not game_over: for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.MOUSEBUTTONDOWN and not game_over: # 获取鼠标点击位置 x, y = pygame.mouse.get_pos() # 计算点击位置对应的棋盘格子 row = y // grid_size col = x // grid_size # 判断当前位置是否为空 if board[row][col] == 0: # 在当前位置下子 board[row][col] = current_player # 切换玩家 current_player = 3 - current_player # 绘制棋盘 screen.fill((255, 255, 255)) for row in range(board_size): for col in range(board_size): if board[row][col] == 1: pygame.draw.circle(screen, (0, 0, 0), (col * grid_size + grid_size // 2, row * grid_size + grid_size // 2), grid_size // 2 - 2) elif board[row][col] == 2: pygame.draw.circle(screen, (255, 255, 255), (col * grid_size + grid_size // 2, row * grid_size + grid_size // 2), grid_size // 2 - 2) pygame.draw.rect(screen, (0, 0, 0), (col * grid_size, row * grid_size, grid_size, grid_size), 1) # 判断是否有玩家获胜 for row in range(board_size): for col in range(board_size): if board[row][col] != 0: # 判断横向是否有五子连珠 if col + 4 < board_size and board[row][col] == board[row][col + 1] == board[row][col + 2] == board[row][col + 3] == board[row][col + 4]: game_over = True # 判断纵向是否有五子连珠 if row + 4 < board_size and board[row][col] == board[row + 1][col] == board[row + 2][col] == board[row + 3][col] == board[row + 4][col]: game_over = True # 判断右下斜向是否有五子连珠 if row + 4 < board_size and col + 4 < board_size and board[row][col] == board[row + 1][col + 1] == board[row + 2][col + 2] == board[row + 3][col + 3] == board[row + 4][col + 4]: game_over = True # 判断左下斜向是否有五子连珠 if row + 4 < board_size and col - 4 >= 0 and board[row][col] == board[row + 1][col - 1] == board[row + 2][col - 2] == board[row + 3][col - 3] == board[row + 4][col - 4]: game_over = True # 判断是否平局 if all(board[row][col] != 0 for row in range(board_size) for col in range(board_size)): game_over = True # 更新屏幕 pygame.display.flip() # 退出游戏 pygame.quit()这段代码使用Pygame库实现了一个简单的五子棋游戏。游戏界面使用一个15×15的棋盘,每个格子的大小为40×40像素。玩家通过点击鼠标在棋盘上下子,黑子为1,白子为2。游戏会判断是否有玩家获胜或者平局,并在屏幕上绘制出棋盘和棋子。你可以根据自己的需要对代码进行修改和扩展。
1年前 -
五子棋是一种经典的策略棋类游戏,以下是一个简单的图形编程五子棋的代码示例:
import pygame import sys # 初始化游戏 pygame.init() size = width, height = 600, 600 screen = pygame.display.set_mode(size) pygame.display.set_caption("五子棋") # 定义颜色 black = 0, 0, 0 white = 255, 255, 255 # 定义棋盘相关参数 grid_size = 40 grid_num = 15 grid_offset = (width - grid_size * (grid_num - 1)) // 2 chess_radius = 18 # 初始化棋盘 chessboard = [[0] * grid_num for _ in range(grid_num)] player = 1 # 玩家1为黑棋,玩家2为白棋 game_over = False # 绘制棋盘 def draw_chessboard(): screen.fill((224, 165, 96)) for i in range(grid_num): pygame.draw.line(screen, black, (grid_offset, grid_offset + i * grid_size), (grid_offset + (grid_num - 1) * grid_size, grid_offset + i * grid_size), 1) pygame.draw.line(screen, black, (grid_offset + i * grid_size, grid_offset), (grid_offset + i * grid_size, grid_offset + (grid_num - 1) * grid_size), 1) # 绘制棋子 def draw_chess(x, y, player): pygame.draw.circle(screen, black if player == 1 else white, (grid_offset + x * grid_size, grid_offset + y * grid_size), chess_radius) # 判断胜负 def check_win(x, y, player): directions = [(1, 0), (0, 1), (1, 1), (1, -1)] # 四个方向:水平、垂直、正斜线、反斜线 for dx, dy in directions: count = 1 for i in range(1, 5): new_x = x + dx * i new_y = y + dy * i if 0 <= new_x < grid_num and 0 <= new_y < grid_num and chessboard[new_x][new_y] == player: count += 1 else: break for i in range(1, 5): new_x = x - dx * i new_y = y - dy * i if 0 <= new_x < grid_num and 0 <= new_y < grid_num and chessboard[new_x][new_y] == player: count += 1 else: break if count >= 5: return True return False # 游戏主循环 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN and not game_over: if pygame.mouse.get_pressed()[0]: mouse_x, mouse_y = pygame.mouse.get_pos() x = (mouse_x - grid_offset) // grid_size y = (mouse_y - grid_offset) // grid_size if 0 <= x < grid_num and 0 <= y < grid_num and chessboard[x][y] == 0: chessboard[x][y] = player draw_chess(x, y, player) if check_win(x, y, player): game_over = True print("玩家 %d 胜利!" % player) player = 2 if player == 1 else 1 if game_over: pygame.draw.rect(screen, (255, 255, 255), (100, 250, 400, 100)) font = pygame.font.Font(None, 64) text = font.render("玩家 %d 胜利!" % player, True, (0, 0, 0)) screen.blit(text, (150, 280)) pygame.display.flip()以上代码使用了Pygame库来实现图形界面,主要包括棋盘的绘制、棋子的绘制、胜负的判断等功能。在游戏主循环中,通过监听鼠标点击事件来实现玩家与电脑的交互。其中,check_win函数用来判断是否有玩家获胜。游戏结束后,会显示胜利玩家的信息。
这只是一个简单的五子棋游戏代码示例,可以根据需求进行扩展和改进,比如添加AI对战功能、优化界面等。
1年前 -
五子棋是一种非常经典的棋类游戏,它可以通过图形编程来实现。在图形编程中,我们可以使用各种编程语言和库来创建一个五子棋的游戏界面,并编写相应的代码来实现游戏逻辑。下面是一个使用Python语言和Pygame库来实现五子棋游戏的代码示例:
- 导入必要的库
import pygame import sys- 初始化游戏界面
# 初始化Pygame pygame.init() # 设置游戏界面的尺寸 size = width, height = 600, 600 # 创建游戏界面 screen = pygame.display.set_mode(size) # 设置游戏界面的标题 pygame.display.set_caption("五子棋") # 设置棋盘的尺寸和格子的大小 board_size = 15 grid_size = width // board_size # 设置棋子的半径 piece_radius = grid_size // 2 - 2- 定义游戏相关的变量
# 定义棋盘的二维数组 board = [[0] * board_size for _ in range(board_size)] # 定义当前玩家,默认为1表示黑棋 current_player = 1 # 定义游戏结束的标志,默认为False game_over = False- 定义绘制棋盘的函数
def draw_board(): # 绘制棋盘的背景 screen.fill((255, 204, 102)) # 绘制棋盘的网格线 for i in range(board_size): pygame.draw.line(screen, (0, 0, 0), (grid_size // 2, i * grid_size + grid_size // 2), (width - grid_size // 2, i * grid_size + grid_size // 2), 1) pygame.draw.line(screen, (0, 0, 0), (i * grid_size + grid_size // 2, grid_size // 2), (i * grid_size + grid_size // 2, height - grid_size // 2), 1) # 绘制棋盘上的棋子 for i in range(board_size): for j in range(board_size): if board[i][j] == 1: pygame.draw.circle(screen, (0, 0, 0), (i * grid_size + grid_size // 2, j * grid_size + grid_size // 2), piece_radius) elif board[i][j] == 2: pygame.draw.circle(screen, (255, 255, 255), (i * grid_size + grid_size // 2, j * grid_size + grid_size // 2), piece_radius) # 刷新游戏界面 pygame.display.flip()- 定义检查游戏是否结束的函数
def check_game_over(): # 检查横向是否有五子连珠 for i in range(board_size - 4): for j in range(board_size): if board[i][j] != 0 and board[i][j] == board[i + 1][j] == board[i + 2][j] == board[i + 3][j] == board[i + 4][j]: return True # 检查纵向是否有五子连珠 for i in range(board_size): for j in range(board_size - 4): if board[i][j] != 0 and board[i][j] == board[i][j + 1] == board[i][j + 2] == board[i][j + 3] == board[i][j + 4]: return True # 检查斜向是否有五子连珠 for i in range(board_size - 4): for j in range(board_size - 4): if board[i][j] != 0 and board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2] == board[i + 3][j + 3] == board[i + 4][j + 4]: return True for i in range(board_size - 4): for j in range(4, board_size): if board[i][j] != 0 and board[i][j] == board[i + 1][j - 1] == board[i + 2][j - 2] == board[i + 3][j - 3] == board[i + 4][j - 4]: return True return False- 主循环
while not game_over: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN: if pygame.mouse.get_pressed()[0]: x, y = pygame.mouse.get_pos() i = x // grid_size j = y // grid_size if board[i][j] == 0: board[i][j] = current_player if current_player == 1: current_player = 2 else: current_player = 1 if check_game_over(): game_over = True draw_board()- 游戏结束后的处理
while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 绘制游戏结束的提示信息 font = pygame.font.Font(None, 36) text = font.render("Game Over!", True, (0, 0, 0)) screen.blit(text, (width // 2 - text.get_width() // 2, height // 2 - text.get_height() // 2)) # 刷新游戏界面 pygame.display.flip()通过以上代码,我们可以实现一个基本的五子棋游戏界面和游戏逻辑。当玩家下棋时,程序会根据玩家的操作更新棋盘上的棋子,并检查游戏是否结束。当游戏结束时,程序会显示游戏结束的提示信息,并停止运行。你可以根据自己的需求进一步扩展和优化这个代码,添加更多的功能和交互效果。
1年前