Python游戏源代码
将numpy作为np导入
导入pygame
导入系统
导入追溯
导入副本
从pygame.locals导入*
pygame.init()
pygame.mixer.init()
#颜色
背景=(201,202,187)
棋盘=(80,80,80)
button=(52,53,44)
#音乐
play _ chess _ sound = py game . mixer . sound(" music/play _ chess . wav ")
play _ chess _ sound . set _ volume(0.2)
button _ sound = py game . mixer . sound(" music/button . wav ")
button_sound.set_volume(0.2)
victor _ sound = py game . mixer . sound(" music/victory . wav ")
victor_sound.set_volume(0.2)
#画一个棋盘
def Draw _ a _棋盘(屏幕):
#填充背景颜色
屏幕填充(背景)
background = py game . image . load(" background . jpg ")。convert_alpha()
screen.blit(背景,(0,0))
#画一个棋盘
对于范围内的I(21):
pygame.draw.line(屏幕,棋盘,(40*i+3,3),(40*i+3,803))
pygame.draw.line(屏幕,棋盘,(3,40*i+3),(803,40*i+3))
#画一条线
pygame.draw.line(屏幕,棋盘,(3,3),(803,3),5)
pygame.draw.line(屏幕,棋盘,(3,3),(3,803),5)
pygame.draw.line(屏幕,棋盘,(803,3),(803,803),5)
pygame.draw.line(屏幕,棋盘,(3,803),(803,803),5)
#绘制锚点
pygame.draw.circle(屏幕,棋盘,(163,163),6)
pygame.draw.circle(屏幕,棋盘,(163,643),6)
pygame.draw.circle(屏幕,棋盘,(643,163),6)
pygame.draw.circle(屏幕,棋盘,(643,643),6)
pygame.draw.circle(屏幕,棋盘,(403,403),6)
#画出“后悔棋”、“重新开始”、“退出”的按钮
pygame.draw.rect(屏幕,按钮,)
#清除地图列表
定义清除():
全球地图
对于范围(24)中的I:
对于范围(24)中的j:
地图)
#定义窗口名称
Pygame.display.set_caption("五子棋")
#在窗口画一个棋盘、一个提醒和按钮
绘制棋盘(屏幕)
pygame.display.flip()
clock=pygame.time.Clock()
虽然正确:
#只有跑步是真的才能摔倒,主要用来防止赛后再次摔倒。
如果正在运行:
如果t:
color=1
文本(“黑色移动”,屏幕,54)
否则:
颜色=2
文本(“白棋走法”,屏幕,54)
对于pygame.event.get()中的事件:
#单击X关闭窗口。
if event.type ==pygame。退出:
pygame.quit()
sys.exit()
#单击窗口中的课程容量,完成相应的说明。
elif event . type = = mouse button down:
if event.button == 1:
x,y =事件位置[0],事件位置[1]
对于范围内的I(19):
对于范围内的j(19):
#单击棋盘上相应的位置
如果我* 40+3+20 & lt;x & lti*40+3+60和j * 40+3+20 & lt;y & ltj*40+3+60和不映射[i][j]和运行:
#将相应颜色的棋子放到棋盘上相应的位置。
Draw_a_chessman(i+1,j+1,屏幕,颜色)
#播放音效
play_chess_sound.play(0)
#在地图上记录弹簧的位置
map[I][j]=颜色
#在“地图”中保存地图
map3=copy.deepcopy(map)
maps.append(地图3)
#判断搬家后是否有五子一线。
if win(i,j):
如果t:
文本(“黑棋赢了,请再玩一次”,屏幕,30)
否则:
文本(“白棋赢了,请再玩一次”,屏幕,30)
#播放音效
维克多_声音.播放(0)
#不要再跌倒在棋盘上
跑步=假
pygame.display.flip()
t =不是t
#如果你点击“重新开始”
如果900 & ltx & lt1100和500 & lty & lt600:
#解锁
运行=真
#播放音效
按钮_声音.播放(0)
#重新开始
主()
#单击“退出游戏”退出游戏。
elif 900 & ltx & lt1100和650 & lty & lt750:
#播放音效
按钮_声音.播放(0)
pygame.quit()
sys.exit()
#点击“后悔棋”
elif 900 & ltx & lt1020和350 & lty & lt450和len(地图)!=1:
#播放音效
按钮_声音.播放(0)
#删除地图中的最后一个元素
del maps[len(maps)-1]
#然后将最后一个元素复制到地图上。
map = copy . deep copy(maps[len(maps)-1])
#切换顺序
t =不是t
#展示地图。
用棋子画棋盘(地图、屏幕)
#如果你后悔下棋,就不要再后悔下棋了。
x,y=0,0
clock.tick(60)
if __name__ == "__main__ ":
尝试:
主()
除了SystemExit:
及格
除了:
traceback.print_exc()
pygame.quit()
输入()