Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Прибавление жизни в игре (http://www.flasher.ru/forum/showthread.php?t=121900)

shaltay 25.02.2009 19:33

Прибавление жизни в игре
 
Доброе время суток, друзья. У меня следущая проблема:
Я делаю игру. Герой собирает разные бонусы, получает за них очки. Бонусы есть двух стоимостей: 10 и 100 очков. При накоплении к примеру 1000 очков, он должен получить какой-то приз.
Очки прибавляются стандартным способом:
Код AS1/AS2:

if (score==1000){
        life=life+1;

Ситуация: у игрока, к примеру, 950 очков, он берет бонус стоимостью 100 очков и у него в итоге получается 1050. И life+1 он не получает.

Вопрос: как грамотно смастерить код?

DarkLight 25.02.2009 19:37

перед и после прибавления очков сравнивать Math.floor(score/1000); Если после прибавления увеличилось - надбавляем жизнь.

shaltay 25.02.2009 19:45

А можете написать, где это вставить в мой код, я не очень понимаю..

DarkLight 25.02.2009 19:46

это там где очки вставляются, в Вашем коде место прибавления очков отсутствует

Zik. 25.02.2009 19:53

Не понял про что говорит DarkLight (может я туплю), но вот решение (я так думаю):
Код AS1/AS2:

if (score >= 1000) {
        life += 1;
};


VVall 25.02.2009 19:55

Зачем floor?
Код AS1/AS2:

prevscore=score;
score+=100;
if(prevscore<1000&&score>=1000) life+=1;

ZIK68, в вашем варианте после набора 1000 очков любое увеличение счёта будет прибавлять попытку.

DarkLight 25.02.2009 20:03

мм, я имел ввиду случай когда 1000,2000,3000 и т п - прибавляется по одной жизни.

VVall 25.02.2009 20:09

Для каждой тысячи можно сделать по разному. Зависит от количества очков, которые могут добавиться за один раз. Если в AS есть операция % (должна быть), можно так:
Код AS1/AS2:

prevscore=score%1000;
score+=100;
if(prevscore>(score%1000)) life+=1;

Но если за один раз может добавиться больше тысячи очков, придётся делать сложнее, чтобы добавлялось соответствующее количество попыток.

DarkLight 25.02.2009 20:33

Не сказал бы что сложнее
Код AS1/AS2:

prevscore=score;
score+=100;
life+=1*(Math.floor((score-prevscore)/1000));

даже if-а не нужно, если очки только вверх прибавляются

shaltay 25.02.2009 20:43

Код AS1/AS2:

 if ((getl(posx,posy)==".") and _root["chkdot"+posx+posy]<>".") {_root["Dot"+posx+posy].removeMovieClip(); _root.dot--
 _root["chkdot"+posx+posy]=".";
 _root.score+=10;
 }
 
 if ((getl(posx,posy)==",") and _root["chkdot"+posx+posy]<>",") {_root["Dot2"+posx+posy].removeMovieClip(); _root.dot--
 _root["chkdot"+posx+posy]=",";
 _root.score+=100;

Вот код, в котором при попадании героя в какую-то клеткуи с бонусом, ему дается N очков и бонус, который он взял, исчезает.


Часовой пояс GMT +4, время: 15:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.