Python+turtle实现一个乌龟逃跑小游戏(可以和孩子一起完成)

news2024/12/29 9:46:28

直接上演示视频

请添加图片描述

这个代码也是之前当老师的时候,给孩子们写的一个小游戏,那么我们一起看一下这个小游戏是如何让完成的

1、首先完成代码的前期准备

1、这里我们t = turtle.Pen() # 海龟—表示我们操作的小海龟
2、enemy = turtle.Pen() # 敌龟—表示追击我们的小海龟
3、enemy.shape(“triangle”) # 敌龟,这个是小海归的形状
4、‘arrow’, ‘turtle’, ‘circle’, ‘square’, ‘triangle’, ‘classic’,这是小海归常见的形状,箭头形,海龟形,圆形,正方形、三角形、 经典形

enemy.color(“red”) # 敌龟颜色为红色

import turtle, random


window = turtle.Screen() # 创建屏幕对象
t = turtle.Pen()  # 海龟

enemy = turtle.Pen()  # 敌龟
enemy.pensize(8)  # 敌龟
enemy.color("red")  # 敌龟
enemy.shape("triangle")  # 敌龟

t.shape("turtle")
t.penup()  # 将海龟的画笔提起,使不会出现轨迹
t.goto(100, 100)  # 海龟的初始地址放置在坐标(100,100)

2、设置一个边框,防止小海龟跑出窗口之外

def checkbound():
    boxsize = 300
    if t.xcor() > boxsize:
        t.goto(boxsize, t.ycor())

    if t.xcor() < -boxsize:
        t.goto(-boxsize, t.ycor())

    if t.ycor() > boxsize:
        t.goto(t.xcor(), boxsize)

    if t.ycor() < -boxsize:
        t.goto(t.xcor(), boxsize)

3、写4个函数

up()和back().分别是前进和后退

left()和right(),分别是左转和右转,角度均为45°


# 前进
def up():
    t.forward(10)
    checkbound()


# 左转
def left():
    t.left(45)


# 右转
def right():
    t.right(45)


# 后退
def back():
    t.bk(10)
    checkbound()

瞬移,这是我加上去的

# 瞬移
def teleport():
    t.goto(random.randint(-200, 200), random.randint(-200, 200))

4、窗口对象绑定键盘按键

window.onkeypress(up, "Up")
window.onkeypress(left, "Left")
window.onkeypress(right, "Right")
window.onkeypress(back, "Down")
window.onkeypress(teleport, "space")
# 窗体监听按键
window.listen()

5、最后写上主循环

1、enemy.seth(enemy.towards(t)),求出小海龟与敌龟的角度

2、enemy.distance(t) < 5,小海龟与敌龟的距离小于5则表示 输掉游戏

3、t.write("死", align="center", font=(r"C:\Windows\Fonts\STHUPO.TTF", 50, "bold")),小海龟将会写一个“死”字

上一行的参数:t.write("这里是描述的文本", align="center"表示居中, font=(r"C:\Windows\Fonts\STHUPO.TTF"这是字体样式, 50字号, "bold"加粗))

caught = False
while caught == False:
    enemy.seth(enemy.towards(t))
    enemy.fd(1)
    if enemy.distance(t) < 5:
        caught = True
        print("你被敌人抓住了!!!!")
        t.pencolor("red")
        t.write("死", align="center", font=(r"C:\Windows\Fonts\STHUPO.TTF", 50, "bold"))
    if enemy.distance(t) < 20:
        t.fillcolor("red")
    elif enemy.distance(t) < 50:
        t.fillcolor("yellow")
    else:
        t.fillcolor("green")
turtle.done()

完整版代码

import turtle, random


window = turtle.Screen()
t = turtle.Pen()  # 海龟

enemy = turtle.Pen()  # 敌龟
enemy.pensize(8)  # 敌龟
enemy.color("red")  # 敌龟
enemy.shape("triangle")  # 敌龟

t.shape("turtle")
t.penup()  # 将海龟的画笔提起,使不会出现轨迹
t.goto(100, 100)  # 海龟的初始地址放置在坐标(100,100)


