Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.02.2009, 19:33
shaltay вне форума Посмотреть профиль Отправить личное сообщение для shaltay Посетить домашнюю страницу shaltay Найти все сообщения от shaltay
  № 1  
Ответить с цитированием
shaltay
 
Аватар для shaltay

Регистрация: May 2006
Сообщений: 162
Отправить сообщение для shaltay с помощью ICQ
По умолчанию Прибавление жизни в игре

Доброе время суток, друзья. У меня следущая проблема:
Я делаю игру. Герой собирает разные бонусы, получает за них очки. Бонусы есть двух стоимостей: 10 и 100 очков. При накоплении к примеру 1000 очков, он должен получить какой-то приз.
Очки прибавляются стандартным способом:
Код AS1/AS2:
if (score==1000){
	life=life+1;
Ситуация: у игрока, к примеру, 950 очков, он берет бонус стоимостью 100 очков и у него в итоге получается 1050. И life+1 он не получает.

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

Старый 25.02.2009, 19:37
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
перед и после прибавления очков сравнивать Math.floor(score/1000); Если после прибавления увеличилось - надбавляем жизнь.
__________________
4am is time to rock

Старый 25.02.2009, 19:45
shaltay вне форума Посмотреть профиль Отправить личное сообщение для shaltay Посетить домашнюю страницу shaltay Найти все сообщения от shaltay
  № 3  
Ответить с цитированием
shaltay
 
Аватар для shaltay

Регистрация: May 2006
Сообщений: 162
Отправить сообщение для shaltay с помощью ICQ
А можете написать, где это вставить в мой код, я не очень понимаю..

Старый 25.02.2009, 19:46
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 4  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
это там где очки вставляются, в Вашем коде место прибавления очков отсутствует
__________________
4am is time to rock

Старый 25.02.2009, 19:53
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 5  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
Не понял про что говорит DarkLight (может я туплю), но вот решение (я так думаю):
Код AS1/AS2:
if (score >= 1000) {
	life += 1;
};

Старый 25.02.2009, 19:55
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 6  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Зачем floor?
Код AS1/AS2:
prevscore=score;
score+=100;
if(prevscore<1000&&score>=1000) life+=1;
ZIK68, в вашем варианте после набора 1000 очков любое увеличение счёта будет прибавлять попытку.


Последний раз редактировалось VVall; 25.02.2009 в 19:57.
Старый 25.02.2009, 20:03
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 7  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
мм, я имел ввиду случай когда 1000,2000,3000 и т п - прибавляется по одной жизни.
__________________
4am is time to rock

Старый 25.02.2009, 20:09
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 8  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Для каждой тысячи можно сделать по разному. Зависит от количества очков, которые могут добавиться за один раз. Если в AS есть операция % (должна быть), можно так:
Код AS1/AS2:
prevscore=score%1000;
score+=100;
if(prevscore>(score%1000)) life+=1;
Но если за один раз может добавиться больше тысячи очков, придётся делать сложнее, чтобы добавлялось соответствующее количество попыток.

Старый 25.02.2009, 20:33
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 9  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Не сказал бы что сложнее
Код AS1/AS2:
prevscore=score;
score+=100;
life+=1*(Math.floor((score-prevscore)/1000));
даже if-а не нужно, если очки только вверх прибавляются
__________________
4am is time to rock


Последний раз редактировалось DarkLight; 25.02.2009 в 21:13.
Старый 25.02.2009, 20:43
shaltay вне форума Посмотреть профиль Отправить личное сообщение для shaltay Посетить домашнюю страницу shaltay Найти все сообщения от shaltay
  № 10  
Ответить с цитированием
shaltay
 
Аватар для shaltay

Регистрация: May 2006
Сообщений: 162
Отправить сообщение для shaltay с помощью ICQ
Код 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, время: 14:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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