贪吃蛇

1. 导入游戏库

# 1.导入库

import pgzrun

import random

2.游戏初始化

# 2.初始化

# 窗口大小

WIDTH = 600

HEIGHT = 480

# 贪吃蛇

bodys = [ [100,100],[80,100], [60,100], [40,100], [20,100]]

head = [100,100]

d = 'right'

# 食物

food = [290,290]

# 得分

score=0

3.游戏窗口绘制

def draw():

#清空屏幕

screen.clear()

# 绘制网格

for i in range(1,24):

screen.draw.line((0,i*20),(600,i*20),'gray')

for i in range(1,30):

screen.draw.line((i*20,0),(i*20,480),'gray')

#绘制蛇

for body in bodys:

rect = Rect(body,(20,20))

screen.draw.filled_rect(rect,(0,0,255))

inner = [body[0]+2,body[1]+2]

rect = Rect(inner, (15, 15),center='center')

screen.draw.filled_rect(rect, (0, 0, 180))

# 绘制头

rect = Rect(head, (20, 20))

screen.draw.filled_rect(rect, (0, 200,0))

inner = [head[0] + 2, head[1] + 2]

rect = Rect(inner, (15, 15))

screen.draw.filled_rect(rect, (0, 255, 12))

# 绘制食物

screen.draw.filled_circle(food,10, '#ffddee')

# 绘制得分

screen.draw.text('score:'+str(score),(20, 20), color="orange",fontsize=30)

4.蛇的移动功能

def run():

global food,d,head,bodys,score

# 新增一个格子的身体

if d=='right':

head[0] += 20

elif d=='left':

head[0] -= 20

elif d=='up':

head[1] -= 20

else:

head[1] += 20

bodys.insert(0,list(head))

if head[0] == food[0]-10 and head[1] == food[1] - 10:

food = [random.randint(1,30)*20-10,random.randint(1,20)*20-10]

score+=1

if score>3:

clock.unschedule(run)

clock.schedule_interval(run, 0.1)

else:

bodys.pop()

# 撞墙后重新开始

if head[0]<0 or head[0]>580 or head[1]<0 or head[1]>480 or head in

bodys[1:]:

# 蛇回到初始位置

bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]

head = [100, 100]

# 方向向右

d = 'right'

# 得分清零

score=0

clock.unschedule(run)

clock.schedule_interval(run, 0.3)

5.按键控制蛇的行走方向

# 按键控制蛇的行走方向

def on_key_down(key):

global d

# 改变方向

if key == keys.DOWN and d != 'up':

d = 'down'

if key == keys.UP and d != 'down':

d = 'up'

if key == keys.LEFT and d != 'right':

d = 'left'

if key == keys.RIGHT and d != 'left':

d = 'right'

6.启动游戏

# 定时设置

clock.schedule_interval(run, 0.3)

# 播放音乐

music.play('music.mp3')

# 启动游戏

pgzrun.go()

python写的贪吃蛇小游戏_Python贪吃蛇小游戏相关推荐

  1. 如何用python制作五子棋游戏_Python制作打地鼠小游戏

    原文链接 Python制作小游戏(二十一)​mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...

  2. python写飞机大战游戏_python实现飞机大战游戏

    飞机大战(Python)代码分为两个python文件,工具类和主类,需要安装pygame模块,能完美运行(网上好多不完整的,调试得心累.实现出来,成就感还是满满的),如图所示: 完整代码如下: 1.工 ...

  3. python编游戏_python编的著名游戏

    python编的著名游戏 2019-03-18 15:59:33 3323 0 没有找到相关结果 已邀请: 目前使用Python编写的游戏有文明4.星际迷航:舰桥指挥官.战地2等,小游戏有俄罗斯方 ...

  4. python做的大型游戏_Python有做大型游戏的潜力吗?

    由于最近我要考试忙不过来没修改回答,谢谢评论区大们的指正,我认识到的pygame库确实可以做游戏,但是pygame限制很多,特别是做大型游戏方面,3D还没有相关的优化方法等(3D游戏,pygame表示 ...

  5. python做飞机大战游戏_python实现飞机大战游戏

    飞机大战(Python)代码分为两个python文件,工具类和主类,需要安装pygame模块,能完美运行(网上好多不完整的,调试得心累.实现出来,成就感还是满满的),如图所示: 完整代码如下: 1.工 ...

  6. python设计棋牌游戏_python开发棋牌类游戏

    pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方便用户通过跨平台的方式使用该软件,有效节省的使用时间,那么这款详情>> 阅读: ...

  7. python写出来的程序怎么用_python写完程序怎么运行

    安装并配置完成之后,我们就可以编写第一个python程序.学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world.那么,我们这里也以hello world来抛砖引玉,打开python ...

  8. python扫雷游戏_python实现扫雷小游戏

    前面我们用python实现了贪吃蛇.坦克大战.飞船大战.五子棋等游戏 今天我们用python来实现一下扫雷游戏 本游戏代码量和源文件较多 可以从我的GitHub地址中获取 构建地雷区 import r ...

  9. python人机猜拳游戏_Python实现剪刀石头布小游戏(与电脑对战)

    具体代码如下所述: srpgame.py #!/urs/bin/env python import random all_choice = ['石头','剪刀','布'] win_list = [[' ...

最新文章

  1. 聚类技术---复杂网络社团检测_数据挖掘的技术有很多种,常用的数据挖掘技术就这13种...
  2. 【Python】SQLAlchemy长时间未请求,数据库连接断开的原因、解决方案
  3. matlab中均线交易策略,【每日一策】Matlab量化交易策略之 均线选股策略
  4. java在画布上画出变量_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形
  5. MC新手入门(二十八)------ 顺序结构程序
  6. maxwell监控mysql_利用Maxwell组件实时监听Mysql的binlog日志
  7. MySQL经常使用命令--create命令使用
  8. Leetcode刷题记录:构建最大数二叉树
  9. ORACLE11g升级19c,报ORA-01017
  10. Visual Studio Community 2017安装步骤(只装C++)
  11. 支付宝第三方应用,用户登录授权获取信息
  12. 一位技术主管的十年编程经验总结
  13. wxPython下载安装教程
  14. Binet‘s Formula 算法
  15. 利用栈实现中缀表达式转前缀表达式
  16. Bother, disturb and trouble 三个表示 “打扰” 的词语区分
  17. 系统cpu主频查看设置
  18. 如何在本地搭建FTP服务器以及搭建后的用途
  19. Nginx如何跳转到非443端口的https
  20. C语言正确的输入格式和输入方式

热门文章

  1. kali mysql停止服务器_从零开始:手把手教你黑客入门攻破服务器并获取ROOT权限...
  2. mysql触发器求属性和_MySQL触发器demo
  3. linux cmake变量,linux – CMake错误:此项目中使用了以下变量,但它们设置为NOTFOUND...
  4. 怎么修改腾讯视频的昵称
  5. Java面试题整理(附参考答案)
  6. java 泛型的上限与下限、泛型通配符、泛型上下限
  7. Eclipse 导入项目乱码问题
  8. python中sorted函数的用法_Python3 中sorted() 函数的用法
  9. android 蓝牙sco stream_voice_call,android TTS输出总是要 A2DP_android_开发99编程知识库
  10. 递归算法及其时间复杂度分析