猫史档案馆


【Python作品分享】gobang-五子棋大战【作品秀】

用户:极客晨星星沙体验中心极客晨星星沙体验中心查看:0 回复:0 评论:0 创建时间:2020-09-10T23:02:38


【作品展示】

center_image

 

【作品介绍】

纯代码实现五子棋,无需添加素材。

 

【作品源代码】

# -*- coding=utf-8 -*-
import random
import pygame
from pygame.locals import MOUSEBUTTONUP
pygame.init()

space = 60 # 四周留下的边距
cell_size = 40 # 每个格子大小
cell_num = 15
grid_size = cell_size * (cell_num - 1) + space * 2 # 棋盘的大小
screencaption = pygame.display.set_caption('五子棋')
screen = pygame.display.set_mode((grid_size,grid_size)) #设置窗口长宽

chess_arr = []
flag = 1 # 1黑 2白
game_state = 1 # 游戏状态1.表示正常进行 2.表示黑胜 3.表示白胜

def get_one_dire_num(lx, ly, dx, dy, m):
    tx = lx
    ty = ly
    s = 0
    while True:
        tx += dx
        ty += dy
        if tx < 0 or tx >= cell_num or ty < 0 or ty >= cell_num or m[ty][tx] == 0: return s
        s+=1

def check_win(chess_arr, flag):
    m = [[0]*cell_num for i in range(cell_num)] # 先定义一个15*15的全0的数组,不能用[[0]*cell_num]*cell_num的方式去定义因为一位数组会被重复引用
    for x, y, c in chess_arr:
        if c == flag:
            m[y][x] = 1 # 上面有棋则标1
    lx = chess_arr[-1][0] # 最后一个子的x
    ly = chess_arr[-1][1] # 最后一个子的y
    dire_arr = [[(-1,0),(1,0)],[(0,-1),(0,1)],[(-1,-1),(1,1)],[(-1,1),(1,-1)]] # 4个方向数组,往左+往右、往上+往下、往左上+往右下、往左下+往右上,4组判断方向
    
    for dire1,dire2 in dire_arr:
        dx, dy = dire1
        num1 = get_one_dire_num(lx, ly, dx, dy, m)
        dx, dy = dire2
        num2 = get_one_dire_num(lx, ly, dx, dy, m)
        if num1 + num2 + 1 >= 5: return True

    return False

while True:
    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             pygame.quit()
             exit()
    
         if game_state == 1 and event.type == pygame.MOUSEBUTTONUP: # 鼠标弹起
             x, y = pygame.mouse.get_pos() # 获取鼠标位置
             xi = int(round((x - space)*1.0/cell_size)) # 获取到x方向上取整的序号
             yi = int(round((y - space)*1.0/cell_size)) # 获取到y方向上取整的序号
             if xi>=0 and xi=0 and yi

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页