Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Object Pascal: кроссплатформенные технологии > Игра на паскале |
Автор: Paran0ya 2.6.2006, 18:56 |
Вот собственно говоря моя курсовая работа на паскале (1 курс). Прошу оценить, покритиковать исходный код, поэтому выкладываю в исходниках. ![]() Смысл игры: Задачей игрока является передвинуть шарики красного цвета на место шариков зеленого цвета, а шарики зеленого цвета передвинуть на место шариков красного цвета. Передвигать шарики можно либо в соседнюю с ним пустую лунку, либо в пустую лунку, находящуюся непосредственно за ближайшим шаром. Зеленые шарики можно передвигать только вправо, а красные только влево. В любой момент игры пользователь может выйти в меню и начать игру заново, при этом будет увеличено число попыток на единицу. Игра заканчивается, когда задача была выполнена игроком. |
Автор: 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, приколькно сделано... А кстати ты поиск минимального пути в подсказках по алгоритму рабина делал или т.п ![]() |
Автор: svarogik 10.6.2006, 20:28 |
хе-хе рад что ктото оценил), а алгоритма я такого не знаю, у меня там волновой алгоритм, то есть от начала пускал волну, а потом от конца строил путь. А у тебя монстры шевелились? Может дашь подсказку как сделать монстра который сам путь отыскивает до человечка? |
Автор: svarogik 10.6.2006, 20:43 |
когда я сказал что у тебя монстры шевелились я имел ввиду в моей игре), просто на некоторых компах они почемуто стоят как вкопанные. А как зона поиска сужалась?, и еще , ты думаешь я так не пытался делать: человек пункт а , а монстр б, просто как потом заставить монстра идти в ту сторону мне кажется запоминать координаты пути както не так, у меня напримерот этого тот монстр всегда застревал почемуто, Добавлено @ 20:43 а что такое ДРП? |
Автор: Zero 10.6.2006, 20:48 |
За счёт того что просматриваются не все ячейки ДРП (дискретного рабочего поля) а толко те которые находятся между источником и приёмником, а в случае припятсятвия просмотр происходит вокруг... PS: да паскаль это вообще глючная вещь, он нужен только чтобы програмить научится, а дальше переходи на Делфи или С++, там всё тоже самое почти, только оформление проще делается. |
Автор: svarogik 10.6.2006, 20:51 |
ага, писать трехмерные игрушки да? я б лучше нормальные 2D научился но никак не могу, у тебя асика есть может ты сможешь рассказать |
Автор: Zero 10.6.2006, 20:55 | ||
Нее аську я удалил...
Да нет, я про 2D говорил, и впрочем не важно можно и 3D но сложно... В общем я имел ввиду что в делфи есть компоненты, в часности таймер, а на него всяких движений можно навешать, и получится что ни на каком компе не будет глючить, и одновременно наиболее правильно будет работать. |
Автор: svarogik 10.6.2006, 20:58 |
может асику все таки дашь., а то какоето странное общение, а что в делфе можно также простыми процедурами рисовать? ну типа cleardevice circle да? а таймер, если у тебя монстры все таки двигались, то ты мог понять что таймер все таки есть, двигались или нет? Добавлено @ 20:59 ой не прочитал что удалил сори |
Автор: Zero 10.6.2006, 21:06 | ||
Да я же говорю что удалил её... Там намного больше что можно... ![]() Я когда на Делфи перешёл, на Паскаль больше смотреть не могу... Точнее щас я в 1С работю, но курсовые и лаб. работы все на делфи делаю или на С++ (когда чё приспичит) А если подключить OPENGL (точнее сказать, прописать это слово вверху в строке USES), то такими же простыми процедурами, можно работать с 3D объектами.
ты имееш ввиду типа 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, там как раз есть круги (тыж про них спрашивал) т.е. молекулы которые бются о большую и должны отражатся, но это не много невсегда получается ![]() |
Автор: svarogik 10.6.2006, 21:39 |
эээ а в какую папку? это что все на делфе? |
Автор: Zero 10.6.2006, 21:44 |
Ну просто на диске C например создал папку, скопиравал в неё все файлы из архива, и потом запусти Project1.dpr при условии что Делфи у тебя установлена. Да это пример работы со стандартными кругами и т.п. ![]() |
Автор: 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, на любом языке можно написать что угодно, но у каждого есть своя цель... На паскале легко на учится програмировать но не более того, не одной серьёзной программы на нём не напишешь. То что в визуальном программировании (пусть даже небольшоё интерфес из небольшого кол-ва кнопок и разных мелких объектов) можно сделать за несколько часов, то на Паскале ты будеш делать несколько месяцев.
не то чтобы перенести, а переделать (синтаксис всётаки у всех языков различный) А если рассуждать, так как ты говоришь про свой кинотеатор, где оконный интерфесй ты наверняка делал несколько недель, то на делфи его можно за 2 часа реализовать.
Ассемблер, используют только в тех случаях где есть не стандартная ситуация, а цвета на нём делать это не очень разумно. Добавлено @ 22:15
А какие там понты, пересчитываются координаты и выводятся просто кружочки. ![]() |
Автор: 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 | ||||
Да это я старую прогу переделал как те надо... ![]() А там то кружки (молекулы перемещались), а эти смые левые переменные про которые ты говоришь, они менялись и таким образом получалось что урги в разных местах. А так нельзя, получится точка а не элипс: первые два параметра это (x1,y1) и вторые два (x2,y2) Ну можно и так:
|
Автор: 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,
На реализацию интерфейса ушло четыре часа. Отладка конечно больше. |
Автор: Zero 12.6.2006, 12:35 | ||
У каждого объекта, есть события и свойства, и в данном случае в процедуре события на нажатие клавиши, можно написать нужные действия. Для какждого объекта эти события разные, возможно для Паинта такого стандартного события и нет, там нужно делать либо самому либо искать др. способ, я сейчас не помню... такой вопрос если ещё актуален, можно задать в разделе делфи.
Мне кажется тебе OpenGL или DirectX в делфи надо разбирать, там уж точно не забьёш ни на чё. ![]() Значит там такой интерфейс который в делфи можно сделать за 5 минут. ![]() PS: я както давно (на К/Р) ползунок делал на паскале в текстовом редакторе, целую неделю со всякой ерундой возился, что в делфи у объекта Memo, всего лишь свойство ScrollBars поставить за 2 сек. можно и всё. ![]() |