猫和老鼠都是各位的童年回忆吧,相信各位没有人没看过吧,汤姆一直抓不到杰瑞,通过python来实现汤姆抓杰瑞吧

实现流程

首先实现游戏的步骤:

1.创建一个游戏场所

2.创造游戏角色

3.用键盘控制杰瑞逃跑

4.汤姆自动追逐

5.游戏结束,显示逃跑时间

导入模块

turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形

import turtle #导入海龟工具库
import time #导入时间工具包
import random #导入随机工具包

创建追逐场地以开场文字

1.新建一个海龟取名为writer

2.改变画笔颜色,变成棕色

3.然后把它隐藏掉

4.再然后让它抬笔

5.走到游戏的中间

6.写下TOM & JERRY,居中对齐,然后我选了一个字体,字号用50号,变成粗体

7.在下面(0,-50)的地方加上一行小字,写下READY? 3,2,1,GO!格式和上面一样,唯一不同的就是把字体的大小改成20

playground = turtle.Screen()#取一个名字叫playground,新建一屏幕,把屏幕给到playground这个变量
writer = turtle.Turtle()
writer.color("brown")
writer.hideturtle()
writer.penup()
writer.home()
writer.write("TOM & JERRY", align='center', font=("Comic Sans MS", 50, 'bold'))
writer.goto(0, -50)
writer.write("READY? 3,2,1,GO!", align='center', font=("Comic Sans MS", 20, 'bold'))
time.sleep(3)
writer.clear()
#让这个屏幕沉睡3秒,然后清空屏幕

创建游戏角色

到这儿,我们要做的事情其实就是召唤两只海龟,并且把海龟的形状改成猫和老鼠

tom.gif与jerry.gif是图片,我们可以到网上找猫与老鼠的图片,改名字改成和源代码一样的就好了(记得放在同路径下!!)

先把tom抬起来 然后让他走到随机的位置,随机到x轴(-200,200)y轴(-200,200)

再把jerry抬起来 然后让他走到随机的位置,随机到x轴(-200,200)y轴(-200,200)

playground.register_shape('tom.gif')
playground.register_shape('jerry.gif')
# 我们在playground这个游戏场地注册一下这两个形状tom = turtle.Turtle()
tom.shape('tom.gif') # 改成我们刚刚注册的图片
tom.penup()
tom.goto(random.randint(-200, 200), random.randint(-200, 200))jerry = turtle.Turtle()
jerry.shape('jerry.gif') # 改成我们刚刚注册的图片
jerry.speed(0)
jerry.penup()
jerry.goto(random.randint(-200, 200), random.randint(-200, 200))

用键盘控制杰瑞逃跑(定义函数)

首先我们先指出4个行为,上下左右,我们用def来定义4个行为

我们用setheading这个函数,设置当前朝向为angle角度

向上看是90度,移动20个像素

向下是270度,移动20个像素

向左是180度,移动20个像素

向右是0度,移动20个像素

在playground这个游乐场里面绑定,相当于告诉playground说按下这4个键,那你就要做什么样的动作. 我们用onkey,用onkey表达的意思就是当什么键给按下的时候.  然后把up这个函数和我们想要的键盘绑定在一起,后面3个也一样

# 定义函数
def up(): jerry.setheading(90)jerry.forward(20)
# 向上看是90度,移动20个像素def down():jerry.setheading(270)jerry.forward(20)
# 向下是270度,移动20个像素def left():jerry.setheading(180)jerry.forward(20)
#向左是180度,移动20个像素def right():jerry.setheading(0)jerry.forward(20)
#向右是0度,移动20个像素playground.onkey(up, 'Up')
playground.onkey(down, 'Down')
playground.onkey(left, 'Left')
playground.onkey(right, 'Right')
# 要把这四个行为和键盘上的四个按键绑定在一起playground.listen()
#listen 监听,我们要告诉这个playground,这几个键给按下了就要做这些事情,让它监听着这个键盘的动向。

汤姆自动追逐

因为tom需要不停的追不停的追,所以整个动作是一个持续不断的循环。tom要怎么样最快抓住Jerry呢,就是面朝jerry一直向前移动

1.就是让tom面朝jerry

2.让tom移动

首先我们要获得Jerry和tom的位置。我们用海龟工具库里的towards(朝向)获取Jerry的位置, 用setheading设置当前朝向为Jerry的位置方向。把tom的角度改成这个角度。 然后让tom往前走5个像素,这个可以决定游戏的难度,像素越大游戏难度越难。

