python 贪吃蛇大作战_python实现简单贪吃蛇游戏

本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下

代码:

from turtle import *

from random import randrange

from time import sleep

### 定义变量

snake = [[0,0],[10,0],[20,0],[30,0],[40,0],[50,0]]

apple_x = randrange(-20,20)*10

apple_y = randrange(-20,20)*10

aim_x = 10

aim_y = 0

def squre(x,y,size,color_name):

up()

goto(x,y)

down()

color(color_name)

begin_fill()

forward(size)

left(90)

forward(size)

left(90)

forward(size)

left(90)

forward(size)

left(90)

end_fill()

## 控制蛇

def change(x,y):

global aim_x,aim_y

aim_x = x;

aim_y = y;

#判断撞墙

def inside():

#判断是否在画布里面

if -210 <= snake[-1][0]<=200 and -210 <= snake[-1][1]<=200:

return True

else:

return False

#随机生成苹果

def gameLoop():

global apple_x,apple_y,aim_x,aim_y,snake

snake.append([snake[-1][0]+aim_x,snake[-1][1]+aim_y])

if not inside():

sleep(2)

# snake = [[0,0],[10,0],[20,0],[30,0],[40,0],[50,0]]

# apple_x = randrange(-20,20)*10

# apple_y = randrange(-20,20)*10

# aim_x = 10

# aim_y = 0

return

#吃苹果

if snake[-1][0] != apple_x or snake[-1][1]!=apple_y:

snake.pop(0) # 加一个元素 删除一个元素 蛇就往前运行了

else:

apple_x = randrange(-20,20)*10

apple_y = randrange(-20,20)*10

clear() # 清楚之前画的痕迹

squre(apple_x,apple_y,10,'red') ## x y 位置 图形大小 颜色

for n in range(len(snake)):

squre(snake[n][0],snake[n][1],10,'black')

ontimer(gameLoop,100) #每100毫秒运行一次

update()

### 主程序

setup(420,420,0,0)

hideturtle() ## 隐藏箭头

tracer(False) ## 不延时

listen() #监听

onkey(lambda: change(0,10), "w")

onkey(lambda: change(0,-10), "s")

onkey(lambda: change(-10,0), "a")

onkey(lambda: change(10,0), "d")

gameLoop()

done()

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-09-26

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

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

相关文章

如何免费下载和安装Windows 11

微软今天放出了 Windows 11 Build 22000.51 预览版&#xff0c;如果你想要尝鲜或者冒险&#xff0c;那么本文分享如何免费下载和安装 Windows 11 的小技巧。再次需要提醒的是&#xff0c;目前 Windows 11 系统极不稳定&#xff0c;充斥着大量 BUG&#xff0c;可能会导致系统崩溃…

python函数被调用才能执行吗_python3x函数在不被调用的情况下运行

这是我的密码code__author__ Jared Reabow__name__ Assignment 2 Dice game#Date created: 14/11/2014#Date modified 17/11/2014#Purpose: A game to get the highest score by rolling 5 virtual dice.import random#pre defined variablesNumberOfDice 5 #this variable …

Java 为什么数组下标只能为int不能为long?int32位,为何最大值不是2^32 -1 ? java基本类型取值范围

一个小标为int的byte数组全部放满东西需要的内存为&#xff08;2^31-11&#xff09;*1b2Gb0.25GB 一个小标为long的byte数组全部放满东西需要的内存为&#xff08;2^631)*1b 需要的内存太大 &#xff01;&#xff01; byte&#xff1a; byte 数据类型是8位、有符号的&#xf…

输出分组_通过分组卷积的思想,巧妙的代码实现动态卷积(Dynamic Convolution)

论文的题目为《Dynamic Convolution: Attention over Convolution Kernels》paper的地址https://arxiv.org/pdf/1912.03458.pdf代码实现地址&#xff0c;其中包含一维&#xff0c;二维&#xff0c;三维的动态卷积&#xff1b;分别可以用于实现eeg的处理&#xff0c;正常图像的处…

java基本数据类型转为String类型的4种常见方法

1.toString 先把基本数据类型装箱&#xff0c;再用对象的toString()方法 2.String类的valueOf方法 这是一个静态方法&#xff0c;几乎可以把各种类型转换为字符串 String.valueOf(); 注意区别包装类的valueOf方法,那个也是静态方法&#xff0c;返回的是包装类型。 3.加一…

北大青鸟消防控制器组网_北大青鸟JBF-61S20防火门监控器控制器接线示意图

北大青鸟JBF-61S20防火门监控器控制器接线示意图一&#xff0c;北大青鸟JBF-61S20防火门监控器控制器接线示意图功能防火门控制及状态 监测功能手动、自动关闭常开防火门&#xff1b;实时监控常开或常闭防火门的状态信息&#xff0c;并进行上报和显示。联网功能监控器可以与青鸟…

Java的Comparator排序(升序降序)理解

Java的Comparator排序&#xff08;升序降序&#xff09;理解 int compare(T o1, T o2);   这里o1表示位于前面的对象&#xff0c;o2表示后面的对象 返回-1&#xff08;或负数&#xff09;&#xff0c;表示不需要交换01和02的位置&#xff0c;o1排在o2前面&#xff0c;asc 返…

