"""
家人们太给力了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