我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python如何实现简单贪吃蛇小游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python如何实现简单贪吃蛇小游戏

本篇内容介绍了“python如何实现简单贪吃蛇小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 导入游戏库

import pgzrunimport random

2.游戏初始化

# 窗口大小WIDTH = 600HEIGHT = 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] += 20elif d=='left':head[0] -= 20elif d=='up':head[1] -= 20else:head[1] += 20bodys.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+=1if 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 inbodys[1:]:# 蛇回到初始位置bodys = [[100, 100], [80, 100], [60, 100], [40, 100], [20, 100]]head = [100, 100]# 方向向右d = 'right'# 得分清零score=0clock.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()

完整代码

# 1.导入库import pgzrunimport random# 2.初始化# 窗口大小WIDTH = 600HEIGHT = 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, (128, 0, 128)) # 紫色    # 绘制头    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, '#ff0000')    # 绘制得分    screen.draw.text('score:' + str(score), (20, 20), color="red", 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 > 10:            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)# 按键控制蛇的行走方向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如何实现简单贪吃蛇小游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python如何实现简单贪吃蛇小游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python如何实现简单贪吃蛇小游戏

本篇内容介绍了“python如何实现简单贪吃蛇小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 导入游戏库import pgzrun
2023-07-02

java如何实现简单贪吃蛇小游戏

这篇文章给大家分享的是有关java如何实现简单贪吃蛇小游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下有两个类,放在同一文件下下即可,背景图片,标题,蛇尾可自行更改import java.awt.*
2023-06-15

如何实现贪吃蛇Python小游戏

这篇文章主要介绍“如何实现贪吃蛇Python小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何实现贪吃蛇Python小游戏”文章能帮助大家解决问题。贪吃蛇Python小游戏(源码+注释+粘贴即
2023-07-05

c++如何实现超简单的贪吃蛇游戏

小编给大家分享一下c++如何实现超简单的贪吃蛇游戏,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!设计思路 建议先将代码复制下来跑一遍再来看思路!!! 通俗易懂,请仔细看。 值得注意
2023-06-22

python如何实现贪吃蛇游戏

这篇文章主要介绍了python如何实现贪吃蛇游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。游戏实现效果如下:后面有完整代码和解析import sysimport pyga
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录