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

