python写的贪吃蛇小游戏_Python贪吃蛇小游戏

贪吃蛇

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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器怎么管理,第一次使用云服务器,如何使用和管理云服务器

云服务器的两节课和管理使用其实非常简单,windows 自带了一个远程桌面的软件,利用这个远程桌面,我们可以很轻松容易的管理远在天边的服务器,就和您亲自做在远程服务器的电脑前一样!现在我们看看如何使用他吧!在开始 - 程序 - 附件 - 远程桌面 ,如图:如在附件里面找不到这个 远程…

python语言基础实验_实验二Python语言基础函数包练习.doc

实验二Python语言基础函数包练习实验 Python语言基础函数包练习&#xff1a;1208 学号&#xff1a;实验目的1、Python语言包&#xff0c;如math、NumPySciPy和Matplotlib等函数包的使用实验内容统计可视化Step 1. 导入编程所需要包&#xff1a;Step 2. 柱状图可视化&#xff1a…

文件管理服务器数据库,Oracle数据库服务器参数文件管理教程

一、在启动的时候指定参数文件。在启动数据库的过程中&#xff0c;必须要提供一个准确的初始化参数文件&#xff0c;无论是文本参数文件还是服务器参数文件。在利用Startup命令启动数据库的时候&#xff0c;可以指定其采用的服务器参数文件。不过在这里需要注意一个细节&#x…

MySQL回闪_MySQL进行BINLOG回闪

MySQL数据恢复前段时间因为要保证数据恢复的质量&#xff0c;写了一个进行回滚的脚本。binglog2sql工具介绍binglog2sql是一款用于解析binlog的工具&#xff0c;纯Python开发&#xff0c;安装需要有Python环境&#xff1b;安装git clone https://github.com/danfengcao/binlog2…

163邮箱有传真服务器,网易企业邮箱邮件传真功能使用说明

网易企业邮箱邮件传真功能是网易在用户购买网易企业邮箱时附赠的增值服务&#xff0c;管理员通过在企业邮箱管理后台给员工邮箱设置邮件传真号码&#xff0c;员工便可在WebMail直接收发电子传真&#xff0c;无需通过传真机。此功能需要联系经销商协助开通。一、管理员端如何开通…

ajax 折叠,ASP.NET AJAX可折叠面板Accordion应用实例

通常来讲&#xff0c;将一个无比长的列表直接显示给用户是一种极不礼貌的行为。对此&#xff0c;解决方案有很多&#xff0c;归类显示就是其中之一。类似我们常见的QQ或MSNMessage的联系人归类等&#xff0c;系统将用户管理中心的操作菜单归类显示&#xff0c;并应用背景图片&a…

navicat mysql 建表语句_Navicat for MySQL怎么/如何创建数据表?Navicat for MySQL创建数据表教程_斗蟹游戏网...

【斗蟹攻略】Navicat for MySQL是针对MySQL数据库管理而研发的管理工具&#xff0c;创建数据表是其最基本操作&#xff0c;下面就由斗蟹小编介绍Navicat for MySQL创建数据表的方法。Navicat for MySQL创建数据表教程步骤一&#xff1a;新建连接运行Navicat数据库管理工具&…

华为服务器显示003,设置BIOS - RH2288H V3 服务器 V100R003 用户指南 41 - 华为

在服务器的远程虚拟控制台的菜单栏中&#xff0c;单击。关于登录远程虚拟控制台的详细操作步骤&#xff0c;请参见登录远程虚拟控制台。选择“重启”。弹出“你确认要执行这个操作吗&#xff1f;”提示框。单击“是”。服务器进行重启。服务器重启时&#xff0c;当出现如下界面…

mysql隔离级别和mvcc_数据库MVCC和隔离级别的关系是什么?

谢邀。首先我要指出问题中提出的各种概念非常混乱。简单梳理下&#xff1a;早期数据库不论读取还是写入&#xff0c;都用锁来实现。但是锁会带来性能的问题。人们尝试各种优化方案。写入和读取的优化方式不同。对于数据库写入操作&#xff0c;没有特别好的办法&#xff0c;因为…

java 模拟平台_用Java程序模拟登陆网站平台

