我正在AS3开发一个相当基本的客观类空间射击风格的flash游戏。游戏最初包含1个具有随机变量参数的敌方目标,例如速度和健康状况,但组合分数计数器保持预定义,一个。
我已将游戏扩展到我有几个敌人目标,每个目标都有自己的类,因此,他们有自己的变量参数值。我还冒昧地增加了综合得分,以反映每个敌方目标的难度。
我遇到的问题是,我用于组合分数计数器的原始代码行仍然设置为“得分++;”,每次“if语句”发生时,它只会增加1。 / p>
我的问题是,如何根据每个班级的分配值,让我的分数计数器增加分数?
以下是一些相关代码,附注解释了我的观点:
当敌人目标被杀时,“如果声明”(位于我的等级类别中):
// if the bullet is touching the ship
if (MyMaths.hitTest(sh, bullets[bcount])) {
sh.health--; // lose 1 heath point
score++;
removeChild(bullets[bcount]); // remove the bullet from the screen
bullets.splice(bcount, 1); // remove the bullet from the list
}
Ship1(包含在我的Ship1类中)得分值
public function Ship1() {
score=1; // set point value
}
Ship2(存放在我的Ship2类中)得分值
public function Ship1() {
score=2; // set point value
}
Ship3(包含在我的Ship3类中)得分值
public function Ship1() {
score=3; // set point value
}
我只是不确定我是否需要制作一个新功能来合并得分值,并得到我的“得分++;”从中拉出来,我该怎么做呢?
我觉得这是许多面向目标的程序员认为相关的问题,因为将多个类的变量组合到单个计数器并不像看起来那么容易。此外,除了游戏开发之外,这可以用于广泛的其他开发人员利基 - 在网络中创建多个计算机模型的数据库,并在使用新操作系统刷新工作站后计算“完成总计”字段或必需的软件。
我真的很感激能够提供他们的专业知识,意见和/或鼓励的人。
非常感谢, 亚历
答案 0 :(得分:1)
为什么没有单独的每艘船舶与之通信而不是这样做。
每当你增加分数时:
ScoreManager.getInstance().incrementScore(ShipX.getScoreDelta())
每次收集后getScoreDelta()
将重置为0。
然后当游戏结束时:
ScoreManager.getInstance().getCurrentScore();