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

2023-10-26

直接上演示视频

请添加图片描述

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

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实现夜空小星星

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

希望能够帮助到你

拜拜!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用三个一维数组绘制等值线图

    正如标题所示 我想使用三个一维数组绘制等高线图 这么说吧 x np array 1 2 3 and y np array 1 2 3 and z np array 20 21 45 为了在 matplotlib 中绘制等高线图 我对x an
  • celery任务eta已关闭,使用rabbitmq

    我使用教程中的默认设置和在 ubuntu 上运行的rabbitmq 使 Celery 任务正常进行 当我毫不延迟地安排任务时 一切都很好 但是当我给他们一个预计时间时 他们会被安排在未来 就好像我的时钟在某个地方关闭了一样 下面是一些请求任
  • 在 SQLAlchemy 中,过滤器是在连接之前还是之后应用?

    使用 SQLAlchemy 我执行如下查询 import models as m import sqlalchemy as sa s session maker q s query m ShareCount m Article join m
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 我可以在 matplotlib 中的绘图左侧放置一个垂直颜色条吗?

    来自颜色条方法的 matplotlib 命令摘要 http matplotlib org api pyplot api html highlight colorbar matplotlib pyplot colorbar我知道关键字参数or
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • DataFrame.loc 的“索引器太多”

    我读了关于切片器的文档 http pandas pydata org pandas docs stable advanced html using slicers一百万次 但我从来没有理解过它 所以我仍在试图弄清楚如何使用loc切片Data
  • 为什么我会收到 ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

    以下代码给出了值错误 major males for row in recent grads if recent grads Men gt recent grads Women major males append recent grads
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • 机器学习的周期性数据(例如度角 -> 179 与 -179 相差 2)

    我使用 Python 进行核密度估计 并使用高斯混合模型对多维数据样本的可能性进行排名 每一条数据都是一个角度 我不确定如何处理机器学习的角度数据的周期性 首先 我通过添加 360 来删除所有负角 因此所有负角都变成了正角 179 变成了
  • 使用具有可变数量索引的 numpy mggrid

    如何将 numpy mgrid 与可变数量的索引一起使用 我在 github 上找不到任何人将其与硬编码值以外的任何内容一起使用的示例 import numpy as np np mgrid 1 10 1 10 this works fin
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 如何使用 python 模块的多个 git 分支?

    我想使用 git 来同时处理我正在编写的模块中的多个功能 我目前正在使用 SVN 只有一个工作区 因此我的 PYTHONPATH 上只有该工作区 我意识到这不太理想 所以我想知道是否有人可以建议一种更 正确 的方法来做到这一点 让我用一个假

