Я пытаюсь реализовать счет внутри игры, которую я создаю в AS3. До сих пор мне удалось создать систему оценки, которая добавляет/вычитает очки на основе действий в игре. Я решил, что было бы проще, чтобы система подсчета очков просто добавляла очки, а не вычитала их и достигла определенного числа, закончив игру.ActionScript 3 Scoring/Math
Проблема, с которой я сталкиваюсь, заключается в том, что, с одной стороны, игра выполняет проверки, чтобы увидеть, находятся ли фигуры в нужном месте. Если они есть, игрок выигрывает. С другой стороны, счетчик должен подсчитывать и достигать определенного количества (10), прежде чем решить, проигрывает ли игрок. В настоящий момент происходит какое-то странное поведение, в котором я могу перетащить куски, не помещая их в нужное место, а счетчик все равно длится 10. Я пробовал несколько вариантов изменения математики, так что он имеет разные значения , но функциональность такая же. Что бы мне пришлось изменить, чтобы он поступил так, как описано выше?
stop();
//Create the score counter
import flash.text.TextField;
var score = 0;
scorecounter.text = score;
function init(): void
{
score = 0;
scorecounter.text = "SCORE:" + score.toString();
}
function updateScore(): void
{
scorecounter.text = ++score;
}
function evaluateScore(): void //this is meant to stop the score going below 0
{
scorecounter.text = --score;
if(score < 0) {
score -= score;
}
}
/*Omitted some functions and var's for object positions and events*/
function stopDragging(e:MouseEvent):void {
e.currentTarget.stopDrag();
switch (e.currentTarget){
case apple:
if (apple.x < appleEndX - offset || apple.x > appleEndX + offset ||
apple.y < appleEndY - offset || apple.y > appleEndY + offset) {
apple.x = appleStartX;
apple.y = appleStartY;
soundOne();
updateScore();
} else {
apple.x = appleEndX;
apple.y = appleEndY;
soundTwo();
updateScore();
checkGame();
}
break;
//Lots of other cases, using the same method
//The end of the game - here, I've been trying to set it to
//check whether the player will win or lose
}
}
function checkGame(): void {
if (apple.x == appleEndX && apple.y == appleEndY && pear.x == pearEndX &&
pear.y == pearEndY && guava.x == guavaEndX && guava.y == guavaEndY &&
pineapple.x == pineappleEndX && pineapple.y == pineappleEndY &&
plum.x == plumEndX && plum.y == plumEndY &&
purple.x == purpleEndX && purple.y == purpleEndY)
{
trace("You win!");
gotoAndStop(149);
soundFive();
} else if (score == 10) {
gotoAndStop(150);
soundSix();
trace("You lose.");
}
}
user3293367 вы вызываете updateScore() дважды: в 'if' и в' else'. Это точно так, как если бы вы вызывали его каждый раз. – helloflash