以下是部分代码预览:
""" 萤火虫找女朋友.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资源。)