python实现猫抓老鼠

猫和老鼠都是各位的童年回忆吧,相信各位没有人没看过吧,汤姆一直抓不到杰瑞,通过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 random


def 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()
        break
    elif tom.distance(jerry) > 90:
        tom.forward(30)
turtle.done()

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python实现老鼠的小游戏可以使用图形界面库如Pygame或Tkinter来创建游戏界面,并利用键盘事件来控制小老鼠的移动。可以使用图片资源来表示老鼠,通过碰撞检测来判断是否追上老鼠以结束游戏。可以将游戏时长、老鼠的状态显示在主页面上。 下面是一个简单的实现思路: 1. 导入所需的库,如Pygame或Tkinter。 2. 创建游戏界面,并在界面上显示开始按钮。 3. 当点击开始按钮后,游戏开始,老鼠的图片出现在界面上。 4. 监听键盘事件,根据按键来移动小老鼠的位置。 5. 使用自动算法来追踪老鼠的位置,可以使用简单的路径规划算法或者加入一些随机性。 6. 判断是否追上老鼠,如果是则游戏结束,显示游戏时长和相应的提示信息。 7. 将游戏时长、老鼠的状态显示在主页面上,可以使用标签或文本框来实现。 这样,你就可以通过编写相应的代码来实现Python老鼠小游戏了。同时,FTP(文件传输协议)是一种用于向互联网上传送文件的标准协议,而SFTP(SSH文件传输协议)则是在FTP的基础上增加了安全性,使用SSH进行加密和身份验证。在Python中,可以使用ftplib库来实现FTP协议的文件上传和下载,使用paramiko库来实现SFTP协议的文件操作。你可以根据具体需求选择适合的协议来进行文件传输操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [利用python如何实现老鼠小游戏](https://download.csdn.net/download/weixin_38544625/14908284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python实现老鼠小游戏!虽然简陋但是童真永在!](https://blog.csdn.net/weixin_43881394/article/details/110636980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于Python实现FTP文件上传与下载操作(FTP&SFTP协议)](https://download.csdn.net/download/wjianwei666/88279227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值