这是一个使用MakeCode Arcade开发的平台跳跃类"猫吃金币"游戏代码。
游戏核心机制
1. 自定义精灵类型
python
- class SpriteKind:
-
- Coin = SpriteKind.create() # 金币
-
- Flower = SpriteKind.create() # 花朵(特殊物品)
-
- Fireball = SpriteKind.create() # 火球(敌人)
复制代码
2. 游戏组件初始化
python
- # 设置背景和主角
-
- scene.set_background_color(9)
-
- scene.set_background_image(云朵背景图片)
-
- Hops_and_Paw = sprites.create(猫角色图片, SpriteKind.player)
-
- controller.move_sprite(Hops_and_Paw, 80, 0) # 水平移动速度80,垂直为0(跳跃单独控制)
-
复制代码
3. 核心游戏功能
关卡系统 startLevel()
python
- def startLevel():
-
- # 根据当前关卡加载不同地图
-
- if current_level == 0:
-
- tiles.set_tilemap(tilemap("level"))
-
- elif current_level == 1:
-
- tiles.set_tilemap(tilemap("level_0"))
-
- elif current_level == 2:
-
- tiles.set_tilemap(tilemap("level_1"))
-
- else:
-
- game.over(True) # 通关
-
-
-
- # 重置游戏状态
-
- info.set_life(5) # 生命值
-
- tiles.place_on_random_tile(Hops_and_Paw, assets.tile("tile6")) # 出生点
-
- 物品生成系统
复制代码
python
- # 生成金币(有动画效果)
-
- for value5 in tiles.get_tiles_by_type(assets.tile("tile4")):
-
- flower = sprites.create(金币图片, SpriteKind.Coin)
-
- animation.run_image_animation(flower, 金币动画序列, 100, True)
-
-
-
- # 生成花朵(特殊物品)
-
- for value6 in tiles.get_tiles_by_type(assets.tile("tile5")):
-
- flower = sprites.create(花朵图片, SpriteKind.Flower)
-
-
-
- # 生成火球敌人
-
- for value7 in tiles.get_tiles_by_type(assets.tile("tile11")):
-
- fireball = sprites.create(火球图片, SpriteKind.Fireball)
-
- animation.run_movement_animation(fireball, "c 0 -100 0 100 0 0", 2000, True) # 上下移动
-
复制代码
4. 玩家控制与物理系统
跳跃机制
python
- def on_a_pressed():
-
- if Hops_and_Paw.vy == 0: # 只有在地面上才能跳跃
-
- Hops_and_Paw.vy = -150 # 向上速度
-
-
-
- controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
复制代码
角色动画系统 on_on_update()
python
- def on_on_update():
-
- # 根据速度状态切换角色图像
-
- if Hops_and_Paw.vy < 0: # 上升状态
-
- Hops_and_Paw.set_image(跳跃向上图片)
-
- elif Hops_and_Paw.vy > 0: # 下降状态
-
- Hops_and_Paw.set_image(跳跃向下图片)
-
- elif Hops_and_Paw.x % 2 == 0: # 行走动画(交替图像)
-
- Hops_and_Paw.set_image(行走图片1)
-
- else:
-
- Hops_and_Paw.set_image(行走图片2)
-
-
-
- # 物理系统
-
- if 碰到左右墙壁且在下落:
-
- Hops_and_Paw.vy = 0
-
- Hops_and_Paw.ay = 0 # 取消重力
-
- else:
-
- Hops_and_Paw.ay = 350 # 重力加速度
-
-
-
- # 方向翻转
-
- if 向左移动或碰到左墙:
-
- Hops_and_Paw.image.flip_x()
复制代码
5. 碰撞检测系统
收集金币
python
- def on_on_overlap(sprite, otherSprite):
-
- info.change_score_by(1) # 得分+1
-
- otherSprite.destroy() # 金币消失
复制代码
碰到花朵生成蜜蜂敌人
python
- def on_on_overlap2(sprite4, otherSprite2):
-
- otherSprite2.destroy()
-
- bee = sprites.create(蜜蜂图片, SpriteKind.enemy)
-
- bee.follow(Hops_and_Paw, 50) # 蜜蜂会跟随玩家
复制代码
敌人碰撞逻辑
python
- def on_on_overlap4(sprite6, otherSprite4):
-
- otherSprite4.destroy()
-
- if Hops_and_Paw.y < otherSprite4.y: # 从上方踩敌人
-
- info.change_score_by(3) # 奖励分数
-
- else: # 从侧面碰到敌人
-
- info.change_life_by(-1) # 扣血
复制代码
6. 关卡切换与游戏结束
通关条件
python
- def on_overlap_tile2(sprite3, location2):
-
- global current_level
-
- current_level += 1 # 进入下一关
-
- startLevel()
-
-
-
- # 检测通关瓷砖(tile2)
-
- scene.on_overlap_tile(SpriteKind.player, assets.tile("tile2"), on_overlap_tile2)
复制代码
死亡条件
python
- def on_overlap_tile(sprite2, location):
-
- game.over(False, effects.melt) # 融化效果
-
-
-
- # 检测危险瓷砖(tile3)
-
- scene.on_overlap_tile(SpriteKind.player, assets.tile("tile3"), on_overlap_tile)
复制代码
游戏特点
多关卡设计:包含3个不同难度的关卡
丰富的动画:角色移动、金币旋转、敌人移动都有动画效果
物理系统:重力、跳跃、碰撞检测完整
敌人AI:蜜蜂会跟踪玩家,火球会规律移动
生命值系统:玩家有5条生命,可以承受多次伤害
得分机制:收集金币和踩敌人都能获得分数
这是一个典型的平台跳跃游戏,具有完整的游戏机制和流畅的操作体验。
|