sqlserver发布订阅无法初始化快照_SQLServer2008R2 发布订阅及相关问题解决办法

前言&#xff1a;前两天接到领导的任务&#xff0c;将一个系统A的客户数据同步到另一个系统B中&#xff0c;以后客户录入入口只有A系统&#xff0c;B系统不提供录入入口&#xff0c;因为各种原因不能使用接口方式A系统和B系统直接交互同步&#xff0c;只能通过数据库重A库同步到…

JAVA中基本类型Boolean占几个字节

今天在整理JAVA基础知识时发现几大基本数据类型的封装类都有其BYTES值,也就是位数,除了Boolean。特意查了下资料,发现有几大说法,如下&#xff1a; 1.单个的boolean 类型变量在编译的时候是使用的int 类型。 boolean atrue;//这个a在JVM中占4个字节即&#xff1a;32位。 2.bo…

怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口

在本指南中&#xff0c;我们将学习如何更改MySQL / MariaDB数据库在CentOS 7和基于Debian的Linux发行版中绑定的默认端口。 MySQL数据库服务器在Linux和Unix下运行的默认端口是3306 / TCP 。为了在Linux中更改默认的MySQL / MariaDB数据库端口&#xff0c;请通过执行以下命令打…

java 泛型的上限与下限、泛型通配符、泛型上下限

java 泛型的上限与下限 设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类&#xff1a; 声明对象&#xff1a;类名<? extends 类> 对象名 定义类&#xff1a;类名<泛型标签 extends 类>{} 设置泛型对象的下限使用super,表示参数类型只能是…

hashmap为什么线程不安全_StringBuilder为什么线程不安全?

点击上方“Java知音”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;作者&#xff1a;千山juejin.im/post/5d6228046fb9a06add4e37fe引言面试官&#xff1a;StringBuilder和StringBuffer的区别在哪&#xff1f;我&#xff1a;StringBuilder不是线程安全的&am…

java中的重量级与轻量级概念

首先轻量级与重量级是一个相对的概念&#xff0c;主要是对应用框架使用方便性和所提供服务特性等方面做比较的。 比方说EJB就是一个重量级的框架&#xff0c;因为它对所编写的代码有限制&#xff0c;同时它也提供分布式等复杂的功能。 相比之下&#xff0c;Spring就是轻量级框架…

java中持久化是什么意思?

什么是持久化&#xff1f; 要想说明这个名词&#xff0c;还要从上世纪70年代说起&#xff0c;数据库技术兴起&#xff0c;这时的软件结构发展为双层结构。在双层结构中实现了的数据存放与应用程序分离&#xff0c;构成了现代软件模型的雏形。但是&#xff0c;随着软件体量越来越…

mysql主从报错_Mysql主从报错锦集

前言在发生故障切换后&#xff0c;经常遇到的问题就是同步报错&#xff0c;下面是最近收集的报错信息。记录删除失败在master上删除一条记录&#xff0c;而slave上找不到Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1;Cant find record in t1,Error_co…

JAVA中的那些名词解释

1.JDO: (Java Data Object )是Java对象持久化的新的规范&#xff0c;也是一个用于存取某种数据仓库中的对象的标准化API.作用:用于存取某种数据仓库中的对象 2.JPA: JPA是Java Persistence API的简称&#xff0c;中文名Java持久层API&#xff0c;是JDK 5.0注解或XML描述对象&a…

mysql资质_MySQL语句与Java代码实现按需过滤企业员工的资质证书

在企业ERP中&#xff0c;每位员工拥有多个资质证书&#xff0c;资质证书有种类、名称和登记时间&#xff0c;以及变动时间和结束时间的主要属性&#xff1b;现在有一个需求&#xff0c;员工在系统查看自己的信息之时&#xff1a;同一种类、同一名称、同一登记时间的资质证书&am…

java对象的序列化和反序列化详细解释

java对象的序列化和反序列化是什么意思 1、序列化是干啥用的&#xff1f; 序列化的原本意图是希望对一个Java对象作一下“变换”&#xff0c;变成字节序列&#xff0c;这样一来方便持久化存储到磁盘&#xff0c;避免程序运行结束后对象就从内存里消失&#xff0c;另外变换成字…

oracle to mysql demo_oracle to mysql

http://blog.csdn.net/hwhua1986/article/details/53257427oracle到mysql的迁移步骤及各种注意事项http://www.2cto.com/database/201305/210248.htmlhttp://www.cnblogs.com/HondaHsu/p/3641116.htmlhttp://www.cnblogs.com/HondaHsu/p/3641183.htmlhttp://www.cnblogs.com/Ho…

IDEA快捷键调整字体大小 设置 (Ctrl+滚轮) 调整字体大小

IDEA设置Ctrl滚轮调整字体大小 第一步&#xff1a;打开idea 设置界面&#xff1a; 第二步&#xff1a;勾选上下图中红色部分即可实现 保存后&#xff0c;ctrl滚轮就能改变代码字体大小