Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Игра на паскале


Автор: Paran0ya 2.6.2006, 18:56
Вот собственно говоря моя курсовая работа на паскале (1 курс). Прошу оценить, покритиковать исходный код, поэтому выкладываю в исходниках.  smile 

Смысл игры:
Задачей игрока является передвинуть шарики красного цвета на место шариков зеленого цвета, а шарики зеленого цвета передвинуть на место шариков красного цвета. Передвигать шарики можно либо в соседнюю с ним пустую лунку, либо в пустую лунку, находящуюся непосредственно за ближайшим шаром. Зеленые шарики можно передвигать только вправо, а красные только влево. В любой момент игры пользователь может выйти в меню и начать игру заново, при этом будет увеличено число попыток на единицу. Игра заканчивается, когда задача была выполнена игроком.
 

Автор: profispb 10.6.2006, 09:35
Paran0ya, Ссылка битая. 

Автор: volvo877 10.6.2006, 10:19
profispb, лишь бы что-то написать? Нажми на ссылку, все прекрасно качается... 

Автор: svarogik 10.6.2006, 16:13
присоединяюсь, посмотрите мою игру, пробуйте нажать F1 F2, клавиша выбора пробел, как двигаться надеюсь разберетесь.
монстры шевелится должны, если не шевелятся, значит баг какойто, перезапустите. с помощью Esc.

http://panteom.narod.ru/LabChel.rar

Добавлено @ 16:15 
если не получилось, попробуйте так 

Автор: Zero 10.6.2006, 19:50
svarogik, приколькно сделано...
А кстати ты поиск минимального пути в подсказках по алгоритму рабина делал или т.п smile ??? (у меня такая курсовая была) 

Автор: svarogik 10.6.2006, 20:28
хе-хе рад что ктото оценил), а алгоритма я такого не знаю, у меня там волновой алгоритм, то есть от начала пускал волну, а потом от конца строил путь. А  у тебя монстры шевелились? Может дашь подсказку как сделать монстра который сам путь отыскивает до человечка? 

Автор: Zero 10.6.2006, 20:35
Цитата(svarogik @  10.6.2006,  21:28 Найти цитируемый пост)
у меня там волновой алгоритм

О-о-о... Да Алгоритм рабина это и есть модификация волнового алгоритма, только у тебя по всему ДРП волна идёт, и следовательно большой перебор ячеек делается а у рабина, зона поиска сужена.
Цитата(svarogik @  10.6.2006,  21:28 Найти цитируемый пост)
А  у тебя монстры шевелились?

А я имел ввиду что у меня была не игра, а поиск пути между заданными точками обходя препятствия, точнее сказать "Задача трассировки по алгоритму Рабина, со стратегией поиска в глубину"
Но делал я эту прогу на делфи.

Цитата(svarogik @  10.6.2006,  21:28 Найти цитируемый пост)
Может дашь подсказку как сделать монстра который сам путь отыскивает до человечка?

Ну это было бы не сложно, точно также как и между ключом и человеком. пересчёт пути делать после каждого движения монстров или человека. Типа человек это точка А а монстр Б 

Автор: svarogik 10.6.2006, 20:43
когда я сказал что у тебя монстры шевелились я имел ввиду в моей игре), просто на некоторых компах они почемуто стоят как вкопанные. А как зона поиска сужалась?, и еще , ты думаешь я так не пытался делать: человек пункт а , а монстр б, просто как потом заставить монстра идти в ту сторону мне кажется запоминать координаты пути както не так,  у меня напримерот этого тот монстр всегда застревал почемуто,

Добавлено @ 20:43 
а что такое ДРП? 

Автор: Zero 10.6.2006, 20:48
Цитата(svarogik @  10.6.2006,  21:43 Найти цитируемый пост)
А как зона поиска сужалась?

За счёт того что просматриваются не все ячейки ДРП (дискретного рабочего поля) а толко те которые находятся между источником и приёмником, а в случае припятсятвия просмотр происходит вокруг...

PS: да паскаль это вообще глючная вещь, он нужен только чтобы програмить научится, а дальше переходи на Делфи или С++, там всё тоже самое почти, только оформление проще делается. 

