猫史档案馆


【Python作品分享】五子棋【教程贴】

用户:121115121115查看:0 回复:2 评论:0 创建时间:2023-11-09T19:42:16


【作品展示】

center_image

 

【作品介绍】

本作品使用pygame 2.5.2来制作,代码注释就不写了,一共132行代码。

温馨提示:如果您使用的不是pygame 2.5.2,可能会出现Bug。

 

【作品源代码】

import pygame

pygame.init()
screen = pygame.display.set_mode((750, 750))

row_map = [0]*15
for i in range(15):
    row_map[i] = [0]*15

player = 1
winner = 0

running = True

def check(row,col):
    score = 1
    for i in range(4):
        if row_map[row][col+i] == row_map[row][col+i+1]:
            score += 1
        else:
            break
    for i in range(4):
        if row_map[row][col-i] == row_map[row][col-i-1]:
            score += 1
        else:
            break
    if score == 5:
        return True

    score = 1
    for i in range(4):
        if row_map[row+i][col] == row_map[row+i+1][col]:
            score += 1
        else:
            break
    for i in range(4):
        if row_map[row-i][col] == row_map[row-i-1][col]:
            score += 1
        else:
            break
    if score == 5:
        return True

    score = 1
    for i in range(4):
        if row_map[row+i][col+i] == row_map[row+i+1][col+i+1]:
            score += 1
        else:
            break
    for i in range(4):
        if row_map[row-i][col-i] == row_map[row-i-1][col-i-1]:
            score += 1
        else:
            break
    if score == 5:
        return True

    score = 1
    for i in range(4):
        if row_map[row+i][col-i] == row_map[row+i+1][col-i-1]:
            score += 1
        else:
            break
    for i in range(4):
        if row_map[row-i][col+i] == row_map[row-i-1][col+i+1]:
            score += 1
        else:
            break
    if score == 5:
        return True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            x, y = pygame.mouse.get_pos()
            col = round((x - 25)/50)
            row = round((y - 25)/50)
            if row_map[row][col] == 0:
                row_map[row][col] = player
                if (check(row,col)):
                    winner = player
                else:
                    if player == 1:
                        player = 2
                    else:
                        player = 1
            else:
                print("这里有子")

        screen.fill("#EE9A49")

        for x in range(15):
            pygame.draw.line(screen, "#000000", [25+50*x, 25], [25+50*x, 725], 2)

        for x in range(15):
            pygame.draw.line(screen, "#000000", [25, 25+50*x], [725, 25+50*x], 2)

        pygame.draw.circle(screen, "#000000", [25 + 50*7, 25 + 50*7],8)

        x, y = pygame.mouse.get_pos()
        x = round((x - 25)/50)*50 + 25
        y = round((y - 25)/50)*50 + 25

        pygame.draw.rect(screen,"#FFFFFF",[x - 25,y - 25,50,50],2)

        for row in range(15):
            for col in range(15):
                if row_map[row][col] == 1:
                    pygame.draw.circle(screen,"#000000",[col*50+25,row*50+25],25)
                if row_map[row][col] == 2:
                    pygame.draw.circle(screen, "#FFFFFF", [col*50+25, row*50+25], 25)

        pygame.display.update()

        if(winner!=0):
            if winner == 1:
                text = '黑子赢了!3秒关闭'
                color = (0,0,0)
            else:
                text = '白子赢了!3秒关闭'
                color = (255, 255, 255)
            font = pygame.font.Font("font.ttf",70)
            text_surface = font.render(text,True,color)
            text_position = (100,100)
            screen.blit(text_surface,text_position)
            pygame.display.update()
            pygame.time.wait(3000)
            running = False

pygame.quit()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
121115121115

对了,我没有放落子时的效果图,你们可以自己运行一下。

点赞0


评论


追梦ez追梦ez

哇!大佬nb

点赞0


评论