while True:tom.setheading(tom.towards(jerry))tom.forward(6)if tom.distance(jerry) < 10: #判断end = time.time()playground.clear() # 清空屏幕

游戏结束,显示逃跑时间

第一行我们先让jerry归位

写下GAME OVER,居中对齐,字体,字号用50号,变成粗体

在下面(0,-50)的地方加上一行小字 写下YOU SURVIVED  SECONDS

居中对齐,选了一样的字体,字号用20号,变成粗体

Python里面,我们可以用time时间这个工具包做到同样的事情,我们把这个工具包导入。 然后,我们在游戏开始的地方掐个表,游戏开始的位置是在这个循环开始前,我们定义start等于time.time(),掐个表,然后游戏结束就是Jerry被抓住的时候,再掐一个表结束时间。

jerry.goto(0, 0)jerry.write("GAME OVER", align='center', font=("Comic Sans MS", 50, 'bold'))jerry.goto(0, -50)jerry.write("YOU SURVIVED {:.1f} SECONDS".format(end - start),align='center', font=("Comic Sans MS", 20, 'bold'))start = time.time()
end = time.time()

为了做到游戏效果,我们进一步修改程序,把tom和jerry在游戏结束的时候显示在画面上

把tom抬起来 让他走到合适的位置

(-50,-70 ) 用stamp给他打一个印章,让tom印在屏幕上 Jerry也是一样的

把它放(50,-70)用stamp给他打一个印章,让jerry印在屏幕上

        tom.pu()tom.goto(-50, -70)tom.stamp()jerry.pu()jerry.goto(50, -70)jerry.stamp()

源码展示(图片导入记得改,不然会报错)

import turtle
import time
import randomdef up():jerry.setheading(90)jerry.forward(20)def down():jerry.setheading(270)jerry.forward(20)def left():jerry.setheading(180)jerry.forward(20)def right():jerry.setheading(0)jerry.forward(20)
playground = turtle.Screen()
playground.register_shape('tom.gif')
playground.register_shape('jerry.gif')
playground.onkey(up, 'Up')
playground.onkey(down, 'Down')
playground.onkey(left, 'Left')
playground.onkey(right, 'Right')playground.listen()writer = turtle.Turtle()
writer.color("brown")
writer.hideturtle()
writer.penup()
writer.home()
writer.write("TOM & JERRY", align='center', font=("Comic Sans MS", 50, 'bold'))
writer.goto(0, -50)
writer.write("READY? 3,2,1,GO!", align='center', font=("Comic Sans MS", 20, 'bold'))
time.sleep(3)writer.clear()tom = turtle.Turtle()
tom.shape('tom.gif')
tom.penup()
tom.goto(random.randint(-200, 200), random.randint(-200, 200))
tom.pendown()
tom.pensize(3)
tom.color('blue')jerry = turtle.Turtle()
jerry.shape('jerry.gif')
jerry.speed(0)
jerry.penup()
jerry.goto(random.randint(-200, 200), random.randint(-200, 200))
jerry.color('brown')start = time.time()
while True:tom.setheading(tom.towards(jerry))tom.forward(6)if tom.distance(jerry) < 10:end = time.time()playground.clear()jerry.goto(0, 0)jerry.write("GAME OVER", align='center', font=("Comic Sans MS", 50, 'bold'))jerry.goto(0, -50)jerry.write("YOU SURVIVED {:.1f} SECONDS".format(end - start),align='center', font=("Comic Sans MS", 20, 'bold'))tom.pu()tom.goto(-50, -70)tom.stamp()jerry.pu()jerry.goto(50, -70)jerry.stamp()breakelif tom.distance(jerry) > 90:tom.forward(30)
turtle.done()

这段代码完成之后,游戏还可以加多一些功能,比如开始的按钮,再来一把的按钮