Автор: svarogik 10.6.2006, 20:51
ага, писать трехмерные игрушки да? я б лучше нормальные 2D научился но никак не могу, у тебя асика есть может ты сможешь рассказать 

Автор: Zero 10.6.2006, 20:55
Нее аську я удалил...

Цитата(svarogik @  10.6.2006,  21:51 Найти цитируемый пост)
ага, писать трехмерные игрушки да? я б лучше нормальные 2D научился но никак не могу

Да нет, я про 2D говорил, и впрочем не важно можно и 3D но сложно... В общем я имел ввиду что в делфи есть компоненты, в часности таймер, а на него всяких движений можно навешать, и получится что ни на каком компе не будет глючить, и одновременно наиболее правильно будет работать. 

Автор: svarogik 10.6.2006, 20:58
может асику все таки дашь., а то какоето странное общение, а что в делфе можно также простыми процедурами рисовать? ну типа cleardevice circle да? а таймер, если у тебя монстры все таки двигались, то ты мог понять что таймер все таки есть, двигались или нет?

Добавлено @ 20:59 
ой не прочитал что удалил сори 

Автор: Zero 10.6.2006, 21:06
Цитата(svarogik @  10.6.2006,  21:58 Найти цитируемый пост)
может асику все таки дашь., а то какоето странное общение

Да я же говорю что удалил её...
Цитата(svarogik @  10.6.2006,  21:58 Найти цитируемый пост)
а что в делфе можно также простыми процедурами рисовать?

Там намного больше что можно... smile Все программы сделаные на ней в 1000 раз круче паскалевских...
Я когда на Делфи перешёл, на Паскаль больше смотреть не могу... Точнее щас я в 1С работю, но курсовые и лаб. работы все на делфи делаю или на С++ (когда чё приспичит)
А если подключить OPENGL (точнее сказать, прописать это слово вверху в строке USES), то такими же простыми процедурами, можно работать с 3D объектами.
Цитата(svarogik @  10.6.2006,  21:58 Найти цитируемый пост)
а таймер, если у тебя монстры все таки двигались, то ты мог понять что таймер все таки есть

ты имееш ввиду типа sleep(), это ерунда. 

Автор: svarogik 10.6.2006, 21:12
какой sleep() ты чего?
timer: longint absolute $0040:$006C; {System timer}
меня этой фишке друг научил, по этому адресу переменная к которой прибавляется 1 каждые 18.5 секунд.
да делфи то у меня есть только я пока в консольном могу, а как элементарной графикой пользоваться незнаю, а как делать никто не говорит,для кого то это либо это элементарно, либо незнает как делать, а мне бы подробненько так, а в учебниках ниче похожего на рисование в паскале и нет, только какието обьекты кнопки, короче как в среде visual basic

Добавлено @ 21:16 
а 3d как то и в паскале можно, там чето типа когда углы преходят в углы, и еще надо учитывать перспективу 

Автор: Zero 10.6.2006, 21:26
Ну если тебе действительно хочется научится работать с графикой на делфи, то просто нужно пойти в магазин где продают литературу по делфи и выбрать какую нибудь, связанную с OpenGL например или ещё что нибудь.
Ещё можно в разных примерах покапатся, типа таких:

Добавлено @ 21:27 
Переименовать в Zip  и распаковать осталось 

Автор: svarogik 10.6.2006, 21:31
Ничерта не понял, зачем этот юнит, (юниты только сегодня писать научился)

Добавлено @ 21:31 
и что это за другие файлы в архиве? 

Автор: Zero 10.6.2006, 21:37
Да это пример одной моей лабы на делфи по компьютерной графике, те файлы которые в архиве закинь в папку и запусти *.dpr, там как раз есть круги (тыж про них спрашивал) т.е. молекулы которые бются о большую и должны отражатся, но это не много невсегда получается smile я просто её преподу сдал и переделывать влом было, но это помоему простой пример чтобы понять тебе как работать с графикой, и она уже выглядит лучше паскаля, и сделал я её за день... 

Автор: svarogik 10.6.2006, 21:39
эээ а в какую папку? это что все на делфе? 

Автор: Zero 10.6.2006, 21:44
Цитата(svarogik @  10.6.2006,  22:39 Найти цитируемый пост)
эээ а в какую папку?

