Python如何导入海龟绘图库并制作贪吃蛇游戏
Admin 2022-07-23 群英技术资讯 1617 次浏览
这篇文章主要介绍了Python如何导入海龟绘图库并制作贪吃蛇游戏相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python如何导入海龟绘图库并制作贪吃蛇游戏文章都会有所收获,下面我们一起来看看吧。在实现贪吃蛇游戏时,首先需要使用python内置的turtle模块来实现创建游戏窗体与键盘按键的监听工作,然后使用freegames模块进行贪吃蛇的绘制工作。
1、turtle模块
turtle模块是python的内置模块,所以在使用前需要使用import导入该模块。代码如下:
import turtle
(1) 创建游戏窗体可以使用turtle模块中的setup()方法来实现。语法格式如下:
turtle.setup(width=_CFG["width"],height=_CFG["height"],startx=_CFG["leftright"],starty=_CFG["topbottom"])
参数说明如下:
创建游戏窗体的关键代码如下:
import turtle # 导入绘图海龟模块 turtle.setup(420, 420) # 创建窗体大小 turtle.done() # 停止画笔绘制,但绘图窗体不关闭
(2)通过turtle模块中的onkey()方法可以实现对应键盘中按键的监听工作。语法格式如下:
turtle.onkey(fun,key)
参数说明如下:
注意:在使用onkey()方法实现键盘的监听时,还需要调用turtle.listen()方法即可实现键盘按键的监听。
实现键盘中上、下、左、右按键监听工作的关键代码如下:
turtle.listen() # 事件监听器 turtle.onkey(lambda: change(10, 0), 'Right') # 按键盘右键,蛇向右走 turtle.onkey(lambda: change(-10, 0), 'Left') # 按键盘左键,蛇向左走 turtle.onkey(lambda: change(0, 10), 'Up') # 按键盘上键,蛇向上走 turtle.onkey(lambda: change(0, -10), 'Down') # 按键盘下键,蛇向下走
2、freegames模块
freegames模块是第三方模块,所以在使用前需要先通过以下命令进行模块的安装:
pip install freegames
模块安装完成以后,首先需要导入freegames模块中的vector与square函数。代码如下:
from freegames import vector,square # 导入向量类与绘图函数
(1)通过freegames模块中的vector()类可以根据指定的x、y坐标创建一个二维向量对象。vector()类的语法格式如下:
class freegames.vector(x,y)
参数说明如下:
实现定义游戏中的食物位置、蛇位置以及蛇移动的位置与距离。关键代码如下:
food = vector(0,0) # 食物 snake = [vector(10, 0)] # 蛇 position = vector(0, -10) # 移动位置,一步的距离为10
(2)通过freegames模块中square函数可以实现在(x,y)处绘制指定边长大小的正方形,并填充指定颜色。square()函数的语法格式如下:
freegames.square(x,y,size,name)
参数说明如下:
实现绘制游戏中食物、蛇。关键代码如下:
square(body.x, body.y, 9, 'black') # 绘制黑色蛇 square(food.x, food.y, 9, 'green') # 绘制绿色食物
实例
from random import randrange # 导入随机函数
from freegames import vector,square # 导入向量函数与绘图函数
import turtle # 导入绘图海龟模块
food = vector(0,0) # 食物
snake = [vector(10, 0)] # 蛇
position = vector(0, -10) # 移动位置,一步的距离为10
def change(x, y): # 改变蛇的移动方向
position.x = x
position.y = y
def is_inside(head): # 判断蛇头是否在窗体内
return -200 < head.x < 190 and -200 < head.y < 190
def move(): # 可以让蛇移动的方法
head = snake[-1].copy() # 确定蛇头的位置
head.move(position) # 移动一步
if not is_inside(head) or head in snake: # 如果蛇的头部位于边界外或者蛇头在蛇的身体中
square(head.x, head.y, 9, 'red') # 绘制红色蛇头,说明游戏结束
turtle.update() # 更新
return
snake.append(head) # 更新蛇的位置
if head == food: # 如果蛇吃到食物
print('Snake:', len(snake)) # 根据蛇的长度进行加分
food.x = randrange(-15, 15) * 10 # 随机生成食物x坐标
food.y = randrange(-15, 15) * 10 # 随机生成食物y坐标
else:
snake.pop(0) # 移除蛇走过的坐标
turtle.clear() # 清空蛇走过的位置
for body in snake: # 循环遍历蛇的坐标
square(body.x, body.y, 9, 'black') # 绘制黑色蛇
square(food.x, food.y, 9, 'green') # 绘制绿色食物
turtle.update()
turtle.ontimer(move, 100) # 定时执行move函数
if __name__ == '__main__': # 程序入口
turtle.setup(420, 420, 370, 0) # 创建窗体大小
turtle.hideturtle() # 隐藏箭头显示
turtle.tracer(False) # 关闭绘画效果
move() # 调用让蛇移动的方法
turtle.listen() # 事件监听器
turtle.onkey(lambda: change(10, 0), 'Right') # 按键盘右键,蛇向右走
turtle.onkey(lambda: change(-10, 0), 'Left') # 按键盘左键,蛇向左走
turtle.onkey(lambda: change(0, 10), 'Up') # 按键盘上键,蛇向上走
turtle.onkey(lambda: change(0, -10), 'Down') # 按键盘下键,蛇向下走
turtle.done() # 停止画笔绘制,但绘图窗体不关闭
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python版的消除类的游戏还是很多的,今天就出一个消除类——泡泡龙小游戏。文中的示例代码很详细,感兴趣的小伙伴快来跟随小编一起学习一下吧
pyecharts是支持python的一种可视化,那么在Django中Pyecharts如何生成图表,主要有两种方法,需要的朋友们下面随着小编来一起学习学习吧
Vim 插件是一个 .vim 的脚本文件,定义了函数、映射、语法规则和命令,可用于操作窗口、缓冲以及行。一般一个插件包含了命令定义和事件钩子。当使用 Python 编写 vim 插件时,函数外面是使用 VimL 编写,尽管 VimL 学起来很快,但 Python 更加灵活
支持向量机 (Support Vector Machine, SVM) 是一种监督学习技术,它通过根据指定的类对训练数据进行最佳分离,从而在高维空间中构建一个或一组超平面。本文将介绍通过SVM算法实现手写数字的识别,需要的可以了解一下
这篇文章主要介绍了python如何输入根号,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008