如何根据时间给出分数?

时间:2012-10-23 08:02:29

标签: actionscript-3 flash scoring

在我正在制作的游戏中,我需要根据时间制作一个评分系统。

如果你在游戏的第一秒获得了一场比赛。这场比赛比我在最后一场比赛中获得一场比赛更有价值。

换句话说,你做得越快,获得的分数就越多。有谁知道如何实现这一目标?我知道每个级别的总时间。

游戏是实时的,所以需要看到它在游戏早期显示高分,并随着时间的推移逐渐降低。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用Timer Class。所以你应该用类似的东西结束:

private var delay:uint = 1000;
private var repeat:uint = 3;
private var timer:Timer = new Timer(delay, repeat);

为滴答添加听众......

timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);

// Reduce bonus with time by a percentage
private function timerHandler(e:TimerEvent):void { scoreBonus *= 0.9;  }

// Set bonus to 0
private function completeHandler(e:TimerEvent):void { scoreBonus = 0; }

现在设置分数奖金&在你希望开始奖金的地方启动计时器。

scoreBonus = 10;

timer.start();

所以在任何时候,你只需要在总分中加上奖金。

答案 1 :(得分:1)

定义每个级别的最大时间然后做一些数学技巧:

score = Math.max(0, levelMaxTime - timeSpent) * levelScore;

示例:

timeSpent = 12; // The player completed the level in 12 seconds
levelMaxTime = 20; // The player has to completed the level within 30 seconds
levelScore = 50; // The player will be awarded of 50 points per remaining second

// Compute the final score
score = Math.max(0, levelMaxTime - timeSpent) * levelScore; // 400 points