python实现猫抓老鼠相关推荐

  1. 用Python写一个文字版猫抓老鼠的游戏

    文章目录 1 前言 2 Lad's code(朋友的代码) 3 尝试性解决 3.1 暂存一个文本文件 3.2 创建一个"空杯子" 3.3 自定义函数 4 应该解决了 5 升级版代码 ...

  2. python猫抓老鼠_利用python如何实现猫捉老鼠小游戏

    python实现猫捉老鼠小游戏 首界面 开始游戏界面 然后键盘操作小老鼠上下左右移动,猫自己去追,当猫追上老鼠则游戏结束 这里用时3.2秒,最后将游戏时长与猫和老鼠都显示在主页面上 下面我把猫与老鼠的 ...

  3. 实验吧 WEB 猫抓老鼠

    人生的第一道CTF题目哇,鸡冻 其实只是学了一下HTTP抓包得到的都是什么,就开始上手胡搞了 题目名字叫猫抓老鼠,还疯狂暗示catch!catch!catch!catch!,就想到要用抓包其实我是因为 ...

  4. 猫抓老鼠-Java面向对象特点梳理

    我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...

  5. 设计模式之观察者模式——猫抓老鼠2

    设计模式之观察者模式--猫抓老鼠2: 对猫抓老鼠1再次进行优化,降低代码复杂性,以及使用事件来对方法进行保护 代码优化: 将老鼠代码进行优化,将自己的方法在构造时便注册到猫里面: using Syst ...

  6. java猫抓老鼠_猫抓老鼠-Java面向对象特点梳理

    我们先设计一个猫抓老鼠的小游戏: ⊙猫和老鼠都有名字和体重两种属性,猫有抓老鼠的方法,对应的老鼠则有逃跑的方法. ⊙首先游戏的结果是猫抓住了老鼠或者老鼠逃跑了,对于这两种情况,我们用体重来区分,若猫的 ...

  7. 猫抓老鼠c语言程序,猫抓老鼠问题C++实现一例(约瑟夫环问题)

    今天偶然在网上看到了猫抓老鼠问题, 当时也没多想,只觉得网上给出的程序的确有很多需要改进的地方, 就闷头闷脑的用 循环链表 和 递归 写了一个算法实现,后来发现 这个问题实际上是经典的约瑟夫环问题的变 ...

  8. java猫抓老鼠_用猫抓老鼠的实例理解java中面向对象的编程与类和对象以及方法的概念...

    今天看到马士兵讲的关于面向对象编程的思路,用了一个猫抓老鼠的例子,我觉得这个例子非常形象,于是写在这里,方便学习理解和以后查看 class cat{ //声明一个类–"猫" int ...

  9. 实验吧WEB CTF 猫抓老鼠 全网最简单易懂的解题方法

    前言 题目网址: 实验吧平台升级维护中 需要用到的工具: burpsuite 官方视频教程: 01 02 开始 首先打开burpsuite,切换到Proxy选项卡,确保intercept是关着的. 打 ...

最新文章

  1. 基于OpenCV的特定区域提取
  2. 如何自学Android--转
  3. 三方库报错真的就没有办法了吗?
  4. Android学习笔记——数据库
  5. 【渝粤教育】电大中专新媒体营销实务 (13)作业 题库
  6. python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...
  7. Dubbo服务引入原理
  8. Amber Group与1Token达成合作,引入CAM系统加码机构级财务方案
  9. java访问权限修饰符从大到小_程序员的术与道:道——Java修饰符之非访问控制修饰符...
  10. Android中GridView实现互相添加和删除
  11. Server(Iocp)的那些烦恼
  12. latex导数_使用LaTeX语法编写数学公式(持续更新)
  13. linux cad转pdf文件怎么打开,PDF猫CAD转PDF官方版
  14. Apple Pay 详解
  15. 美式英语 [t] 的发音
  16. 光纤耦合系统的公差分析
  17. css3 border边框斜线,CSS3 斜线分割布局
  18. 微信支付分 - 完结支付分订单API
  19. 查询快递物流提前签收的单号,快速分析筛选的方法
  20. 服务器信号满格但上不了网,新版tplink路由器wifi信号满格上不了网怎么办?

热门文章

  1. 【论文分享】ACL 2020 神经网络的可解释性
  2. jy-12-SPRINGMYBATIS02——云笔记01-刘苍松
  3. Mariadb指定数据库进行主备,无法恢复数据异常总结
  4. python电子英汉词典显示_如何使用python为Linux打造一款命令行下的在线英汉词典...
  5. 06_03_SpringMVC 任务一: SpringMVC基本应用(SpringMVC请求与响应,进行日期转换工具类DateConverter)
  6. 【故事】程序员到底是干什么的
  7. 2021-08-19
  8. java 保存微信表情_Java微信公众号开发之用户表情存储解决方案
  9. css样式的三种写法
  10. C++学习笔记(10)