forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Алгоритм игры Lines (http://forum.boolean.name/showthread.php?t=3896)

Alex_90 12.07.2007 23:21

Алгоритм игры Lines
 
Алгоритм игры Lines
Цитата:

Lines - игра, в которой надо выстроить в ряды не менее определенного количества шариков одного цвета, что бы они исчезли)
Hello, World!
Некоторые еще помнят те времена, когда компьютеры встречались в редких ведомствах. Это были 286, 386, 486 компы с MS-DOS. Печатали тогда в Лексиконе, считали в SuperCalk 4, а из игр у всех стояли PackMan'ы и Lines, причем Lines пользовался гораздо большей популярностью, чем PackMan. С появлением Windows 3.1 Lines сменили пасьянсы.:stop:
Были попытки (мне они известны) сделать Windows Lines, однако ни одна версия не вернула себе ту популярность, что была у Dos Lines.
Я решил попробывать сделать Lines для Windows средствами OpenGL и пока у меня дела идут отлично. С графикой проблем нет, однако алгоритма, по которому Lines работает у меня нет.
Так вот: может у кто знает принцип этого алгоритма, или у кого завалялись исходники того, досовского Lines. (Они были по-моему на pascal).:)

Magus 13.07.2007 01:54

Re: Алгоритм игры Lines
 
Цитата:

С графикой проблем нет
Скрины покажешь? ;)

Цитата:

может у кто знает принцип этого алгоритма, или у кого завалялись исходники того, досовского Lines.
Алгоритм в принципе несложный. ИМХО, тетрис написать сложнее.:)
Код:

Функция Нажатие_На_Кнопку_Мыши
{
  определяем, в какую клетку тыкнули мышкой;
  если(ни один шарик не выбран)
  {
      если(клетка не пустая)
              запоминаем, какой шарик выбрали;
  }
  иначе
  {
      если(клетка пустая)
      {
            перемещаем в нее шарик;
            проверяем, не выстроилась ли линия из 5 шариков;
            если(линия выстроилась)
                    убираем линию;
            иначе
            {
                  добавляем несколько шариков в пустые ячейки;
                  проверяем, не выстроилась ли линия из 5 шариков;
                  если(линия выстроилась)
                        убираем линию;
            }
      }
      иначе
            запоминаем координаты нового выбранного шарика;
  }
}

Писалось сходу после тяжелого рабочего дня, так что алгоритм наверняка далек от оптимального. Но вроде должно работать.
З.Ы.по идее, перед перемещением шарика надо бы еще проверять, есть ли путь от шарика к нужной клетке. Но это уже детали. Если надумаешь, то смотри
http://pmg.org.ru/ai/navigato.htm
http://pmg.org.ru/ai/stout.htm


З.З.Ы.:ты все-таки решил их доделать...Гуд лак. :)


UPD.:
есть у меня знакомая девушка, которая лайнс делала на С++. Если найду ее, попрошу сорсы.

Дарья 13.07.2007 17:32

Re: Алгоритм игры Lines
 
Вложений: 2
В свое время делала Эту игрушку на С++. Остались куски алгоритма. Точно знаю, что там нет мелочей типа итоговой таблицы победителей и т. д. Но сам алгоритм представлен. Надеюсь что мой материал тебе поможет. Есть просьба! как сделаешь свою игру, пришли пожалуйста мне. Заранее спасибо!

WaReZ_MEN 14.07.2007 06:06

Re: Алгоритм игры Lines
 
Незнаю почему мои пост стерли но если тебе нужны исходники у меня есть на Delphi

Serge 25.07.2007 11:41

Re: Алгоритм игры Lines
 
Цитата:

Сообщение от WaReZ_MEN
Незнаю почему мои пост стерли но если тебе нужны исходники у меня есть на Delphi

Мне нужны исходники на Delphi? выложи плиз или вышли на мыло [email protected] Буду очень благодарен.

