用户:花海UqGB查看:0 回复:2 评论:0 创建时间:2021-05-05T20:15:50
【作品展示】

【作品介绍】
我的作品是航天飞船
使用:点击运行后,左右键控制方向,空格键进行攻击
【作品源代码】
from vpython import *
import random
scene.background = vec(0, 0, 0.2)
s = 0
front_body = sphere(size=vec(100, 100, 300), color=color.red, opacity=0.9)
back_body = cylinder(axis=vec(0, 0, 150), radius=50, color=color.white)
left_w = cone(axis=vec(0, 0, -150), radius=35,
pos=vec(-45, -20, 100), color=color.yellow)
right_w = left_w.clone(pos=vec(45, -20, 100))
left_f = cone(axis=vec(0, 0, 75), radius=10, pos=vec(-50, -25,
100), color=color.orange, opacity=0.6, emissive=True)
right_f = left_f.clone(pos=vec(50, -20, 100))
middle_f = left_f.clone(axis=vec(0, 0, 100),
radius=30, pos=vec(0, 0, 150))
a = compound([front_body, back_body, left_w,
right_w, left_f, right_f, middle_f], H=100, pos=vec(0, -20, 3000), v=random.uniform(8, 12))
b = a.clone(color=color.yellow, H=100, v=random.uniform(8, 12))
c = b.clone(H=100, v=random.uniform(8, 12))
d = b.clone(H=100, v=random.uniform(8, 12))
def rand():
x = random.randint(-2000, 2000)
z = random.randint(-3300, -3150)
return vec(x, -20, z)
b.pos = rand()
c.pos = rand()
d.pos = rand()
l = [b, c, d]
for i in l:
i.rotate(angle = pi, axis = vec(0, 1, 0))
bh = box(color=color.green)
ch = bh.clone()
dh = bh.clone()
ah = bh.clone()
s1 = sphere(radius = 40, color = vec(0.6, 0.5, 0.5), pos = rand(), v = random.uniform(15, 25))
s2 = s1.clone(pos=rand(), v=random.uniform(15, 25))
s3 = s1.clone(pos=rand(), v=random.uniform(15, 25))
s4 = s1.clone(pos=rand(), v = random.uniform(15, 25))
s5 = s1.clone(pos=rand(), v = random.uniform(15, 25))
s6 = s1.clone(pos=rand(), v=random.uniform(15, 25))
ls = [s1, s2, s3, s4, s5, s6]
redl = box(pos = vec(0, -60, 2650), size = vec(4000, 20, 20), color = color.red, opacity = 0.6)
at = cylinder(pos = a.pos, color=vec(0.2, 0.9, 0.9), axis=vec(0, 0, -1), radius=20, emissive=True, opacity=0.9)
lab = label(pos = a.pos + vec(200, 100, 0), color = color.white, text = "score:"+str(s), height = 10, font = "Arial")
while True:
rate(100)
k = keysdown()
if "left" in k and a.pos.x > -2000:
a.pos.x -= 5
if "right" in k and a.pos.x < 2000:
a.pos.x += 5
if " " in k:
at.axis = vec(0, 0, -5000)
for i in l:
if i.pos.x + 100 >= a.pos.x >= i.pos.x - 100:
i.H -= 3
if i.H <= 0:
i.pos = rand()
i.v = random.uniform(8, 12)
a.H += 5
s += 1
else:
at.axis = vec(0, 0, -1)
for i in l:
if i.pos.z < 2500:
i.pos.z += i.v
else:
i.pos = rand()
i.v = random.uniform(8, 12)
a.H -= 10
for i in ls:
if i.pos.z < 2750:
i.pos.z += i.v
elif 2750 <= i.pos.z <= 3250:
if i.pos.x + 90 >= a.pos.x >= i.pos.x - 90:
a.H -= 5
i.pos = rand()
i.v = random.uniform(15, 20)
else:
i.pos.z += i.v
else:
i.pos = rand()
i.v = random.uniform(15, 20)
bh.pos=b.pos + vec(0, 60, 0)
bh.size=vec(b.H, 20, 20)
ch.pos=c.pos + vec(0, 60, 0)
ch.size=vec(c.H, 20, 20)
dh.pos=d.pos + vec(0, 60, 0)
dh.size=vec(d.H, 20, 20)
ah.pos=a.pos + vec(0, 60, 0)
ah.size=vec(a.H, 20, 20)
at.pos = a.pos
lab.pos = a.pos + vec(200, 100, 0)
lab.text = "score:"+str(s)
if a.H <= 0:
lab.text = "Game over"+"\n"+"final score:"+str(s)
break
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端: