首页 > 编程语言 >Python turtle 无图 25行 天地良心 大乌龟吃小乌龟

Python turtle 无图 25行 天地良心 大乌龟吃小乌龟

时间:2024-07-17 13:55:03浏览次数:15  
标签:turtle 25 bg word dg xg 20 乌龟

"""

家人们太给力了20分钟250阅读10赞

但是想憋波大的所以更新更晚了一天  今天要求降低一半

本期新规矩:七步成诗

12h 5赞花絮 7.5赞Python 15赞c++  都没到不更新

"""

发明人:苦瓜想干飞日本

发明项目:大乌龟吃小乌龟

银河系10后小伙发明了一种大乌龟吃小乌龟的程序

爱赚钱的记者闻讯而来

看到以下代码段:

import turtle,random;turtle.tracer(0);bg2,bg,dg,xg,word,f=turtle.Screen(),turtle.Turtle(),turtle.Turtle(),turtle.Turtle(),turtle.Turtle(),0
bg2.bgcolor('sky blue');bg2.setup(600,600);bg.speed(0);bg.ht();word.ht()
dg.shape('turtle');dg.shapesize(1.2);dg.pu();dg.speed(0);xg.shape('turtle');xg.pu();xg.speed(0)
for i in range(31):bg.pu();bg.goto(-300,-300+i*20);bg.pd();bg.fd(600)
bg.left(90)
for j in range(31):bg.pu();bg.goto(-300+j*20,300);bg.pd();bg.bk(600)
def score(tf):
    if tf:global word;word.ht();word.clear()
    word=turtle.Turtle();word.pu();word.goto(-290,270);word.write('已有'+str(f)+'只小乌龟遭遇你的魔抓',font=('微软雅黑',18));word.ht()
def xgtf(tftj):
    if tftj:xg.reset();xg.pu();xg.speed(0);x,y=random.randint(-14,14),random.randint(-14,14);xg.goto(x*20,y*20)
    else:xg.reset();xg.pu();xg.speed(0)
score(0)
def go(x1,y1):
    global xg,dg,f;dg.goto(x1, y1)
    xg.left(random.randint(0,3)*90);xg.fd(20);xgx,xgy=xg.pos();dgx,dgy=dg.pos()
    if abs(xgx)>300 or abs(xgy)>300:xgtf(0)
    elif abs(dgx)>300 or abs(dgy)>300:dg.reset();dg.pu();dg.speed(0);dg.shapesize(1+f*0.1)
    if round(dgx)==round(xgx) and round(dgy)==round(xgy):xg.ht();xgtf(1);f+=1;score(1);dg.shapesize(1+f*0.1)
    turtle.update()
def goLeft():x,y=dg.pos();dg.seth(180);go(x-20,y)
def goUp():x,y=dg.pos();dg.seth(90);go(x,y+20)
def goRight():x,y=dg.pos();dg.seth(0);go(x+20,y)
def goDown():x,y=dg.pos();dg.seth(270);go(x,y-20)
turtle.listen();turtle.onkeypress(goLeft,'Left');turtle.onkeypress(goRight,'Right');turtle.onkeypress(goDown,'Down');turtle.onkeypress(goUp,'Up')

import turtle,random;turtle.tracer(0);bg2,bg,dg,xg,word,f=turtle.Screen(),turtle.Turtle(),turtle.Turtle(),turtle.Turtle(),turtle.Turtle(),0
bg2.bgcolor('sky blue');bg2.setup(600,600);bg.speed(0);bg.ht();word.ht()
dg.shape('turtle');dg.shapesize(1.2);dg.pu();dg.speed(0);xg.shape('turtle');xg.pu();xg.speed(0)
for i in range(31):bg.pu();bg.goto(-300,-300+i*20);bg.pd();bg.fd(600)
bg.left(90)
for j in range(31):bg.pu();bg.goto(-300+j*20,300);bg.pd();bg.bk(600)
def score(tf):
    if tf:global word;word.ht();word.clear()
    word=turtle.Turtle();word.pu();word.goto(-290,270);word.write('已有'+str(f)+'只小乌龟遭遇你的魔抓',font=('微软雅黑',18));word.ht()
