PDA

Просмотр полной версии : Где ошибка


Artem Brigert
07.10.2002, 01:17
Итак код следующий:

bb=random(7);
aa=int(bb);


if(aa==0){
aaa._y++
aaa._x--
}
else if(aa==1){
aaa._y--
}
else if(aa==2){
aaa._y--
aaa._x++
}
else if(aa==3){
aaa._x--
}
else if(aa==4){
aaa._x++
}
else if(aa==5){
aaa._x--
aaa._y++
}
else if(aa==6){
aaa._y++
}
else if(aa==7){
aaa._y++
aaa._x++
}


ааа почему-то всегда движется в левый нижний угол. Почемууу???

Хэлпните плз. :D

Nox Noctis
07.10.2002, 02:50
—рандом(7) выдает:
0,1,2,3,4,5,6
то есть else if(aa==7){ в любом случае не работает...

и еще замечание:
bb = random(7); выдает целое число
то есть aa=int(bb); инт() здесь незачем...

Nox Noctis
07.10.2002, 02:59
и еще (япросто подписал направления):
if (aa == 0) {
// left down
aaa._y++;
aaa._x--;
} else if (aa == 1) {
// up
aaa._y--;
} else if (aa == 2) {
// right up
aaa._y--;
aaa._x++;
} else if (aa == 3) {
// left
aaa._x--;
} else if (aa == 4) {
// right
aaa._x++;
} else if (aa == 5) {
// left down
aaa._x--;
aaa._y++;
} else if (aa == 6) {
// down
aaa._y++;
} else if (aa == 7) {
// right down
aaa._y++;
aaa._x++;
}
влево+вниз встречается два раза...
то есть это двежение НЕ равновероятно всем остальным...
ты я так понял хотел добиться дрожания объекта на одном месте, да ?
тогда гораздо проще засечь его начальные координаты и сделать:

_y = defaultY + random(2)||-1;
_x = defaultX + random(2)||-1;

гораздо проще, правда ? :))

Artem Brigert
07.10.2002, 03:03
Пасиб :)
я хотел сделать хатичное движение :)
Чтобы мувик двигался непонятно куда, а он зараза по ему только понятному направлению пошёл :D

Artem Brigert
07.10.2002, 03:15
Блин я сам напорол :)

if(aa==0){
aaa._y++
aaa._x--
}

ведь при нуле у меня подразумевалось движение в верхний левый угол :D

Значит

_y--
_x--

Artem Brigert
07.10.2002, 03:29
Кстати Noctis не подскажеш как сделать, чтобы мувик плавно летал по всему ролику? :rolleyes:
Я что-то не допру никак.

Только принцип ;) дальше я сам

sergwizard
07.10.2002, 03:47
Давай уясним, что движение в левый нижний угол - это увеличение _У и уменьшение _Х. Правильно?
Теперь рассмотрим твой код, и посчитаем, сколько раз мы заставляем увеличиваться _Х и _У, и сколько раз уменьшаться.
Сразу условимся, что этот блок кода
else if(aa==7){
aaa._y++
aaa._x++
}
ты написал зря, т.к. аа никогда не примет значение 7. (Протрассируй аа для проверки.)
Из 7 условий, у тебя 2 увеличения _Х и три уменьшения.
И 3 увеличения _У и всего два уменьшения.
То есть, ты сам заставляешь постепенно передвигаться "ааа" в левый нижний угол. Удивляться нечему.

sergwizard
07.10.2002, 03:49
Блин, пока я писал ответ, Nox Noctis уже ответил. И даже переписку завязал. Ну что ж, кто не успел, тот протютюкал.

Artem Brigert
07.10.2002, 03:52
:D ты не расстраивайся. Я тут ещё вопрос задал. ;)

sergwizard
07.10.2002, 04:10
Успокоил. Тогда получай исходник. Может быть, он тебе поможет. Если тебе достаточно одного объекта, поставь n = 1 и не дублируй МС. Разберешься.

sergwizard
07.10.2002, 04:12
Опять файл не прицепился.

Artem Brigert
07.10.2002, 12:26
Пасиб, скачал.
Жаль времени нет сейчас посмотреть.