pygame 五子棋小游戏

本文介绍了一个使用Python的pygame库编写的五子棋小游戏的实现过程。主要内容包括游戏初始化、获取鼠标事件、制作棋盘、辅助落子、判断输赢等功能。文章详细讲解了各个关键步骤,如获取棋子位置、防止重复落子和优化游戏结束后的操作。
摘要由CSDN通过智能技术生成

自己写的第一个小游戏纪念一下!!!! 

思路:1.通过鼠标光标获取位置信息,处理后将位置信息加到棋子位置列表中

2.每次点击鼠标进行一次该区域是否能继续落子的判断

3.判断胜利,禁止继续落子

效果展示: 

目录

调用模块

主程序

获取事件 

在startGame()死循环中调用getevent()

 制作棋盘

展示棋盘,在startGame()中调用drawlines() 

 辅助落子

展示辅助方格 

获取棋子位置

调用get_new_pos()

 绘制棋子

 展示棋子 

优化问题:重复落子 

判定输赢 

在屏幕上显示赢家

调用winer()

优化问题:游戏结束后仍可以落子

完整代码 

调用模块

import pygame,sys
bgcolor=pygame.Color(255,215,0)
screen_width=600
screen_height=600

主程序

进行游戏初始化,并展示窗口

class MainGame():
    #MainGame.window为主窗口
    window=None
    def __init__(self):
        pass
    #开始游戏
    def startGame(self):
        #游戏初始化
        pygame.init()
        #展示主窗口
        MainGame.window=pygame.display.set_mode([screen_width,screen_height])
        #进行死循环
        while True:
            #填充主窗口颜色为bgcolor
            MainGame.window.fill(bgcolor)
            #刷新屏幕
            pygame.display.update()

获取事件 

    def getevent(self):
        #用列表存储游戏内的事件
        eventlist=pygame.event.get()
        #循环遍历所有事件,为相应事件添加触发行为
        for event in eventlist:
            if event.type==pygame.QUIT:
                self.endGame()
            if event.type==pygame.MOUSEBUTTONDOWN:
                print('落子')

endGame()结束游戏

 def endGame(self):
     #卸载所有模块
     pygame.quit()
     sys.exit()

调用getevent()

    def startGame(self):
        pygame.init()
        MainGame.window=pygame.display.set_mode([screen_width,screen_height])
        while True:
            MainGame.window.fill(bgcolor)
            #获取事件
            self.getevent()
            pygame.display.update()

 制作棋盘

    #画棋盘格线               
    def drawlines(self):
        for i in range(15):
            pygame.draw.line(MainGame.window,[0,0,0],[i*40+20,20],[i*40+20,screen_height-20],width=2)
            pygame.draw.line(MainGame.window,[0,0,0],[20,i*40+20],[screen_width-20,i*40+20],width=2)
        pygame.draw.circle(MainGame.window,[0,0,0],[screen_width/2,screen_height/2],radius=7)

展示棋盘 


    def startGame(self):
        pygame.init()
        MainGame.window=pygame.display.set_mode([screen_width,screen_height])
        while True:
            MainGame.window.fill(bgcolor)
            #显示棋盘格线
            self.drawlines()
            self.getevent()
            pygame.display.update()

 辅助落子

用check()函数,在玩家鼠标移动到落子区域时画一个小方格辅助玩家落子

    def check(self):
        #获取鼠标光标位置
        mouse=pygame.mouse.get_pos()
        #通过取整得到鼠标位于哪个落点的势力范围,并生成一个正方形
        left=int(mouse[0]/40)*40
        top=int(mouse[1]/40)*40
        pygame.draw.line(MainGame.window,[227,23,13],[left,top],[left+40,top])
        pygame.draw.line(MainGame.window,[227,23,13],[left,top],[left,top+40])
        pygame.draw.line(MainGame.window,[227,23,13],[left+40,top],[left+40,top+40])
        pygame.draw.line(MainGame.window,[227,23,13],[left,top+40],[left+40,top+40])

展示辅助方格 


    def startGame(self):
        #游戏初始化
        pygame.init()
        #展示主窗口
        MainGame.window=pygame.display.set_mode([screen_width,screen_height])
        #进行死循环
        while True:
            MainGame.window.fill(bgcolor)
            self.drawlines()
            self.getevent()
            #在能落子的位置周围生成一个正方形提示玩家该区域为落子区域
            self.check()
            pygame.display.update()

获取棋子位置

在主程序中添加一个w_b=1变量,bchess=[],wchess=[]。获取位置后进行判定,w_b==1则为黑棋位置,w_b==0则为白棋位置,传入相应列表

class MainGame():
    window=None
    #添加变量和列表
    w_b=1
    bchess=[]
    wchess=[]
    #通过点击鼠标左键,获取落子位置,并将位置信息传入棋子列表
    def get_new_pos(self):
        mouse=pygame.mouse.get_pos()
        left=int(mouse[0]/40)*40+20
        top=int(mouse[1]/40)*40+20
        chesspos=[left,top]
        #对w_b进行判定,w_b=
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲲鲲来了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值