def xgtf(tftj):
    if tftj:xg.reset();xg.pu();xg.speed(0);x,y=random.randint(-14,14),random.randint(-14,14);xg.goto(x*20,y*20)
    else:xg.reset();xg.pu();xg.speed(0)
score(0)
def go(x1,y1):
    global xg,dg,f;dg.goto(x1, y1)
    xg.left(random.randint(0,3)*90);xg.fd(20);xgx,xgy=xg.pos();dgx,dgy=dg.pos()
    if abs(xgx)>300 or abs(xgy)>300:xgtf(0)
    elif abs(dgx)>300 or abs(dgy)>300:dg.reset();dg.pu();dg.speed(0);dg.shapesize(1+f*0.1)
    if round(dgx)==round(xgx) and round(dgy)==round(xgy):xg.ht();xgtf(1);f+=1;score(1);dg.shapesize(1+f*0.1)
    turtle.update()
def goLeft():x,y=dg.pos();dg.seth(180);go(x-20,y)
def goUp():x,y=dg.pos();dg.seth(90);go(x,y+20)
def goRight():x,y=dg.pos();dg.seth(0);go(x+20,y)
def goDown():x,y=dg.pos();dg.seth(270);go(x,y-20)
turtle.listen();turtle.onkeypress(goLeft,'Left');turtle.onkeypress(goRight,'Right');turtle.onkeypress(goDown,'Down');turtle.onkeypress(goUp,'Up')

记者蔑视*1:你这程序就25行 能跑的起来吗

苦瓜表示:我专门做这个的能马扁你?

记者蔑视*2:那你幼儿园什么系毕业的

苦瓜表示:太阳系毕业的

(BGM起)……

#第一步.基础设置

import turtle,random#导入模块
turtle.tracer(0)#拼命运行
bg2=turtle.Screen()#设置画布bg2
bg=turtle.Turtle()#设置画笔bg
dg=turtle.Turtle()#设置画笔dg
xg=turtle.Turtle()#设置画笔xg
word=turtle.Turtle()#设置画笔word
f=0#设置分数变量f
bg2.bgcolor('sky blue')#把背景改成天蓝色(没海蓝色 先凑合凑合用)
bg2.setup(600,600)#把画布大小改成600像素*600像素
bg.speed(0)#把bg画笔的速度设置成最快
bg.ht()#隐藏bg画笔
word.ht()#隐藏word画笔
dg.shape('turtle')#海龟形状
dg.shapesize(1.2)#设置1.2倍大小
dg.pu()#不让画笔留下痕迹
dg.speed(0)#速度最快
xg.shape('turtle')#海龟形状画笔
xg.pu()#抬笔
xg.speed(0)#速度最快

记者懵圈*3的问:诶大爷,您这个基础设置怎么这么长呀?

苦瓜摇摇手表示:因为它善

记者发出疑惑:那么为什么速度里0最快呢?

苦瓜表示:因为它晒够了180天(本来就这样)

记者蔑视*3:如果程序不能运行怎么办?

苦瓜表示:那也是因为程序它没有努力

#第二步.画辅助线(可以不写)

for i in range(31):#画31条线
    bg.pu()#抬笔
    bg.goto(-300,-300+i*20)#去下个位置
    bg.pd()#落笔
    bg.fd(600)#长度为画布的长
bg.left(90)#左转
for j in range(31):#画31条线
    bg.pu()#抬笔
    bg.goto(-300+j*20,300)#去下个位置
    bg.pd()#落笔
    bg.bk(600)#长度为画笔的宽

记者看了以后问:您这个程序能运行起来吗?

苦瓜表示:这个程序比较年迈,所以说这个代码啊……可能会比较松弛(能)

#第三步.分数系统(不写可以)

