云手机网页版 Python语言程序设计--猫和老鼠小游戏

频道:游戏专题 日期: 浏览:72

1.画布(canvas)

[id_91[id_330238376]799137]

设置画布大小

turtle.screensize(canvwidth=None,canvheight=None,bg=None) 这个函数中的 canvwidth=None 指的是画布的宽度 ,其单位是像素 ,canvheight=None 指的是画布的高度 ,bg=None 指的是背景颜色 。

比方说,turtle.screensize(800,600,"green") 那么一回事,有着那样的情况,就是如此状貌,这般模样,是此类样子。

turtle.screensize(),它用以返回默认大小,此默认大小为(400,300) 。

turtle.setup函数,其参数width,当输入宽为整数时,表示像素,当输入宽为小数时,表示占据电脑屏幕的比例,height参数同理,而(startx,starty)这一坐标表示矩形窗口左上角顶点的位置,若为空,则窗口位于屏幕中心 。

比如,海龟绘图模块中这样设置,宽度设为 0.6,高度设为 0.6 。

turtle进行设置,设置宽度为800,设置高度为800,起始x坐标为100,起始y坐标为100 。

2.画笔

2.1画笔的状态

在画布之上,存在着一个坐标轴,其坐标原点处于画布的中心位置,于该坐标原点之处,有一只小乌龟开·云app体育登录入口,它的脸部朝向是x轴的正方向。在这里,当我们对小乌龟进行描述的时候,运用了两个不同的词语,一个是坐标原点,它代表着位置,另一个是面朝x轴正方向,它代表着方向。在turtle绘图这个范畴当中,正是借助位置以及方向这两个要素,来对小乌龟也就是画笔的状态予以描述的。

2.2画笔的属性

[id_1870120507]

1)turtle.pensize():设置画笔的宽度;

2)turtle.pencolor():若没有参数传入,那么返回当前画笔颜色,若传入参数,则设置画笔颜色,该参数可以是像 "green"、"red" 这样的字符串,也可以是 RGB3 元组。

3) turtle.speed(speed):此操作是用于设定画笔移动速度,该速度以整数形式表示范围,且数字越大,那么画笔绘制的速度就会越快 。

[id_235429150]

操控海龟这一绘图方式存在着数目不少的指令,这些指令能够被划分成三种类型,其中一种类型是用于控制海龟运动的命令,另外一种类型是针对画笔进行操控的命令,除此之外,还有一种类型属于全局控制命令 。

3.命令详解

用来绘制圆形的函数,其参数有半径也就是radius,还有extent可指定为可选参数,默认为None,另外还有steps同样是可选参数,默认值为None 。 , 。

描述:以给定半径画圆

参数:

半径,其为正(负)时,意味着圆心会在画笔的左边(右边)去画圆 。

extent(弧度)(optional);

需做内切正多边形,其为圆的内切正多边形,该圆半径是radius,此内切正多边形的边数是steps云手机网页版,步骤为可选的。

举例:

circle(50)#整圆;

circle(50,steps=3)#三角形;

circle(120,180)#半圆

这几个词分别是,Python,Turtle,Random,Time,猫和老鼠 。

Turtle_Python_猫和老鼠专题游戏

第1章项目说明

1.1项目内容

1.1.1目的与意义

挑这个拼图游戏当作课题,其一呢是想研习并掌握Turtle库的课外知识,其二能增添学习的趣味性,还能培植对这门课程的兴趣。Turtle库是python的基础绘图库,它主要用于程序设计入门,是标准库之一,而且turtle的功能相当多,借助turtle能够制作种种复杂的绘图。渴望经由这次的游戏设计,让我得以了解Turtle库。

1.1.2项目功能

1)游戏界面的创建

2)猫的创建与移动

[id_1809944868]

4)抓老鼠的实现

5)键盘输入的监听

6)游戏计时功能

7)游戏结束提示与成绩显示

1.1.3开发环境

开发系统:Windows 10

开发工具:JetBrains PyCharm

[id_1607070065]

Python版本:3.7

相关库:Turtle、Random、Time

1.1.4项目针对用户

任何年龄段想通过玩休闲小游戏解压的人。

1.2 项目背景