# 按动方向键Up则执行函数up
def checkbound():
    boxsize = 300
    if t.xcor() > boxsize:
        t.goto(boxsize, t.ycor())

    if t.xcor() < -boxsize:
        t.goto(-boxsize, t.ycor())

    if t.ycor() > boxsize:
        t.goto(t.xcor(), boxsize)

    if t.ycor() < -boxsize:
        t.goto(t.xcor(), boxsize)


# 老鼠前进
def up():
    t.forward(10)
    checkbound()


# 老鼠左转
def left():
    t.left(45)


# 老鼠右转
def right():
    t.right(45)


# 老鼠后退
def back():
    t.bk(10)
    checkbound()


# 瞬移
def teleport():
    t.goto(random.randint(-200, 200), random.randint(-200, 200))


window.onkeypress(up, "Up")
window.onkeypress(left, "Left")
window.onkeypress(right, "Right")
window.onkeypress(back, "Down")
window.onkeypress(teleport, "space")
# 窗体监听按键
window.listen()

caught = False
while caught == False:
    enemy.seth(enemy.towards(t))
    enemy.fd(1)
    if enemy.distance(t) < 5:
        caught = True
        print("你被敌人抓住了!!!!")
        t.pencolor("red")
        t.write("死", align="center", font=(r"C:\Windows\Fonts\STHUPO.TTF", 50, "bold"))
    if enemy.distance(t) < 20:
        t.fillcolor("red")
    elif enemy.distance(t) < 50:
        t.fillcolor("yellow")
    else:
        t.fillcolor("green")
turtle.done()

上一届内容:python+turtle实现夜空小星星

非常简单的小代码,爸爸妈妈们可以教给孩子们,可以一起共同完成

希望能够帮助到你

拜拜!!🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/953912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉的应用12-卷积神经网络中图像特征提取的可视化研究,让大家理解特征提取的全过程

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用12-卷积神经网络中图像特征提取的可视化研究&#xff0c;让大家理解特征提取的全过程。 要理解卷积神经网络中图像特征提取的全过程&#xff0c;我们可以将其比喻为人脑对视觉信息的处理过程。就像…

(数学) 剑指 Offer 39. 数组中出现次数超过一半的数字 ——【Leetcode每日一题】

❓ 剑指 Offer 39. 数组中出现次数超过一半的数字 难度&#xff1a;简单 数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输…

echarts图表静态数据 象形柱形图、折线图、日历饼图、饼状图四种实现

标题 页面全部代码 <template><div class"data-serve"><div class"side"><div class"side-inner"><router-link class"side-btn" to"/camer/pushInfo"><i class"el-icon-picture&q…

学习ros机器人导航从精读nav2导航launch文件开始

nav2导航launch文件经过了多层套娃&#xff0c;真的是让初学者哭晕在厕所&#xff0c;今天我们就拆解一下他的launch文件&#xff0c;还原他最简单的状态&#xff0c;看看他到底启动了什么节点。 一 tb3仿真机器人启动文件&#xff1a;tb3_simulation_launch.py 1 文件目录结…

一文了解什么是同源策略

同源策略是一种重要的安全机制&#xff0c;它限制一个源加载的文档或脚本如何与另一个源的资源进行交互。下文小文智能就为您详细解答什么是同源策略。 一、目的 它有助于隔离潜在的恶意文档&#xff0c;减少可能的攻击媒介。例如&#xff0c;它可以防止互联网上的恶意网站在…

C++ 手写实现类似lower_bound和upper_bound的二分功能

目录 lower_bound和upper_bound介绍手动实现类似的二分效果lower_boundupper_bound另一种常见的二分形式 对lower_bound函数使用lamda函数 lower_bound和upper_bound介绍 lower_bound函数的作用是查找范围内第一个大于等于目标元素的元素迭代器/指针 数组的简单使用&#xff…

11、监测数据采集物联网应用开发步骤(8.2)

监测数据采集物联网应用开发步骤(8.1) 新建TCP/IP Client线程类com.zxy.tcp.ClientThread.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import datetime import socket import threading import timefrom com.zxy.adminlog.Us…