def score(tf):#定义函数score
    if tf:#如果tf结果为True运行
        global word#让这个函数里可以改变及使用画笔word
        word.ht()#隐藏word画笔
        word.clear()#删除word留下的痕迹
    word=turtle.Turtle()#重新赋值turtle画笔
    word.pu()#抬起画笔
    word.ht()#隐藏画笔
    word.goto(-290,270)#去角落
    word.write('已有'+str(f)+'只小乌龟遭遇你的魔抓',font=('微软雅黑',18))#输出分数
score(0)

记者蔑视*4:诶大爷 您这个word咋还要global呢?

苦瓜表示:试试就逝世(其实是用不了)

#第四步.小海龟投放(不写游戏不好玩)

def xgtf(tftj):#定义函数xgtf
    if tftj:#如果tftj结果为True运行
        xg.reset()#重开
        xg.pu()#不让小乌龟留下痕迹
        xg.speed(0)#把小乌龟的速度改为最高
        x,y=random.randint(-14,14),random.randint(-14,14)
        xg.goto(x*20,y*20)
    else:
        xg.reset()#重开
        xg.pu()#不让小乌龟留下痕迹
        xg.speed(0)#把小乌龟速度设为最高

记者表示:布什·戈门 你6 and 7行是认真的吗?

苦瓜表示:保证xg的x and y轴是20的倍数

#第五步.跑路的模版

def go(x1,y1):#定义go 跑路模版
    global xg,dg,f#让这个函数可以改变和使用这几个变量
    dg.goto(x1, y1)#去x1,y1位置
    xg.left(random.randint(0,3)*90)#让小乌龟换随机方向
    xg.fd(20)#前进一格的距离
    xgx,xgy=xg.pos()#获得小乌龟位置
    dgx,dgy=dg.pos()#获得大乌龟位置
    if abs(xgx)>300 or abs(xgy)>300:#小乌龟被玩家吃
        xgtf(0)#重新投放
    elif abs(dgx)>300 or abs(dgy)>300:#大乌龟撞到墙
        dg.reset()#重置
        dg.pu()#不让大乌龟留下痕迹
        dg.speed(0)#回到原来的速度
        dg.shapesize(1+f*0.1)#回到原来的体积
    if round(dgx)==round(xgx) and round(dgy)==round(xgy):
        xg.ht()#隐藏原来这只
        xgtf(1)#投放但先隐藏原来那只
        f+=1#加一分
        score(1)#加一分
        dg.shapesize(1+f*0.1)#让大乌龟比小乌龟再大0.1倍
    turtle.update()#刷新屏幕

记者蔑视*5:诶大爷 刷新屏幕干嘛

苦瓜表示:只因它太美

记者懵圈*3:这里score函数为什么用1

苦瓜解释:我想运行True可以运行的东西

#第六步.跑路函数

def goLeft():#向左
    x,y=dg.pos()#获得大乌龟位置
    dg.seth(180)#让大乌龟朝180度
    go(x-20,y)
def goUp():#向上
    x,y=dg.pos()#获得大乌龟位置
    dg.seth(90)#让大乌龟朝90度
    go(x,y+20)
def goRight():#向右
    x,y=dg.pos()#获得大乌龟位置
    dg.seth(0)#让大乌龟朝0度
    go(x+20,y)
def goDown():#向下
    x,y=dg.pos()#获得大乌龟位置
    dg.seth(270)#让大乌龟朝270度
    go(x,y-20)

记者懵圈*4:大爷您糊涂了吧 go这个函数的x1 y1还填dg画笔的xy轴加减

苦瓜表示:去前后左右一格啊? 这都不知道 阿米诺斯!

#第七步.监听键盘

turtle.listen()#开始监听
turtle.onkeypress(goLeft,'Left')#注意左键 点了就执行goLeft
turtle.onkeypress(goRight,'Right')#注意右键 点了就执行goRght
turtle.onkeypress(goDown,'Down')#注意下键(无特殊意义) 点了就执行goDown
turtle.onkeypress(goUp,'Up')#注意上键 点了就执行goUp

多说无益,记者当即举行了人机大赛

(人机大赛将在花絮里更新)

MVP结算:

        本期字数:5794

        本期完成时间: 共8h  耗时两天一夜

