五子棋(Python实现)

'''
五子棋游戏制作流程:
    1.准备工作:
        导入、初始化、创建屏幕、游戏说明、while循环、延迟时间、退出事件、更新
    2.加载所需图片
    3.下棋的制作流程:
        是否能下棋,下的什么棋、图片展示
    4.判断某一方胜利的规则的代码编写
    5.游戏结束弹幕展示
    6.重置系统
'''
import pygame,time,sys
from pygame.locals import *
from pygame import Rect
pygame.init()
pm=pygame.display.set_mode((800,800))
pygame.display.set_caption('五子棋')
bac=pygame.image.load('bac.jpg')
bacc=pygame.image.load('bacc.png')
black=pygame.image.load('black.png')
new_black=pygame.image.load('new_black.png')
new_white=pygame.image.load('new_white.png')
white=pygame.image.load('white.png')
def get():#这个函数是为了确定鼠标位置是否在合法区域--可以下棋的区域
    for i in range(19):
        for j in range(19):
            if Rect(20 + 40 * j,20 + 40 * i,40,40).collidepoint(event.pos):
                return i,j
def is_win(map,si,sj):
    num = 5#五子棋
    winflag = 1#没有找之前,本身算一个
    chess_find = map[si][sj]#刚下的棋的种类
    
    #左右找
    #往左找
    for i in range(1,5):#最少找一个  最多找四个
        if sj - i >= 0:#最小不能小于0
            if map[si][sj - i] == chess_find:#判断移动的位置是否与刚下的棋一致
                winflag += 1#满足条件  计数+1
            else:
                break#不满足条件则不再继续向这个方向找
    #往右找
    for i in range(1,5):
        if sj + i <= 18:
  
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的人机对弈五子棋Python实现代码: ```python import numpy as np import pygame # 初始化Pygame pygame.init() # 设置棋盘大小和棋子大小 board_size = 600 piece_size = 30 # 设置行列数 rows = board_size // piece_size cols = board_size // piece_size # 设置颜色 black = (0, 0, 0) white = (255, 255, 255) gray = (192, 192, 192) blue = (0, 0, 255) # 创建棋盘 board = np.zeros((rows, cols)) # 设置字体 font = pygame.font.Font(None, 30) # 创建屏幕 screen = pygame.display.set_mode((board_size, board_size)) pygame.display.set_caption('人机对弈五子棋') def draw_board(): # 绘制棋盘背景 screen.fill(gray) # 绘制棋盘网格 for i in range(rows): pygame.draw.line(screen, black, (0, i * piece_size), (board_size, i * piece_size)) pygame.draw.line(screen, black, (i * piece_size, 0), (i * piece_size, board_size)) # 绘制棋子 for i in range(rows): for j in range(cols): if board[i][j] == 1: pygame.draw.circle(screen, black, (i * piece_size + piece_size // 2, j * piece_size + piece_size // 2), piece_size // 2 - 2) elif board[i][j] == 2: pygame.draw.circle(screen, white, (i * piece_size + piece_size // 2, j * piece_size + piece_size // 2), piece_size // 2 - 2) # 更新屏幕 pygame.display.update() def get_winner(board): # 检查每个方向上是否有五个棋子相连 for i in range(rows): for j in range(cols): if j + 4 < cols and board[i][j] == board[i][j + 1] == board[i][j + 2] == board[i][j + 3] == board[i][j + 4]: return board[i][j] elif i + 4 < rows and board[i][j] == board[i + 1][j] == board[i + 2][j] == board[i + 3][j] == board[i + 4][j]: return board[i][j] elif i + 4 < rows and j + 4 < cols 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 board[i][j] elif i + 4 < rows and j - 4 >= 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 board[i][j] # 如果没有五个棋子相连,则返回0 return 0 def get_next_move(board, player): # 随机生成下一步棋子的位置 while True: row = np.random.randint(rows) col = np.random.randint(cols) if board[row][col] == 0: return row, col # 设置初始玩家为黑色 player = 1 # 游戏循环 while True: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() elif event.type == pygame.MOUSEBUTTONDOWN: # 获取鼠标点击位置 x, y = pygame.mouse.get_pos() row = x // piece_size col = y // piece_size if board[row][col] == 0: # 更新棋盘状态 board[row][col] = player # 检查是否有玩家获胜 winner = get_winner(board) if winner == player: text = font.render('你赢了!', True, blue) screen.blit(text, (board_size - 120, 10)) pygame.display.update() pygame.time.wait(3000) pygame.quit() quit() # 更新屏幕 draw_board() # 切换玩家 player = 2 if player == 1 else 1 # 让计算机下一步棋子 row, col = get_next_move(board, player) board[row][col] = player # 检查是否有计算机获胜 winner = get_winner(board) if winner == player: text = font.render('计算机赢了!', True, blue) screen.blit(text, (board_size - 150, 10)) pygame.display.update() pygame.time.wait(3000) pygame.quit() quit() # 更新屏幕 draw_board() # 切换玩家 player = 2 if player == 1 else 1 ``` 这个代码实现了一个简单的人机对弈五子棋游戏,玩家可以使用鼠标在棋盘上下棋,计算机会随机生成下一步棋子的位置。如果有一方获胜,则会在屏幕上显示相应的提示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值