ATA-1222A宽带放大器的电子实验案例(案例合集)

ATA-1222A宽带放大器是安泰电子打造的高带宽功放产品&#xff0c;其采用ClassAB的工作模式&#xff0c;带宽高达22MHz&#xff0c;饱和输出功率40W&#xff0c;能兼容全球不同地区的电源标准要求。凭借其优异的指标参数受到不少电子工程师的喜欢&#xff0c;其在电子实验中的应…

远程访问Linux的DataEase数据可视化分析,有哪些推荐的工具?

DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。 在本地搭建后,借助cpolar 内…

Densenet模型详解

模型介绍 DenseNet的主要思想是密集连接&#xff0c;它在卷积神经网络&#xff08;CNN&#xff09;中引入了密集块&#xff08;Dense Block&#xff09;&#xff0c;在这些块中&#xff0c;每个层都与前面所有层直接连接。这种设计可以让信息更快速地传播&#xff0c;有助于解…

数据可视化工具中的显眼包:奥威BI自带方案上阵

根据经验来看&#xff0c;BI数据可视化分析项目是由BI数据可视化工具和数据分析方案两大部分共同组成&#xff0c;且大多数时候方案都需从零开始&#xff0c;反复调整&#xff0c;会耗费大量时间精力成本。而奥威BI数据可视化工具别具匠心&#xff0c;将17年经验凝聚成标准化、…

(AcWing) spfa求最短路

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离&#xff0c;如果无法从 1 号点走到 n 号点&#xff0c;则输出 impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和…

indexDb使用

indexDb是什么&#xff1f; indexDb是除了cookie&#xff0c;localstorage&#xff0c;sessionstroage外的另一种前端存贮方式。 现有前端存贮比较 indexDb特点 无大小限制&#xff0c;适用于前端存贮数据较多场景存贮结构以对象仓库形式&#xff0c;可以存入任何类型数据&a…

企业智能知识管理在线工具语雀、helplook、石墨文档、Baklib怎么样?

语雀、helplook、石墨文档和Baklib都是企业智能知识管理的在线工具&#xff0c;它们都提供了一系列功能来帮助企业管理和共享知识。下面我将对这些工具进行详细的介绍和评价。 语雀&#xff1a; 语雀是一款功能强大的在线知识管理工具&#xff0c;它提供了丰富的功能和优秀的…

Java对接海康威视(二次开发)组织信息、人员信息等

一.获取合作方数据 1.在【综合安防平台】的【关于】中前往【运行管理中心】 2.输入账户和密码进入【运行管理中心】 3.点击【状态监控】,搜索【能力开放网关】&#xff0c;点击【API管理】&#xff0c;查询可以对接的接口&#xff0c;点击对应的接口名称可以查看请求参数和返回…

抽象又有点垃圾的JavaScript

常数的排序 let x 10;let y 20;let z;if (x < y) {z x;x y;y z;}console.log(x, y);//x 20 ,y 10 通过一个媒介来继承x的初始值&#xff0c;然后将y的值赋值给x&#xff0c;再把媒介z的值赋值给y&#xff0c;达到排序 一个可重复使用的排序程序 第一种 function s…

微力同步私人网盘部署教程:利用端口映射实现远程访问的解决方案

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸&#xff0c;虽然谈不上多么新颖&#xff0c;但是其…

ReID网络:MGN网络(4) - Loss计算

1. MGN Loss MGN采用三元损失(Triplet Loss)。 三元损失主要用于ReID算法&#xff0c;目的是帮助网络学习到一个好的Embedding信息。之所以称之为三元损失&#xff0c;主要原因在于在训练中&#xff0c;参与计算Loss的分别有Anchor、Positive和Negative三方。 2. Triplet Lo…

实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

Vue2里监听localstorage里值的变化

有的时候,我们需要根据本地缓存在localstorage里值的变化做出相应的操作,这就需要我们监听localstorage: 首先,我们在src下的libs文件夹下新建一个stroage.js用于重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件 const Stroage = {// 重写set…