自己写的第一个小游戏纪念一下!!!!
思路:1.通过鼠标光标获取位置信息,处理后将位置信息加到棋子位置列表中
2.每次点击鼠标进行一次该区域是否能继续落子的判断
3.判断胜利,禁止继续落子
效果展示:
目录
展示棋盘,在startGame()中调用drawlines()
调用模块
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=