猫史档案馆


【Python作品分享】main

用户:RtsstsRtssts查看:0 回复:0 评论:0 创建时间:2023-04-01T17:53:02


【作品展示】

center_image

 

【作品介绍】

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


回复

上一页1 页 / 共 0下一页