2000年时,网络游戏出现且迅速流行起来,我国游戏行业这才慢慢开始复苏,然而,因投入差距巨大、起步较晚等缘故,和外国游戏相比,并无竞争力。但如今,网络游戏步入繁荣阶段,成为一部分人休闲娱乐的主要方式。国产游戏逐渐迈向国际市场,并且基于网络的发展切实达成了网络全球化。猫小鼠游戏啦,那可是人人皆知的休闲小游戏哟,不论处于啥年龄段,都有喜欢它的人呐,跟着社会向前发展,生活的节奏变得愈发快起来,人们所承受的压力呢,同样在不断增大呀,借助玩休闲类游戏来释放压力,就成了繁忙都市人群的最佳选择啦,猫和老鼠小游戏咱说的就是它呀,它能够让人在享受休闲娱乐之际,去锻炼思维与观察力呢。

第2章需求分析

2.1程序详细功能需求

1)游戏界面的创建

2)猫的创建与移动

3)老鼠的随机创建与随机移动

4)抓老鼠的实现

5)游戏计时功能

6)游戏结束提示与成绩显示

2.2程序功能分析

2.2.1游戏界面的创立

在程序之中,借助Turtle库,去创建出一个游戏界面,对这个游戏界面来设置其相应的大小,再设置一下它的刷新时间,同时也要设置其背景,句号。

2.2.2猫的创建与移动

通过Turtle库,程序创建猫,设置猫的大小,设置猫的颜色,之后,借助键盘方向键输入,能够控制猫进行向左转向,能够控制猫进行向右转向,可以控制猫加速,还可以控制猫减速。

2.2.3老鼠的随机创建与随机移动

程序借助Turtle库生成老鼠,让其在界面里随机现形,且随机地移动 。

依据猫和老鼠之间的距离来进行判断,当猫跟老鼠的距离小于50的时候,便认定为把老鼠抓住了,老鼠一旦被抓到就在界面上不见了。

2.2.5游戏计时功能

游戏开启之际,着手针对游戏展开计时操作,于游戏完结之时,终止计时行为,时间借助Turtle库于界面上予以呈现,。

2.2.6游戏结束提示与成绩显示

当界面老鼠数量为0时,提示游戏结束并显示所用时间。

第3章设计文档

3.1流程图

Python_Turtle_猫和老鼠专题游戏

图3.1 猫和老鼠游戏流程图

[id_1723002866]

调用Turtle库之中的,那个Screen()函数,以此来创建游戏界面,之后,再去调用mainloop()函数,进而使得维持界面不关闭。还要调用tracer()函数,以此来降低刷新率,最终减少游戏卡顿感。

# 创建背景
game = t.Screen()
game.setup(700, 700)
game.bgpic('bg.gif')
t.tracer(3)

game.mainloop()

3.3猫的创建与移动

3.3.1猫的创建

使用turtle来创建猫,通过调用cat.speed(0),从而使得猫的创建得以实现,并且能够降低后续的转向以及加减速所产生的延迟。

# 创建猫咪
cat = t.Turtle()
[id_1253632089]'yellow')
cat.shapesize(3, 3)
cat.speed(0)
cat.up()

3.3.2猫的移动

调用叫做fd的函数,以此让猫朝着前方行进,借助x以及y进行判定,从而使得猫和边界进行触碰的时候,调用称作left的函数实现掉头。

2)定义函数move_left() 控制猫向左转向

3)定义函数move_ringt() 控制猫向右转向

4)定义函数speedup() 控制猫加速

5)定义函数slowdown() 控制猫减速

cat_speed = 0.1
while True:
    update_time()
    cat.fd(cat_speed)
    x = cat.xcor()
    y = cat.ycor()
    if x > 350 or x < -350 or y < -350 or y > 350:
        cat.left(180)

def move_left():
    cat.left(30)
def move_right():
    cat.right(30)
def speedup():
    global cat_speed
    cat_speed += 0.1
def slowdown():
    global cat_speed
    cat_speed -= 0.1

3.3.3键盘事件监听

对listen函数予以调用,以此来对键盘事件展开监听,对onkey函数进行调用,将对应加减速以及转向键位予以绑定。

代码:

t.listen()
t.onkey(move_left, 'Left')
t.onkey(move_right, 'Right')
t.onkey(speedup, 'Up')
t.onkey(slowdown, 'Down')

3.4老鼠的随机创建与随机移动

运用Turtle库循环营造多只老鼠,借助random库把每只老鼠安置于随机位置,并且让其朝着随机方向行进。调用rat.speed(0)缩减每只老鼠的创建间隔,致使其仿若同时被创建一样。

代码:

