1

我正在 AS3 中开发一个相当基本的目标类太空射击类 Flash 游戏。游戏最初包含 1 个具有随机变量参数的敌方目标,例如速度和生命值,但组合得分计数器仍然是预定义的,一个。

从那以后,我将我的游戏扩展到我有几个敌方目标,每个目标都有自己的类,因此,它们有自己的可变参数值。我还冒昧地增加了综合分数,以反映每个敌方目标的难度。

我遇到的问题是,我用于组合分数计数器的原始代码行仍然设置为“score++;”,每次“if 语句”发生时它只会添加一个值 1。

我的问题是,我怎样才能让我的分数计数器根据为每个班级分配的值来增加分数?

以下是一些相关代码,并附有注释以帮助解释我的观点:

杀死敌方目标时的“If 语句”(位于我的 Level 课程中):

// 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
}   

我只是不确定是否需要创建一个新函数来组合分数值,并拥有我的“score++”;从中拉出来,我该怎么做呢?

我觉得这是许多面向目标的程序员认为相关的问题,因为将来自多个类的变量组合到单个计数器并不像看起来那么容易。此外,除了游戏开发之外,这还可以用于广泛的其他开发人员领域——在网络中创建多个计算机模型的数据库,并在使用新操作系统刷新工作站后计算“总完成”字段或所需的软件。

我真的很感激任何可以提供他们的专业知识、意见和/或鼓励的话的人。

非常感谢,亚历克斯

4

1 回答 1

1

为什么不让艘船与之通信的单例,而不是那样做。

每当您增加分数时:

ScoreManager.getInstance().incrementScore(ShipX.getScoreDelta())

每次收集后wheregetScoreDelta()将重置为 0。

然后当游戏结束时:

ScoreManager.getInstance().getCurrentScore();
于 2013-01-31T23:02:30.783 回答