随机推荐

  • 【JAVA】代码规范

    一 命名规约 1 强制 所有编程相关命名均不能以下划线或美元符号开始 也不能以下划线或美元符号结束 反例 name name Object name name Object 2 强制 类名使用UpperCamelCase风格 必须遵从驼峰形
  • 计算机传输速率127,计算机基础知识2

    3 提高可靠性 计算机网络中的各台计算机可以通过网络互相设置为后备机 一旦某台计算机出现故障时 网络中的后备机即可代替继续执行 保证任务正常完成 避免系统瘫痪 从而提高了计算机的可靠性 4 分担负荷 当网上某台计算机的任务过重时 可将部分任
  • visjs 数据的增删改筛选(DataSet & DataView)

    visjs中的 DatatSet 用于数据的保存 可操作非结构化数据 并可监听数据的变化 DataSet构造 var data new vis DataSet data options 构造后 可通过 add updateOnly upda
  • Pandas知识点-DataFrame数据结构介绍

    Pandas知识点 DataFrame数据结构介绍 一 Pandas简介和安装 Pandas是Python中用于数据处理和数据分析的开源库 2008年由金融数据分析师Wes McKinney开发 开发Pandas的初衷是为了方便进行金融数据
  • 如何在pycharm中使用git

    一 环境配置 1 下载安装git 安装成功后 打开git bash here输入以下命令配置基础信息 git config global user name 用户名 git config global user name 邮箱地址 输入命令
  • 关于配置Golang语言环境中的一些问题以及配置yum源的方法

    关于配置Go语言环境中的一些问题 坚持不做无用的 重复的 混字数的博客 所以主要谈及安装使用过程中遇到的问题 具体安装参考博客 https pmlpml github io ServiceComputingOnCloud ex instal
  • SpringBoot中注入RedisTemplate报空指针

    现象 RedisTemplate不能作为静态变量注入 否则报空指针 错误做法 private static RedisTemplate
  • Pandas 中 SettingwithCopyWarning 的原理和解决方案

    Pandas 中 SettingwithCopyWarning 的原理和解决方案 原文链接 https www dataquest io blog settingwithcopywarning 原文标题 Understanding Sett
  • 防御第二天-防火墙演示实验

    1 上课思维导图 2 防火墙演示实验 防火墙FW1 原用户名 admin 原密码 Admin 123 配地址
  • 狂神docker学习笔记

    文章目录 前言 Docker 概述 1 Docker 为什么会出现 2 Docker 历史 3 Docker 能干嘛 Docker 安装 1 Docker的基本组成 2 安装Docker 3 阿里云镜像加速 4 回顾HelloWorld流程
  • Application is running inside IIS process but is not configured to use IIS server

    删除Program webBuilder UseKestrel
  • JSON字符串转换成List对象集合

    简单说下 有一个json字符串 我想通过jackson把json字符串转换成list对象集合 网上找了很多 但都不尽人意 后来还是看jackson文档 才知道怎么做 需要的包
  • ubuntu20.04配置安装frp内网穿透

    1 frp所在的github地址 https github com fatedier frp 2 下载 wget https github com fatedier frp releases download v0 38 0 frp 0 3
  • from keras.engine.topology import Layer 无此模块问题

    这可以说是深度学习必踩坑 就是版本问题 复现别人得代码时出现得问题 一开始没发现这篇博文 在GitHub上找了一圈都没找到这个引入 还走了弯路 以为是新版本包不一样了 修改也不可行 还是见识少了 这篇博客没营养 只作踩坑记录 参考博客 Ke
  • 什么是测试开发工程师(SET)?

    经常有人问到 什么是 软件测试开发工程师 Software Engineers in Test 缩写为SET 借用Google的规范来说其实就是 在测试中的软件工程师 其工作性质上首先是测试 然后才是开发 那么这里会让大家产生一个矛盾的感觉
  • Quick - Hello World

    文章目录 背景 谈一谈为我什么学QtQuick 环境搭建 Qt 安装 VS2019 安装 Qt Visual Studio Tools Hello World pro main cpp main qml 运行效果 参考鸣谢 背景 Qt4自2
  • Mybatis和Mybatis-Plus的配置

    目录 一 springMVC中Mybatis的配置 1 添加 MyBatis 和 MyBatis Spring 的依赖 2 配置数据源 3 配置 MyBatis 4 编写 Mapper 接口和对应的 XML 文件 二 springnboot
  • 大学二年级各科的学习成绩

    快要考试了 过多三个星期就是复习周了 又得狂抓一阵子 今天打开教务处 情不自禁打开成绩列表 希望继续保持吧 分数 学分 绩点 2008 2009学年上学期 01010022 毛邓三 上 必修 94 0 3 00 13 20 01020003
  • fortran使用MKL函数库计算方阵的逆矩阵

    本篇博文简要介绍使用MKL函数库计算方阵的逆矩阵 代码如下 program MKL getrfANDgetri use lapack95 implicit none integer parameter n 3 integer i j ipi
  • Python+turtle实现一个乌龟逃跑小游戏(可以和孩子一起完成)

    直接上演示视频 这个代码也是之前当老师的时候 给孩子们写的一个小游戏 那么我们一起看一下这个小游戏是如何让完成的 1 首先完成代码的前期准备 1 这里我们t turtle Pen 海龟 表示我们操作的小海龟 2 enemy turtle P