PDA

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


philimon
18.12.2001, 14:14
нужен принцип прохождения для игры аркада-адвенчура
лучше на каком-нибудь понятном языке - Lingo, ActionScript, javascript(!)

Big_J_
19.12.2001, 17:52
нужен принцип прохождения для игры аркада-адвенчура лучше на каком-нибудь понятном языке - Lingo, ActionScript, javascript(!)

:rolleyes: И на какой вопрос отвечять точнее в чем вопрос :(

Fisher
19.12.2001, 20:32
В исходниках был флэшевый пэкмэн. Ежли не накрылся канэшна.

Big_J_
20.12.2001, 11:55
А дак значит philimon принцып построения играшек имел ввиду :) а я то думал ему принцып прохождения игр надо во думаю странный парень :)

а на счет "PACMAN" дак я ентот исходник в свое время так разкалупал что ваще :)

Ну кароче говоря тебе philimon не по принципу PacMan-а надо делать а на массиве основываться ну тоесть добавления новых уровней лучше массивом реализовывать ну типа так


//Описание уровней
Level1 = new Array ();
Level1[0] = "Level 1"
Level1[1] = "1111111111111111111111111111111111111";
Level1[2] = "1 x1xxz1szzzzzh1xxxxxxx1";
Level1[3] = "1 zs1ssz1s1sssss1xssssss1";
Level1[4] = "1s x1s1zzz1s1111111xs1111s1";
Level1[5] = "1sx xx1s1 1z1sxxxxxxxxs1xxxs1";
Level1[6] = "1sss xss1s1 1s1ssssssssss1ssss1";
Level1[7] = "1sxsx sxss1z1 1s111111111111s1111";
Level1[8] = "1xsxsx xssxs1z1 1sxxxxxxxxxxxxs1x01";
Level1[9] = "111111z1z111111z1 1ssssssssssssss1s01";
Level1[10] = "1 1z1 1111111111111111z01";
Level1[11] = "1 1 1 01";
Level1[12] = "1 1 1 0000000000000000 01";
Level1[13] = "1 1 1";
Level1[14] = "1 1 111111111111111111111";
Level1[15] = "1 b b b b b 1 10x0x0x0x0x0x0x0x0x01";
Level1[16] = "1 0 0 0 0 0 0 1zzzzzzzzzzzzzzzzzzzzz1";
Level1[17] = "1z0z0z0z0z0z0z1111111111111111111zzz1";
Level1[18] = "1sxsxsxsxssxsxsszzzzzzzzzzzzzzzzzzzz1";
Level1[19] = "1xsxsxsxsxxsxsss0s0s0s0s0s0s0s0s0s0s1";
Level1[20] = "1111111111111111111111111111111111111";
//==========> 0-Stena; x-Valun; s-Apple; '_'-Nathing; H-home;"-"-Pole
Level2 = new Array ();
Level2[0] = "Level 2"
Level2[1] = "1111111111111111111111111111111111111";
Level2[2] = "1ss ssz zss ss1";
Level2[3] = "1ssx ssx0 0sxs xsx1";
Level2[4] = "1sxsx xssx0zzz0sssx xxss1";
Level2[5] = "1xssxs ssxss0zzs0sssxs sxsss1";
Level2[6] = "1sxssxs sxxsxs0zsz0ssxsxx ssxsxs1";
Level2[7] = "1ssxsssx xxsxssx0szz0sssxsss sxsxsxs1";
Level2[8] = "1sssssssssssssss0zzz0ssxsxxsssxxsxsx1";
Level2[9] = "10000000z00000000zzs00000000z00000001";
Level2[10] = "1 0zsz0 1";
Level2[11] = "1 0szz0 1";
Level2[12] = "1 G 0zzz0 1";
Level2[13] = "1 0zzs0 1";
Level2[14] = "1 s 0zsz0 s 1";
Level2[15] = "1 sxs 0szz0 sxs 1";
Level2[16] = "1 sxsxs 0zzz0 sxsxs 1";
Level2[17] = "1 sxsxsxs 00000 sxsxsxs 1";
Level2[18] = "1 sxsxsxsxs zsssz sxsxsxsxs 1";
Level2[19] = "1 sxsxsxsxsxs 0sss0 sxsxsxsxsxs 1";
Level2[20] = "1111111111111111111111111111111111111";
Level3 = new Array ();
Level3[0] = "Level 3";
Level3[1] = "1111111111111111111111111111111111111";
Level3[2] = "1xxxsxxzzzxxsss0 0ssssssssssssss1";
Level3[3] = "1Gsxxsx0szsxsxs0 bbb 0000000000000001";
Level3[4] = "1xssxxs0s0sxsxs0 zzz 0ssssssssssssss1";
Level3[5] = "1xxssxx0s0sxsxxz 0000000000000001";
Level3[6] = "1xxxssx0s0sxsss0 0ssssssssssssss1";
Level3[7] = "1xxxxss0s0sxxxs0 0000000000000001";
Level3[8] = "1xxxxxsss0sssss0 0ssssssssssssss1";
Level3[9] = "1000000000000000 0000000000000001";
Level3[10] = "1 1";
Level3[11] = "1 x x x x x x 1";
Level3[12] = "1 0000000000000000000 1";
Level3[13] = "1 wwwww1b0b0b0b1wwwww 1";
Level3[14] = "1 s 100000001 s 1";
Level3[15] = "1 sxs 1b0b0b0b1 sxs 1";
Level3[16] = "1 sxsxs 100000001 sxsxs 1";
Level3[17] = "1 sxsxsxs 1sssssss1 sxsxsxs 1";
Level3[18] = "1 sxsxsxsxs 1sssssss1 sxsxsxsxs 1";
Level3[19] = "1 sxsxsxsxsxs 1ssshsss1 sxsxsxsxsxs 1";
Level3[20] = "1111111111111111111111111111111111111";

