使用Python第三方库pygame写个贪吃蛇小游戏
今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码:
#导入模块
importpygame
importrandom
#初始化
pygame.init()
w=720#窗口宽度
h=600#窗口高度
ROW=30#行数
COL=36#列数
#将所有的坐标看作是一个个点,定义点类
classPoint:
row=0
col=0
def__init__(self,row,col):
self.row=row
self.col=col
defcopy(self):
returnPoint(row=self.row,col=self.col)
#显示窗口和标题
size=(w,h)
window=pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')
#定义蛇头坐标
head=Point(row=ROW/2,col=COL/2)
#蛇身体
snake_list=[
Point(row=head.row,col=head.col+1),
Point(row=head.row,col=head.col+2),
Point(row=head.row,col=head.col+3)
]
#产生食物
defpro_food():
#食物不能与蛇重叠
whileTrue:
pos=Point(row=random.randint(1,ROW-2),col=random.randint(1,COL-2))
is_coll=False
ifhead.row==pos.rowandhead.col==pos.col:
is_coll=True
forsnakeinsnake_list:
ifsnake.col==pos.colandsnake.row==pos.row:
is_coll=True
break
ifnotis_coll:
returnpos
food=pro_food()
#定义颜色
bg_color=(255,255,255)
head_color=(0,128,128)
food_color=(255,255,0)
snake_color=(200,200,200)
#给定初始方向
dire='left'
defrect(point,color):
cell_width=w/COL
cell_height=h/ROW
left=point.col*cell_width
top=point.row*cell_height
pygame.draw.rect(
window,color,
(left,top,cell_width,cell_height,)
)
pass
#游戏循环
quit=True
clock=pygame.time.Clock()
whilequit:
foreventinpygame.event.get():
#退出方式
ifevent.type==pygame.QUIT:
quit=False
elifevent.type==pygame.KEYDOWN:
#键盘控制
ifevent.key==273orevent.key==119:
ifdire=='left'ordire=='right':
dire='up'
elifevent.key==274orevent.key==115:
ifdire=='left'ordire=='right':
dire='down'
elifevent.key==276orevent.key==97:
ifdire=='up'ordire=='down':
dire='left'
elifevent.key==275orevent.key==100:
ifdire=='up'ordire=='down':
dire='right'
#吃
eat=(head.row==food.rowandhead.col==food.col)
ifeat:
food=pro_food()
#处理身体
#1.原来的头换到身体最前端
snake_list.insert(0,head.copy())
#2.删除身体最后一个
ifnoteat:
snake_list.pop()
#移动
ifdire=='left':
head.col-=1
elifdire=='right':
head.col+=1
elifdire=='up':
head.row-=1
elifdire=='down':
head.row+=1
#检测:
dead=False
#1.撞墙
ifhead.col<0orhead.row<0orhead.col>=COLorhead.row>=ROW:
dead=True
#2.撞自己
forsnakeinsnake_list:
ifhead.col==snake.colandhead.row==snake.row:
dead=True
break
ifdead:
print('dead')
quit=False
#绘制背景
pygame.draw.rect(window,bg_color,(0,0,w,h))
#蛇头
rect(head,head_color)
#食物
rect(food,food_color)
#蛇身
forsnakeinsnake_list:
rect(snake,snake_color)
pygame.display.flip()
#游戏帧数
clock.tick(20)
效果:
总结
到此这篇关于使用Python第三方库pygame写个贪吃蛇小游戏的文章就介绍到这了,更多相关python贪吃蛇游戏内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。