# 创建小老鼠
rats_number = 3
rats = []
t.register_shape('rat.gif')
for r in range(rats_number):
    rat = t.Turtle()
    rat.ht()  # hideturtle
    rat.up()
    rat.speed(0)
    rat.left(random.randint(0, 360))
    rat.shape('rat.gif')
    x = random.randint(-300, 300)
    y = random.randint(-300, 300)
    rat.setpos(x, y)
    rat.st()  # showturtle
    rats.append(rat)

# 小老鼠动起来
for rat in rats:
    rat.fd(0.1)
    catch(rat)
    x = rat.xcor()
    y = rat.ycor()
    if x > 300 or x < -300 or y < -300 or y > 300:
        rat.left(180)

3.5抓老鼠的实现

定义catch(rat)函数 判定抓到使老鼠消失。

代码:

def catch(rat):
    if cat.distance(rat) < 50:
        rat.ht()
        rats.remove(rat)

3.6游戏计时功能

定义一个名为update_time的函数,该函数调用time这个库,对游戏时间展开计时操作,并且调用turtle库,将其显示于界面之上。

#加上计时
pen = t.Turtle()
pen.ht()
pen.up()
pen.setpos(240, 320)
pen.color('red')
pen.write("计时 ", align="left", font=('Arial', 18, 'bold'))
pen2 = t.Turtle()
pen2.ht()
pen2.up()
pen2.setpos(300, 320)
pen2.color('red')

def update_time():

global used_time

当前所使用的时间,等于将时间时间相关函数获取的值,减去开始时间后的值转换为整数 ,。

if now_used_time > used_time:

used_time = now_used_time

time_str = str(used_time)

pen2.clear()

pen2进行写文本操作,所写内容为time_str,其对齐方式为左对齐,字体设定为Arial字体,字号为18,字体样式为加粗 。

3.7游戏结束与成绩提示

确定rat这个列表的长度为0的时候呀,借助绘图绘画的海龟库去提示游戏已经结束以及展现最后得分情况呢。

# 判断游戏结束
if len(rats) == 0:
    pen3 = t.Turtle()
    pen3.ht()
    pen3.up()
    pen3.setpos(-150, 0)
    pen3.color('red')
    over_str = "游戏结束,用时" + str(used_time) + "秒"
    pen3.write(over_str, align="left", font=('Arial', 25, 'bold'))
    break;

第4章项目实现

4.1游戏界面

Turtle_Python_猫和老鼠专题游戏

图4.1游戏界面运行截图

4.2游戏结束与成绩提示

Turtle_Python_猫和老鼠专题游戏

图4.2游戏结束与成绩提醒运行截图

第5章总结

做了本次实验,我了解了Turtle模块的一些基础内容,结合自己喜好的素材弄出了一个简易的猫和老鼠游戏,这激发了我对这门课程的兴趣。作为python的基础绘图库,它具备非常突出的先天优势,有着诸多强大的绘图功能,能够极大地加快开发者的开发速度。更关键的一点,身为开源语言Python的扩展库,它开源的特质致使这个Turtle库持续壮大起来,有更多功能被程序员得以开发出来,这些持续推陈出新的技术支持,让Turtle开发的游戏会愈发完美kiayun手机版登录.v1008.点进白给你1888.中国,开发出的游戏的可玩性会越来越棒。与此同时,我又进一步知晓了random和time这两个库。random模块达成了具备各种分布情况的伪随机数生成构造,其能够给出随机生成的一个实数,借此我能够实施促使老鼠于随机位置出现以及朝着随机方向行进。Time模块有着将日期和时间予以格式化的功效,能推导出各类跟时间存在关联的函数,借助调用time模块之内所带的函数能够推演出游戏计时方法。总而言之python是那种极其优良完善的言语编程,该语言呈现出简洁灵活样态,具备易于学习、易于阅读、可移植以及功能强大的特性,为我们供应了许多专用于拆解问题场景的模块对象组合。学习python之际,从毫无基础起始,确确实实是依据一点又一点逐步学习而成,往昔不存在任何编程方面的经验,故而此课程于我而言着实颇具难度,然而切实深入学习之后,同样感觉收获颇为丰富。对一个文科生而言,真的需要投入大量精力,翻看资料,学习视频,才能勉强做出python最后一个实验想选做的对自己难度较大的项目,这不仅是对自身的挑战,也是对知识学习的检验,这个小游戏还是简略版本,很多方面都没有进行优化,希望尔后能够慢慢进步,而不只是局限于课内的实验。总结:用turtle绘图要记住各个命令的使用,这是最基本的,但是想画好图还是需要逻辑思维的,编程思维确实很重要!

网友留言(0)

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。