Ну просто на диске C например создал папку, скопиравал в неё все файлы из архива, и потом запусти Project1.dpr при условии что Делфи у тебя установлена.
Цитата(svarogik @  10.6.2006,  22:39 Найти цитируемый пост)
это что все на делфе? 

Да это пример работы со стандартными кругами и т.п. smile  

Автор: svarogik 10.6.2006, 21:50
ща поставим, разберемся, комп недавно форматнул) 

Автор: profispb 10.6.2006, 21:58
Zero, Визуальные языки оболваниваю программеров, даже на паскале можно реализовать такой интерфейс и такую игру, которая даже не снилась на Delphi. Если можешь реализовать программу под DOS, то под Win можно перенести, а тот кто говорит что не может после Delphi смотреть на Паскаль, извени конечно д..к. На курсовой проект писал прогу правда на Си, но под дос. Прога типа информационной базы по кинотеатру, так реализовал оконный интерфейс, т.е. формы ввода, формы вывода, горизонтальное меню и все в графике. Единственное с чем соглашусь так, то что в паскале, си палитра цветов мала(поскольку дос), и то это дело поправимое через Ассемблер. 

Автор: svarogik 10.6.2006, 22:07
ага ну конечно, щас взял все и через ассемблер написал... ну значит запустил я твою прогу там почередине форма и на ней кнопка старт, че дальше? f9 нажал все зависло

Добавлено @ 22:07 
у меня делфа7

Добавлено @ 22:09 
а все поперло, тока мне это другое напоминает)) такое на анатомии проходят

Добавлено @ 22:11 
а ты можеш написать прогу которая рисует кружочек, без всяких понтов, просто кружочек 
 

Автор: Zero 10.6.2006, 22:12
Цитата(profispb @  10.6.2006,  22:58 Найти цитируемый пост)
Визуальные языки оболваниваю программеров, даже на паскале можно реализовать такой интерфейс и такую игру, которая даже не снилась на Delphi.

profispb, на любом языке можно написать что угодно, но у каждого есть своя цель...
На паскале легко на учится програмировать но не более того, не одной серьёзной программы на нём не напишешь. То что в визуальном программировании (пусть даже небольшоё интерфес из небольшого кол-ва кнопок и разных мелких объектов) можно сделать за несколько часов, то на Паскале ты будеш делать несколько месяцев.
Цитата(profispb @  10.6.2006,  22:58 Найти цитируемый пост)
Если можешь реализовать программу под DOS, то под Win можно перенести,

не то чтобы перенести, а переделать (синтаксис всётаки у всех языков различный) 
А если рассуждать, так как ты говоришь про свой кинотеатор, где оконный интерфесй ты наверняка делал несколько недель, то на делфи его можно за 2 часа реализовать.
Цитата(profispb @  10.6.2006,  22:58 Найти цитируемый пост)
Единственное с чем соглашусь так, то что в паскале, си палитра цветов мала(поскольку дос), и то это дело поправимое через Ассемблер.

Ассемблер, используют только в тех случаях где есть не стандартная ситуация, а цвета на нём делать это не очень разумно.

Добавлено @ 22:15 
Цитата(svarogik @  10.6.2006,  23:07 Найти цитируемый пост)
а ты можеш написать прогу которая рисует кружочек, без всяких понтов, просто кружочек

А какие там понты, пересчитываются координаты и выводятся просто кружочки. smile  

Автор: svarogik 10.6.2006, 22:18
все почтичто так отвечают, а ты попробуй пожалуйста, просто кружочек, меня надо столкнуть смертвой точки, и возможно это поможет 

Автор: Zero 10.6.2006, 22:34
Типа такого пойдёт??? 

Автор: svarogik 10.6.2006, 22:47
да ты мужиик!))) эта прога то что надо 

Автор: Zero 10.6.2006, 22:54
Если какие-нибудь вопросы будут появлятся по Делфи, то http://forum.vingrad.ru/index.php?showforum=84 на большинство тебе ответят. 

Автор: svarogik 10.6.2006, 22:57
xb:=screen.Width div 2 - rb;
  yb:=screen.Height div 2 - rb;

   screen.Canvas.Pen.Color:=clRed;  

  screen.Canvas.Ellipse(round(xb-10),round(yb-10),round(xb+10),round(yb+10));

