(点击图片进入关卡)
让我们在我们的游戏中添加一些敌人。
简介
在第三步的 Pac-Man 风格街机游戏系列中,我们会将敌人添加到游戏中。
敌人使我们的游戏变得更具挑战性,难以预测。
我们正在制作一个 “逃跑与捕捉” 式的游戏,在这种游戏中,如果敌人抓到玩家,敌人立即击败玩家
我们将使用 "one-hit" 机制,所以敌人的攻击伤害应该大于或等于玩家的最大生命值。
玩家必须避开食人魔...... 除非他们有加电(我们将在下一级创建加电)!
使用键盘或鼠标进行播放器控制:
- W -> 向上
- S -> 向下
- A -> 左边
- D -> 右边
- 鼠标点击 -> 移动到该点
默认代码
# 创建Pac-Man风格街机游戏的第3步。
# 游戏布局和项目。 向下滚动。
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
game.spawnXY("bronze-coin", 48, 56)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
game.spawnXY("mushroom", 72, 32)
game.spawnXY("mushroom", 40, 56)
game.score = 1000
ui.track(game, "time")
ui.track(game, "score")
# 让我们在没有能力强化的情况下简化游戏。
game.addCollectGoal(10)
game.addSurviveGoal()
player = game.spawnPlayerXY("knight", 8, 8)
player.maxSpeed = 32
def onCollect(event):
player = event.target
item = event.other
if item.type == "bronze-coin":
game.score += 1
if item.type == "mushroom":
game.score += 5
player.on("collect", onCollect)
# 在中心生成一个怪物“生成器”:
# 将生成器spawnType设置为“scout”。
# 将生成器spawnDelay设置为大于5的值
# 这个函数配置新产生的侦察兵。
def onSpawn(event):
unit = event.target
unit.maxSpeed = 8
# 将单位的攻击伤害设置为
# 大于或等于玩家的Max Health.
# 将"scout"s'"spawn"事件的处理程序设置为OnSPOWN
def checkTimeScore():
game.score -= 0.5
if game.score < 0:
game.score = 0
while True:
checkTimeScore()
# 赢得游戏胜利。
概览
敌人会给你的游戏增添刺激。
你可以在游戏中使用许多不同类型的敌人:他们可以与玩家作战, 他们可以追逐和抓住玩家,或者他们可以成为竞争者(比如赛车游戏)。
如果我们使用 "generator" ,将敌人加入我们的游戏将会很简单。
但是随着时间的推移会产生敌人,所以我们应该使用 "spawn" 事件来配置它们。
目前,我们不能击败敌人,所以不需要 "defeat" 事件。 另外,最好让它们变慢,否则这将是一场非常艰难的比赛。
硬币游戏第 3 步:敌人 解法
# 游戏布局和项目。 向下滚动。
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
game.spawnXY("bronze-coin", 48, 56)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
game.spawnXY("mushroom", 72, 32)
game.spawnXY("mushroom", 40, 56)
game.score = 1000
ui.track(game, "time")
ui.track(game, "score")
# 让我们在没有能力强化的情况下简化游戏。
game.addCollectGoal(10)
# 添加一个生存的目标,因为我们现在有敌人:
game.addSurviveGoal()
player = game.spawnPlayerXY("knight", 8, 8)
player.maxSpeed = 32
def onCollect(event):
player = event.target
item = event.other
if item.type == "bronze-coin":
game.score += 1
if item.type == "mushroom":
game.score += 5
player.on("collect", onCollect)
# 在中心生成一个怪物“生成器”:
generator = game.spawnXY("generator", 41, 31)
# 将生成器spawnType设置为“scout”。
generator.spawnType = "scout"
# 将生成器spawnDelay设置为大于5的值
generator.spawnDelay = 6
# 这个函数配置新产生的侦察兵。
def onSpawn(event):
unit = event.target
unit.maxSpeed = 8
# 将单位的攻击伤害设置为
# 大于或等于玩家的Max Health.
unit.attackDamage = player.maxHealth
# 将"scout"s'"spawn"事件的处理程序设置为OnSPOWN
game.setActionFor("scout", "spawn", onSpawn)
def checkTimeScore():
game.score -= 0.5
if game.score < 0:
game.score = 0
while True:
checkTimeScore()
# 赢得游戏胜利。