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

"""

家人们太给力了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  耗时两天一夜

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值