Level4 = new Array ();
Level4[0] = "Level 4";
Level4[1] = "1111111111111111111111111111111111111";
Level4[2] = "1zzzzzzzzzzz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[3] = "1zbzbzbzbzbz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[4] = "1zzzzzzzzzzz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[5] = "1 0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[6] = "1000000000000zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[7] = "1zzzzzzzzzzz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[8] = "1zwzwzwzwzwz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[9] = "1zzwzwzwzwzz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[10] = "1zwzwzwzwzwz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[11] = "1zzzzzzzzzzz0zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[12] = "1000000000000zzzzzzzzzzzzzzzzzzzzzzz1";
Level4[13] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[14] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[15] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[16] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[17] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[18] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[19] = "1 zzzzzzzzzzzzzzzzzzzzzzzz1";
Level4[20] = "1111111111111111111111111111111111111";
Потом обрабатуеш ентот массив

setProperty(apple, _visible, "0");
setProperty(zemlya, _visible, "0");
setProperty(home, _visible, "0");
setProperty(stena, _visible, "0");
setProperty(valun, _visible, "0");
setProperty(human, _visible, "0");
setProperty(fly, _visible, "0");
setProperty(bigapple, _visible, "0");
setProperty(bomb, _visible, "0");
setProperty(betton, _visible, "0");
LavelName = eval("Level"+StartLevel)[0];
for (i = 1; i <= 20; i++){
for (j = 0; j <= 39; j++){
Lavel = i+100*j;
name = "i"+i+"j"+j;
if (eval("Level"+StartLevel)[i].charAt(j) eq "0"){
duplicateMovieClip(stena, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "s"){
duplicateMovieClip(apple, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "x"){
duplicateMovieClip(valun, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "z"){
duplicateMovieClip(zemlya, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "h"){
duplicateMovieClip(home, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "f"){
duplicateMovieClip(fly, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "w"){
duplicateMovieClip(bomb, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "b"){
duplicateMovieClip(bigapple, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "1"){
duplicateMovieClip(betton, name,Lavel);
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);
}
if (eval("Level"+StartLevel)[i].charAt(j) eq "G"){
duplicateMovieClip(human, name,Lavel);
human_x = 15*j;
human_y = 20+15*i;
human_name = name;
setProperty(name, _x, 15*j);
setProperty(name, _y, 20+15*i);
setProperty(name, _xscale, 75);
setProperty(name, _yscale, 75);

}
}
}
stop();

//Получяеш отображение уровня :)

Ну а потом описуеш события для кнопок и видоизменяеш массив в зависимости от событий

Вот так для начала :)

Fisher
20.12.2001, 15:00
Ну это ты земляк и загнул :D А энтак не проще? :p Скрипт сырой канэшна, но прынцып я думаю ясен :p

gOloVasTicK '~
21.12.2001, 00:21
Есть такая фиговина :) принцип правой руки называется :) Короче если есть поворот справа идешь туда. Не пашет только в том случае если лабиринт содержит в себе кольцо.

Big_J_
21.12.2001, 12:49
Fisher ни чего я не загибал :( я енту игруху уже почти дописал щя редактор уровней закончу ну шоб он сам делал текстовый фаил и все може и выложу где небуть на FLASHER.ru :D

Так что все гениальное должно быть просто :)

Fisher
21.12.2001, 17:58
Да сложно это все :) Ты исходник вник? Просто нарисовал во флэши лабиринт на сетке с шагом 15 и вперед!!! Нафига еще чтото описывать? :p

Big_J_
21.12.2001, 18:19
Да ты фишер какойто странный парень Ты в своем исходнике ни какими движениями не управляеш енто не игра енто анимация по пути получяется :(

А я игруху делал в каторой курсром пробелом и ALT управлять надо для ентого мне и нужен был массив чтоб событие в мувике перемещением символов в массиве отслеживать А сейчяс над вопросом застрял как после перетягивания объекта его к определенному месту после отпускания приклеить тыб лучше помог ато сидит прикалуется хотя сам и не въезжает в содержание. :(

Fisher
21.12.2001, 18:46
Ладно - 40 минут есть. Сча помогу. Если что в понедельник. Но ты тупишь. Ей бо! Это тебе не С++ это флэш. Я таких огромных скриптов отродясь не писал :p И надеюсь не прийдеться :) А твоего пэкмэня я Думаю строк в 50 уложить мона. :p

Fisher
21.12.2001, 19:09
Извени - всеголишь голая идея - скрипт нужно доработать, но зато за 15 минут :p Но уже сейчас безовсякого описания ты из лабиринта никуда не убежишь :)

philimon
24.12.2001, 13:05
всем спасибо (за участие) :)
посмотрю -почитаю
правда, у меня уже собственный алгоритм прорезался
недели через две покажу релиз игры

philimon
24.12.2001, 13:34
моя, видимо, ошибка в расплывчатой постановке задаче :(
нужно было создать алгоритм автоматического прохода лабиринта с возможностью выбора направления в узловых точках... т.е. юзер только кидает кубик, а просчет его ходов делается программно... по-этому все реализации а-ля pacman идут мимо кассы и конструктор новых уровней тоже не нужен...