用户:
程序侯查看:18 回复:11 评论:18 创建时间:2020-05-25T11:50:14
【作品展示】
【作品介绍】
pen是一个放着许多画笔的字典。
为什么第24行代码有错?
【作品源代码】
l = []
num = 0
import turtle
while True:
num += 1
try:
l.append(turtle.textinput('turtle弹幕(按“Canser”键即可退出编辑)', (('第' + str(num)) + '行字符串是:')) + '')
except TypeError:
break
speed = 0
while speed == 0:
speed = turtle.numinput('turtle弹幕(不能为0)', '请设置弹幕速度')
pen = {}
serial = 0
def if_else(_if, _then, _else):
if _if:
return _then
else:
return _else
import time, random
def draw(number):
global pen, speed, l
text = random.choice(l)
pen[number].pencolor(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))#就是这出错了
pen[number].hideturtle()
pen[number].penup
pen[number].goto(if_else(speed > 0, -1000, 1000), random.uniform(-800, 800))
while if_else(speed > 0, pen[number].xcor() > 1000, pen[number].xcor < -1000):
pen[number].clear()
pen[number].setx(pen[number].xcor + speed)
pen[number].pendown()
pen[number].write(text, font=('宋体', 25, 'normal'))
pen[number].penup()
import _thread
while True:
pen[serial] = turtle.pen()
_thread.start_new_thread(draw, (serial,))
time.sleep(random.uniform(0, 3))import turtle
import time#准备
class danmu():#创建弹幕类
def __init__(self,text,pos=0,color='black',speed=5,size=20,font="微软雅黑",mode='normal'):#设置可调整的参数
self.text=text#设置弹幕文字
self.size=size#设置弹幕大小
self.font=font#设置弹幕字体
self.mode=mode#设置弹幕样式
self.speed=speed#设置弹幕速度
self.pen=turtle.Pen()#建立绘制弹幕的画笔
self.pen.hideturtle()#隐藏画笔
self.pen.pu()#画笔抬笔,不然弹幕过后会留下痕迹
self.pen.goto(350,pos)#移动到发射坐标(go函数中没有再用到pos参数,不用全局实例化)
self.pen.setheading(180)#从右往左,B站传统
self.pen.speed(0)#满速度,避免不必要的停顿
self.pen.color(color,color)#设置颜色(同pos,下面没用到)
def go(self):
for i in range(int(750/self.speed)):#一条弹幕走750格,用750÷速度控制发射速度
self.pen.fd(self.speed)#完成一帧前进
self.pen.write(self.text,font=(self.font,self.size,self.mode))#书写弹幕(按传入的字体、大小、样式)
time.sleep(0.02)#短暂停顿
self.pen.undo()#然后立即撤销,进入下一循环,前进一点点再书写、撤销
dms=[danmu('开幕雷击',pos=300,speed=15,color='#66ccff'),danmu('开幕雷击',pos=280,speed=15,color='#66ccff')
,danmu('开幕雷击',pos=260,speed=15,color='#66ccff'),danmu('开幕雷击',pos=240,speed=15,color='#66ccff')
,danmu('开幕雷击',pos=220,speed=15,color='#66ccff'),danmu('开幕雷击',pos=200,speed=15,color='#66ccff')]
for a in dms:
a.go()
'''
turtle库是单线程的,也就是说弹幕只能一条一条发,各位用自己会的多线程库也来做一个呗,记得发评论区哦~
'''
送你的
点赞1
评论