标签:turtle,25,bg,word,dg,xg,20,乌龟
From: https://blog.csdn.net/kgxgfrb/article/details/140465836

相关文章

  • SSM学生资助管理系统-计算机毕业设计源码30825
    目 录摘 要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 学生资助管理系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分......
  • LeetCode第257题:二叉树的所有路径的Java实现
    摘要LeetCode第257题要求生成二叉树的所有从根节点到叶子节点的路径。本文将介绍两种Java解决方案:迭代法和递归法。1.问题描述给定一个二叉树的根节点,按照从根到叶的顺序遍历所有路径,并将它们作为列表的列表返回。2.示例分析输入:[1,2,3,null,null,4]'输出:[[1,2],[1,......
  • CF825F String Compression题解
    思路容易想到是个动态规划。首先设\(f_i\)表示字符串前\(i\)个字符所组成的字符串的答案。状态定义好了,接下来就是考虑如何转移了。因为由\(f_i\)可以得到所有\(f_j\),其中\(i+j\lelen\),转移方程为\(f_i=f_j+x\),其中\(x\)为字符串\(i+1\)至\(j\)的最优压缩。接......
  • [ABC258Ex] Odd Steps 题解
    思路拿到这道题,第一时间肯定想到是\(dp\)题目。朴素DP用\(dp_i\)表示序列和为\(i\)的序列个数。因为原数组由奇数组成,所以\(dp\)只可能由\(dp_{i-1}\),\(dp_{i-3}\)等等转移过来,若\(i\inA\),\(dp_i=0\)。即:\[dp_i=\begin{cases}0&i\inA\\dp_{i-1}+dp_{i-3}+\c......
  • stm32用spi开发W25Q128(Flash闪存芯片)
    前提提要spi概念目录stm32用spi开发W25Q128(Flash闪存芯片)开发流程W25Q128(Flash闪存芯片)介绍内存分布引脚说明指令介绍(1) 写使能指令0x06(2) 读状态寄存器0x35(3) 写失能指令0x04(4) 擦除扇区指令0x20(5) 读取厂商和设备ID0x90代码stm32用spi开发W25Q128(Flash闪存芯片)开发......
  • python 解题 洛谷B2021到B2025
    B2021输出保留3位小数的浮点数n=float(input())n=n-0.000000000000001print('%.3f'%n)B2022输出保留12位小数的浮点数m=float(input())print('%.12f'%m)B2023空格分隔输出a=input()b=int(input())c=float(input())d=float(input())print(a,"",b,"......
  • Keysight 是德 DSAX92504A 高性能示波器
    Keysight是德DSAX92504A高性能示波器DSAX92504AInfiniium高性能示波器:25GHz高带宽实时示波器25GHz真正模拟带宽,可升级为zui高带宽:32GHz80GSa/s采样率,2通道;40GSa/s采样率,4通道zui深的存储深度――高达2Gpts存储器(每通道50Mpts标准深度)zui高的实时示波......
  • POJ 2524 Ubiquitous Religions
    题目链接:POJ2524【UbiquitousReligions】思路    经典并查集模板,求集合个数。代码#include<iostream>usingnamespacestd;#definelllonglongconstintN=5e5+10;intfa[N];intn,m;voidinit(intn){for(inti=1;i<=n;i++){f......
  • 昇思25天学习打卡营第 12 天 | mindspore 实现 ResNet50 图像分类
    1.背景:使用mindspore学习神经网络,打卡第12天;主要内容也依据mindspore的学习记录。2.ResNet介绍:mindspore实现ResNet50图像分类;ResNet基本介绍:ResidualNetworks是微软研究院KaimingHe等人于2015年在DeepResidualLearningforImageRecognition......
  • 代码随想录day25 复原IP地址 | 子集 | 子集II
    复原IP地址复原IP地址解题思路首先要判断什么是正确的IP地址:段位以0为开头的数字不合法段位里有非正整数字符不合法段位如果大于255了不合法接着就是要通过一个变量来存储加'.'的次数,然后将字符串分成四分,每段都需要检查是否符合条件。知识点回溯(分割),字符串心得这是......