由于想测试性能&#xff0c;想模拟多个用户同时登陆系统进行访问&#xff0c;于是写了一个例子。代码如下&#xff1a;URL url null;HttpURLConnection httpurlconnection null;try {url new URL("http://www.****.com");httpurlconnection (HttpURLConnection) …

服务器raid1重装系统,做软RAID1 重装系统后数据会丢失吗

匿名用户1级2017-04-04 回答如何使用windows 2003做软RAID (0,1,5) | 浏览&#xff1a;3388 | 更新&#xff1a;2014-01-03 19:17 | 标签&#xff1a;windowsRAID是一种磁盘容错技术,由两块以上的硬盘构成冗余&#xff0c;当某一块硬盘出现物理损坏时&#xff0c;换一块同型号的…

java前端开发_Java前端开发学习什么内容

Java是一门高级编程语言&#xff0c;现在java工程师需求很大&#xff0c;所以java的前景很好&#xff0c;有些朋友往java前端开发方向发展&#xff0c;那么&#xff0c;Java前端开发学习什么内容呢?动力节点java学院小编来告诉你。就目前市场行情来看&#xff0c;Java最流行的…

用友t3显示无法解析服务器名称,用友T3软件进入用友通提示不能解析端口,不能登录服务器...

用友软件增加明细科目时提示新增会计科目是&#xff0c;提示上级科目已经使用&#xff0c;新增科目将自动改为上级科目的设置已经使用的科目如何增加明细科目在软件操作过程中&#xff0c;经常会遇到对已经使用的科目&#xff0c;要求增加其明细科目的问题。科目已经使用&#…

java idle 机制_HotSpot VM重量级锁降级机制的实现原理

HotSpot VM内置锁的同步机制简述&#xff1a;HotSpot VM采用三中不同的方式实现了对象监视器——Object Monitor&#xff0c;并且可以在这三种实现方式中自动切换。偏向锁通过在Java对象的对象头markOop中install一个JavaThread指针的方式实现了这个Java对象对此Java线程的偏向…

java 类 解析_Java集合类解析 ***

collection集合Map集合Hashtable和HashMap的区别&#xff1a;Hashtable的方法是同步的&#xff0c;而HashMap的方法不是。HashMap可以将空值作为一个表的条目的key或value。Collection接口Collection接口是List、Set和Queue接口的父接口&#xff0c;该接口里定义的方法既可用于…

JVM的生命周期

1.加载&#xff08;Loading&#xff09;&#xff1a; 在加载阶段&#xff0c;JVM会找到并加载Java字节码文件。加载阶段分为三个步骤&#xff1a;通过类的全限定名找到对应的字节码文件&#xff0c;创建一个与该类相关的Class对象&#xff0c;将类的静态数据结构存储在方法区中…

java数组数据结构_Java数据结构之数组

自定义数组(面向对象编程)&#xff1a;直接上代码&#xff1a;package com.xingej.algorithm.datastructure.array;/*** 面向对象编程** 自定义类数组** 你一定要明白&#xff0c;这是在JDK基础之上的封装&#xff0c;要学会这种思路&#xff0c;其他框架如netty 也是在前者的基…

java项目如何单元测试_大家java web项目开发做单元测试吗?

java web项目测试用Web的测试工具&#xff0c;如HtmlUnit&#xff0c;JWebUnit等。main()方法就可以测试&#xff0c;在main方法中获得connection对象将他输出就可以了。如果正常输出一大串就是对了。例子&#xff1a;public class DBConnection {private static String url &…

python双素数_python双素数_用Python打印100以下的所有双素数对

^{bq}$这是一种基于筛分的方法&#xff0c;它有点短&#xff0c;速度快得多&#xff1a;def find_prime_pairs(n):sieve [True] * nif n > 0:sieve[0] Falseif n > 1:sieve[1] Falsefor number in range(2, int(n ** 0.5) 1):if sieve[number]:for index in range(nu…

python无所不能_python-列表

列表创建&#xff1a;# 方式一&#xff1a;(常用)s [1, 2, 小超银]print(s) # [1, 2, 小超银]# 方式二&#xff1a;(不常用)s1 list() # 空列表l1 list(123)print(l1) # [1, 2, 3]# 方式三&#xff1a;列表推导式l1 [i for i in range(1,5)]print(l1) # [1, 2, 3, 4]增&…