Python萤火虫找女朋友__arcade迷宫解密型游戏

萤火虫找女朋友_by李兴球_arcade迷宫解密型游戏

以下是部分代码预览:

"""
萤火虫找女朋友.py
请按上下左右方向箭头操作萤火虫去找另一只萤火虫。按W或S键
能改变它的发光强度,不过如果发光强了,可能会被癞蛤蟆发现,
所以要注意有时候光度不能太强!在迷宫还有陷阱,有钻石可拾取,可是它的女朋友在哪里呢?

本游戏主要用arcade模块实现,用turtle模块实现开始界面。

"""

import random
import arcade

SPRITE_SCALING = 1
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
SPRITE_PIXEL_SIZE = 64
GAME_NAME = "萤火虫找女朋友_by李兴球_arcade迷宫解密型游戏"
# 距离屏幕边距的最小距离 

VIEWPORT_MARGIN = 40
MOVEMENT_SPEED = 5

class MyGame(arcade.Window):
    """主应用程序类. """

    def __init__(self, width, height,title):
        """
        初始化器
        """
        super().__init__(width, height,title)

        self.game_over = False

        # 角色列表
        
        self.toad_list = None
        self.diamond_list = None
        self.trap_list = None       

        # 设置游戏及玩家相关变量
        self.score = 0
        self.player_sprite = None     # 雄性萤火虫 (玩家)
        self.femail_firefly = None    # 雌性萤火虫
        self.wall_list = None
        self.physics_engine = None
        self.view_bottom = 0
        self.view_left = 0

    def setup(self):
        """ 实例化变量 """
        
        self.found_girl_friend = False

        # 地图块角色列表
        self.wall_list = arcade.SpriteList()

        # 设置蒙板       
        self.mask = arcade.Sprite("images/mask.png")
        self.mask.scale = 0.6
        
        # 下面是加载地图        
        my_map = arcade.read_tiled_map(f"bigroom_1.tmx", SPRITE_SCALING)
        
        # 读取不可移动的平台数据阵列'ground'是一图层的名称
        map_array = my_map.layers_int_data['ground']        
          
        # 从墙生成地图列表
        self.wall_list = arcade.generate_sprites(my_map, 'ground', SPRITE_SCALING)
        self.wall_list.move(SPRITE_PIXEL_SIZE ,0)   # 水平方向和垂直方向移动 
                
        self.toad_list.move(SPRITE_PIXEL_SIZE ,0)       

        # 设置背景颜色
        arcade.set_background_color(arcade.color.AMAZON)

        # 设置视口边界
        self.view_left = 0
        self.view_bottom = 0

    def detect_collision_radius_with_toads(self):
        """检测和每个癞蛤蟆的距离,蒙板越大,萤火虫越容易死"""
   
    def on_draw(self):
        """
        渲染屏幕
        """
        # 开始渲染
        arcade.start_render()

        # 画各个角色
        self.wall_list.draw()
   
    def on_key_press(self, key, modifiers):
        """当按键时调用此方法 """                

    def on_key_release(self, key, modifiers):
        """当松开按键时调用此方法 """

    def update(self, delta_time):
        """ 游戏逻辑设定,结果都是更新坐标/角度,删除/添加角色等。"""

        if self.game_over == True :return
        # 调用物理引擎
        self.physics_engine.update()

def show_game_UI():
    
    import turtle
    screen = turtle.getscreen()
    screen.title(GAME_NAME)
    screen.setup(610,610)
    screen.bgpic("images/bg.png")
    screen.onkeypress(lambda:screen.bye(),"space")
    screen.onclick(lambda x,y:screen.bye())
    screen.listen()
    screen.mainloop()    
    
def main():
    """ 主要方法"""

    show_game_UI()
    
    window = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT,GAME_NAME)
    window.setup()
    arcade.run()

if __name__ == "__main__":
    main()

 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在arcade, python, turtle分类目录。将固定链接加入收藏夹。