用户:
Rtssts查看:0 回复:0 评论:0 创建时间:2023-04-01T17:53:02
【作品展示】

【作品介绍】
ursina迷宫游戏
【作品源代码】
from ursina import*
from ursina.prefabs.first_person_controller import FirstPersonController
from ursina.prefabs.sky import Sky
from create import createMaze
app=Ursina()
wall_texture=load_texture("brick.png")
start_texture=load_texture("redstoneblock.jpg")
end_texture=load_texture("greendiamondblock.jpg")
ground_texture=load_texture("plank.jpg")
class Wall(Button):
def __init__(self,position):
super().__init__(
parent=scene,
model="cube",
texture=wall_texture,
color=color.white,
position=position,
origin_y=0.5
)
class Start(Button):
def __init__(self,position):
super().__init__(
parent=scene,
model="cube",
texture=start_texture,
color=color.white,
position=position,
origin_y=0.5
)
class End(Button):
def __init__(self,position):
super().__init__(
parent=scene,
model="cube",
texture=end_texture,
color=color.white,
position=position,
origin_y=0.5
)
class Ground(Button):
def __init__(self,position):
super().__init__(
parent=scene,
model="cube",
texture=ground_texture,
color=color.white,
position=position,
origin_y=0.5
)
class Player(FirstPersonController):
def __init__(self):
global startPosition
super().__init__()
camera.fov=129
self.position=startPosition
self.gravity=0.99
self.speed=5
self.mouse_sensitivity=Vec2(199,199)
def jump(self):
pass
class Hand(Entity):
def __init__(self):
super().__init__(
parent=camera.ui,
model="cube",
scale=(0.20,0.29),
color=color.white,
rotation=Vec3(149,-9,5),
position=Vec2(0.5,-0.5)
)
def active(self):
self.position=Vec2(0.1,-0.5)
self.rotation=Vec3(90,-10,0)
def passive(self):
self.rotation=Vec3(150,-10,0)
self.position=Vec2(0.4,-0.4)
maze=createMaze(15,15)
startPosition=None
endPosition=None
banPostions=[]
for y in range(1,4):
for x,row in enumerate(maze):
for z,value in enumerate(row):
if str(value)=="s":
Start((x*2,0,z*2))
Start((x*2,0,z*2+1))
Start((x*2+1,0,z*2))
Start((x*2+1,0,z*2+1))
startPosition=(x*2,3,z*2)
banPostions.append([x*2,z*2])
banPostions.append([x*2,z*2+1])
banPostions.append([x*2+1,z*2])
banPostions.append([x*2+1,z*2+1])
elif str(value)=="e":
End((x*2,0,z*2))
End((x*2,0,z*2+1))
End((x*2+1,0,z*2))
End((x*2+1,0,z*2+1))
endPosition=(x*2,3,z*2)
banPostions.append([x*2,z*2])
banPostions.append([x*2,z*2+1])
banPostions.append([x*2+1,z*2])
banPostions.append([x*2+1,z*2+1])
elif str(value)=="0":
Wall((x*2,y,z*2))
Wall((x*2,y,z*2+1))
Wall((x*2+1,y,z*2))
Wall((x*2+1,y,z*2+1))
y2=0
for x2 in range(x*2+1):
for z2 in range(z*2+1):
if not([x2,z2]in banPostions):
Ground((x2,y2,z2))
player=Player()
sky=Sky()
Hand=Hand()
app.run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn