LEVEL 22
硬币游戏第2步:分数 (Score)
高分算法
在这个关卡,我们要给玩家一点压力!不仅要收集硬币,还要快!
我们的分数公式如下:
Initial Score (初始分)
1000
Time Penalty (时间惩罚)
-0.5 / tick
Coin Reward (硬币奖励)
+1
Mushroom Reward (蘑菇奖励)
+5
UI Track: 别忘了使用
ui.track(game, "score"),否则玩家根本不知道自己得了多少分!
HIGH SCORE
012500
1UP
000985
coin_game_score.py
1
# 创建吃豆人风格街机游戏的第2部分。
2
# 游戏布局和物品。 向下滚动。
3
game.spawnXY("forest", 16, 16)
生成森林(省略部分重复代码)...
4
game.spawnXY("forest", 32, 16)
5
game.spawnXY("forest", 48, 16)
6
game.spawnXY("forest", 64, 16)
7
game.spawnXY("forest", 16, 32)
8
game.spawnXY("forest", 32, 32)
9
game.spawnXY("forest", 48, 32)
10
game.spawnXY("forest", 64, 32)
11
game.spawnXY("forest", 16, 48)
12
game.spawnXY("forest", 32, 48)
13
game.spawnXY("forest", 48, 48)
14
game.spawnXY("forest", 64, 48)
15
16
game.spawnXY("bronze-coin", 16, 8)
生成硬币(省略部分)...
17
game.spawnXY("bronze-coin", 24, 8)
18
game.spawnXY("bronze-coin", 32, 8)
19
game.spawnXY("bronze-coin", 48, 8)
20
game.spawnXY("bronze-coin", 56, 8)
21
game.spawnXY("bronze-coin", 64, 8)
22
game.spawnXY("bronze-coin", 72, 8)
23
game.spawnXY("bronze-coin", 8, 16)
24
game.spawnXY("bronze-coin", 24, 16)
25
game.spawnXY("bronze-coin", 40, 16)
26
game.spawnXY("bronze-coin", 56, 16)
27
game.spawnXY("bronze-coin", 72, 16)
28
game.spawnXY("bronze-coin", 8, 24)
29
game.spawnXY("bronze-coin", 16, 24)
30
game.spawnXY("bronze-coin", 24, 24)
31
game.spawnXY("bronze-coin", 32, 24)
32
game.spawnXY("bronze-coin", 40, 24)
33
game.spawnXY("bronze-coin", 48, 24)
34
game.spawnXY("bronze-coin", 56, 24)
35
game.spawnXY("bronze-coin", 64, 24)
36
game.spawnXY("bronze-coin", 72, 24)
37
game.spawnXY("bronze-coin", 24, 32)
38
game.spawnXY("bronze-coin", 56, 32)
39
game.spawnXY("bronze-coin", 8, 40)
40
game.spawnXY("bronze-coin", 16, 40)
41
game.spawnXY("bronze-coin", 24, 40)
42
game.spawnXY("bronze-coin", 32, 40)
43
game.spawnXY("bronze-coin", 40, 40)
44
game.spawnXY("bronze-coin", 48, 40)
45
game.spawnXY("bronze-coin", 56, 40)
46
game.spawnXY("bronze-coin", 64, 40)
47
game.spawnXY("bronze-coin", 72, 40)
48
game.spawnXY("bronze-coin", 8, 48)
49
game.spawnXY("bronze-coin", 24, 48)
50
game.spawnXY("bronze-coin", 40, 48)
51
game.spawnXY("bronze-coin", 56, 48)
52
game.spawnXY("bronze-coin", 72, 48)
53
game.spawnXY("bronze-coin", 8, 56)
54
game.spawnXY("bronze-coin", 16, 56)
55
game.spawnXY("bronze-coin", 24, 56)
56
game.spawnXY("bronze-coin", 32, 56)
57
game.spawnXY("bronze-coin", 48, 56)
58
game.spawnXY("bronze-coin", 56, 56)
59
game.spawnXY("bronze-coin", 64, 56)
60
game.spawnXY("bronze-coin", 72, 56)
61
62
game.spawnXY("mushroom", 40, 8)
63
game.spawnXY("mushroom", 8, 32)
64
game.spawnXY("mushroom", 72, 32)
65
game.spawnXY("mushroom", 40, 56)
66
67
game.score = 1000
初始分数1000
68
game.addCollectGoal()
设定目标:收集
69
# 为"score"和"time"设置用户界面。
70
ui.track(game, "time")
显示时间
71
ui.track(game, "score")
显示分数
72
73
player = game.spawnPlayerXY("knight", 8, 8)
74
# 暂时加快玩家速度,以简化关卡测试。
75
player.maxSpeed = 30
76
77
def onCollect(event):
收集事件
78
player = event.target
79
item = event.other
80
# 如果物品的类型是"bronze-coin":
81
if item.type == "bronze-coin":
82
# 将game.score提高1。
83
game.score += 1
+1分
84
# 如果物品的类型(type)是"mushroom",则将game.score提高5
85
if item.type == "mushroom":
86
game.score += 5
+5分
87
88
player.on("collect", onCollect)
89
90
# 此函数会随着时间的推移减少分数。
91
def checkTimeScore():
时间惩罚逻辑
92
# 每个时间帧都会减少游戏分数:
93
game.score -= 0.5
-0.5分
94
# 如果game.score小于0:
95
if game.score < 0:
96
# 将game.score设置为0:
97
game.score = 0
分数不能为负
98
99
# 主游戏循环。
100
while True:
101
checkTimeScore()
不断扣分!