а зачем так почему просто как в паскале нельзя координаты задать, почему через какуюто левую переменную xb и yb, почему не рисуется screen.Canvas.Ellipse(10,10,10,10);
ведь в принципе первые два координаты а другие оси эллипса, как в fillellipse(x,y,rx,ry), или не так?

Добавлено @ 22:59 
извини если чересчур надоедаю , просто интересно 

Автор: Zero 10.6.2006, 23:03
Цитата(svarogik @  10.6.2006,  23:57 Найти цитируемый пост)
а зачем так почему просто как в паскале нельзя координаты задать, почему через какуюто левую переменную xb и yb

Да это я старую прогу переделал как те надо... smile 
А там то кружки (молекулы перемещались), а эти смые левые переменные про которые ты говоришь, они менялись и таким образом получалось что урги в разных местах.
Цитата(svarogik @  10.6.2006,  23:57 Найти цитируемый пост)
почему не рисуется screen.Canvas.Ellipse(10,10,10,10);

А так нельзя, получится точка а не элипс: первые два параметра это (x1,y1) и вторые два (x2,y2)
Ну можно и так:
Код

screen.Canvas.Ellipse(10,10,100,100);
 

Автор: svarogik 10.6.2006, 23:07
да я понял что переделал, я в той старой начал разбираться, а там типа эллипс вписанный в прямоугольник х1у1х2у2? как то неприкольно 

Автор: Zero 10.6.2006, 23:12
Да помоему два варианта рисования элепса есть, но этот вроде самый простой. А так в канвасе там помимо элипсов куча других фигур. А как научишся работать с объектами, можешь переходить на OpenGL, там тоже всё легко и можно будет работать с 3-мерной графикой. 

Автор: svarogik 10.6.2006, 23:13
а я хочу его передвигающимся сделать, какой аналог readkey

Добавлено @ 23:14 
да еще рановато, я 2мерной нормально еще не умею, хочу игру написать стратегию, сражение 4х стихий панимаешь...

Добавлено @ 23:17 
такой мощный движок на паскале сделал, с миникартой, с локациями с разным ландшафтом, потом подумал и забил, неохота с 16 цветной палитрой делать 

Автор: profispb 11.6.2006, 11:14
Zero
Цитата

Цитата(profispb @  10.6.2006,  22:58 )    
Если можешь реализовать программу под DOS, то под Win можно перенести,    

не то чтобы перенести, а переделать (синтаксис всётаки у всех языков различный) 
А если рассуждать, так как ты говоришь про свой кинотеатор, где оконный интерфесй ты наверняка делал несколько недель, то на делфи его можно за 2 часа реализовать.

На реализацию интерфейса ушло четыре часа. Отладка конечно больше. 

Автор: Zero 12.6.2006, 12:35
Цитата(svarogik @  11.6.2006,  00:13 Найти цитируемый пост)
а я хочу его передвигающимся сделать, какой аналог readkey

У каждого объекта, есть события и свойства, и в данном случае в процедуре события на нажатие клавиши,  можно написать нужные действия.
Для какждого объекта эти события разные, возможно для Паинта такого стандартного события и нет, там нужно делать либо самому либо искать др. способ, я сейчас не помню... такой вопрос если ещё актуален, можно задать в разделе делфи.
Цитата(svarogik @  11.6.2006,  00:13 Найти цитируемый пост)
Добавлено @ 00:14 
да еще рановато, я 2мерной нормально еще не умею, хочу игру написать стратегию, сражение 4х стихий панимаешь...

Добавлено @ 00:17 
такой мощный движок на паскале сделал, с миникартой, с локациями с разным ландшафтом, потом подумал и забил, неохота с 16 цветной палитрой делать

Мне кажется тебе OpenGL или DirectX в делфи надо разбирать, там уж точно не забьёш ни на чё. smile 
Цитата(profispb @  11.6.2006,  12:14 Найти цитируемый пост)
На реализацию интерфейса ушло четыре часа.

Значит там такой интерфейс который в делфи можно сделать за 5 минут. smile 

PS: я както давно (на К/Р) ползунок делал на паскале в текстовом редакторе, целую неделю со всякой ерундой возился, что в делфи у объекта Memo, всего лишь свойство ScrollBars поставить за 2 сек. можно и всё. smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)