Форум 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)

VVall 25.02.2009 20:46

Цитата:

Сообщение от DarkLight (Сообщение 801161)
Не сказал бы что сложнее
Код AS1/AS2:

prevscore=score%1000;
score+=100;
life+=1*((score-prevscore)%1000);

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

И что получится с таким кодом?

Допустим, было 100 очков, прибавили 100. 1*((200-100)%1000) будет 100.

shaltay 25.02.2009 20:49

Мне надо именно для каждой тысяче прибавлять жизнь. Вот мой код:
Код AS1/AS2:

if (score==5000 or score==10000 or score==15000){
        life=life+1; score=score+10;
}
if (score==20000 or score==25000) {
        life=life+2; score=score+10;
}

Прибавляю +10 каждый раз потому, что при наборе X000 очков жизни будут прибавляться со скоростью милисикунд до тех пор, пока не пополню счет. Если кто-то знает, как от этого избавиться, пишите )

Добавлено через 2 минуты
Цитата:

Сообщение от VVall (Сообщение 801148)
Зачем floor?
Код AS1/AS2:

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

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

А куда вставить этот код??

DarkLight 25.02.2009 20:58

Цитата:

И что получится с таким кодом?
Забыл убрать деление в 1ой строке, исправлено)

shaltay 25.02.2009 21:05

А что такое вообще %1000??

DarkLight 25.02.2009 21:13

Целочисленный остаток от деления 1го числа на 2ое. Кстати он в этом случае не в тему, сделал вариант с Math.floor

VVall 25.02.2009 21:17

Цитата:

Сообщение от shaltay (Сообщение 801166)
А куда вставить этот код??

Туда, где вы прибавляете очки. Я рекомендую сделать функцию прибавления очков, в которой будет выполняться собственно прибавление и эта проверка.

shaltay 25.02.2009 21:36

Цитата:

Сообщение от VVall (Сообщение 801173)
Туда, где вы прибавляете очки. Я рекомендую сделать функцию прибавления очков, в которой будет выполняться собственно прибавление и эта проверка.

А как должна выглядеть эта функция, напишите пожалуйста, функции создаю оч. коряво, обычно скрипты просто беру откуда-то..

Добавлено через 5 минут
Цитата:

Сообщение от DarkLight (Сообщение 801161)
Не сказал бы что сложнее
Код AS1/AS2:

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

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

Вы можете всунуть правильно этот код в мой
Код 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["chkdot"+posx+posy]=",";
 _root.score+=100;

Добавлено через 10 минут
Код AS1/AS2:

 if ((getl(posx,posy)==",") and _root["chkdot"+posx+posy]<>",")  {
_root.prevscore=_.root.score;
_root.score+=100;
life+=1*(Math.floor((_root.score-_root.prevscore)/1000));
};

Очки прибавляются, а жизни нет..

VVall 25.02.2009 21:47

Ну так надо научиться создавать функции и вообще понимать элементарнейший код, типа примеров в этой теме, прежде чем писать игры.

Я AS2 не знаю, приблизительно функция будет выглядеть так:

Код AS1/AS2:

function addPoints(amount:int):void
{
  var prevscore:int=score%1000;
  score+=amount;
  if(prevscore>(score%1000)) life+=1;
}

И всюду в коде игры вместо score=score+число; нужно вызывать функцию addPoints(число);

NoCD 26.02.2009 10:17

Вложений: 1
За каждые 50 очков будет начисляться бонус в размере 1 очка.
setInterval не люблю, поэтому сделал через onEnterFrame счетчик.
Здесь же показано как используется функция

Код AS1/AS2:

var timer=0
var score=0
var bonus_up=0
this.onEnterFrame=function()
{if(timer<10){timer++}else{
score+=10
timer=0
calc()
}}
 
function calc(){bonus_up=Math.floor(score/50)}

---------------------------------------------
Цитата:

Т.е если потратить жизни получаеш очки и они возвращаются :O
чего???

qazwsx 26.02.2009 11:04

Т.е если потратить жизни получаеш очки и они возвращаются :O


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

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