WaReZ_MEN 26.07.2007 02:12

Re: Алгоритм игры Lines
 
Вот сдесь скачаи http://delphigfx.narod.ru/game.htm

Serge 26.07.2007 07:33

Re: Алгоритм игры Lines
 
Спасибо, как ни странно, но я тоже вспомнил вчера про этот сайт. В общем нашел там все, что нужно было. Еще раз спасибо.

WaReZ_MEN 26.07.2007 08:09

Re: Алгоритм игры Lines
 
Всегда пожалуисто :)

Alex_90 27.07.2007 16:56

Re: Алгоритм игры Lines
 
Цитата:

Вот сдесь скачаи http://delphigfx.narod.ru/game.htm
Sorry, но там ссылка дохлая (ошибка 404) !!!

Android 27.07.2007 22:21

Re: Алгоритм игры Lines
 
Ничего она не дохлая, только заходил проверял

Horror 27.07.2007 23:49

Re: Алгоритм игры Lines
 
у мну оно не работает
у мну страница открывается , но у мну оно не качается
мну растроился

Alex_90 28.07.2007 14:35

Re: Алгоритм игры Lines
 
Цитата:

у мну оно не работает
у мну страница открывается , но у мну оно не качается
мну растроился
Так вот: значит не у меня одного не качается! Сегодня опять проверил: не качается!

Serge 07.08.2007 14:20

Re: Алгоритм игры Lines
 
Зашел, работает, все дело в том что там есть такая инфа от 25.03.2002 г. И так, новый адрес httt://delphigfx.mastak.ru перепишите ссылки.
Старый, т.е. этот сервер, обновляться более не будет.

Но новый адрес не работает совсем. В общем помер он, потому и глючит. Очень жаль.

Alex_90 12.08.2007 00:08

Re: Алгоритм игры Lines
 
:SOS: ВСЕМ, ВСЕМ, ВСЕМ!
Привет всем.
Может, кто знает, почему ниже приведенный цикл, исспользуемый мной для поиска собранных линий и их удаления выполняется до бесконечности! Вроде бы я все проверил: явных ерроров нет. Дебаггер при проходе этого цикла выдает следующее:

Цитата:

First-chance exception in 3D Lines 2007.exe (GDI32.DLL): 0xC0000005: Access Violation.

А вот и сам цикл:

Код:

//Проверяем наличае собранных линий в колличестве 5 и более
int vsp;
//По горизонтали вправо
for (i1=1;i1<14;i1++)
{
for (int i2=1;i2<14;i2++)
{
if (g[i1][i2]==g[i1+1][i2]==g[i1+2][i2]==g[i1+3][i2]==g[i1+4][i2]&&g[i1][i2]!=0&&g[i1+1][i2]!=0&&g[i1+2][i2]!=0&&g[i1+3][i2]!=0&&g[i1+4][i2]!=0)//Найдена линия из 5 шаров
{
vsp=g[i1][i2];//Получаем в переменную vsp тип шариков
//Присваиваим этим клеткам значение "0", то есть удаляем шары
g[i1][i2]=g[i1+1][i2]=g[i1+2][i2]=g[i1+3][i2]=g[i1+4][i2]=0;
//А может в линии шаров больше, чем пять? Проверим и это!
for (int p=5;p<14;p++)
{
if (g[i1+p][i2]==vsp);
{
g[i1+p][i2]=0;//Удаляем и этот шар.
}
if (g[i1+p][i2]!=vsp);
{
break;
}
}
}
}
}

:)

impersonalis 12.08.2007 00:29

Re: Алгоритм игры Lines
 
Не поверишь - уменя он выполняется без провисов.
Возможно 3ависит от введённых данных.
Ты вообще уверен, что виснет именно этот цикл?
Если да , то первое, что бросается в галаза -
//Найдена линия из 5 шаров
товарищ - так не кодят =/ Раскручивай это нагромождение.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot