Программы на паскаль abc готовые игры

Игра в теннис на Pascal ABC

Игра в теннис на Pascal ABC

«Теннис». Написать программу, имитирующую игру в теннис. Игровое поле представляет собой прямоугольник, по которому движется теннисный мячик. С правой стороны располагается «ракетка» игрока, которую можно передвигать вверх или вниз. Игра продолжается до тех пор, пока игрок не пропустит мячик 5 раз. В качестве второго игрока может выступать компьютер или другой игрок.

Новый блог по адресу Блог об ИТ и программировании на русском. Если вы хотите, чтобы я обновил, какие-либо статьи, пожалуйста напишите мне на email.

Игра Змейка – текстовая реализация на языке Pascal

Дальше текст программы

Комментарии к этой программе, такие же, как и к предыдущей.

Конечно интереснее, если сделать графическое отображение, например через модуль graph, но текстовое исполнение, добавляет немного романтики времени MS-DOS.

Эта статья написана в Вторник, Январь 19th, 2010 at 18:54 в разделе Задачи программирования. Вы можете подписаться на обновления комментариев к статье — RSS 2.0. Вы можете оставить комментарий, или послать пинг со своего сайта.

12 комментария

хм, а я круче написал! с зашибенным интерфейсом!

Привет, давай свяжемся с тобой во Вконтакте?
https://m.vk.com/id445385155

kak zapustit i kakaimi klaviwami igrat’.

Free Pascal выдает ошибку на строке

пардон, не туда запостил, сорри )))))

Здравствуйте.
У меня возник вопрос: что означают e.x, e.y, snakebody[i].x, snakebody[i].y?

как играется это игра? вообще не играется, запускаю но ваша змейка не двигается

В самом конце программы в срочке” Delay(30000);” уменьши значение хотябы до 100, чем меньше сделаешь тем быстрее она будет двигаться. И ещё при запуске проверь что стоит английская раскладка, на русской не работает. Управление на (W,A,S,D).

Читайте также  Понятие аппаратно программной системы

Игра класс )) , но как управлять змейкой я все перепробовал!
Подскажите пожалуйста.

Попросил меня однажды один человек помочь ему с курсовой. Все делали что-то простенькое, а он вот решил выделиться, замахнулся на игру, даже начал, но потом он понял, что как-то не понимает некоторых вещей, поэтому обратился за помощью ко мне 🙂
Ну а я что… Помог ему, конечно же! Да и самому было интересно! А теперь расскажу о некоторых подробностях и «возможностях» игры, а также ниже можно будет ссылку на исходники найти 🙂

Если честно, до этого мало дел имел с паскалем, к тому же, с паскалем .net!
Открыв наброски, которые тот человек уже сделал, увидел модули GraphABC, ABCObjects, с которыми раньше не приходилось работать.
Но до меня уже была часть работы сделана, а именно создание окна нужного размера и размещение «сетки» квадратиков 4х4.
Это облегчило задачу, потому что я увидел, что много схожестей есть с обычными паскалевскими объектами или графическими примитивами, а тут ещё удобство было в том, что все эти объекты (квадратики, кружочки и другие штуки) сами отвечают за свою прорисовку, не нужно рисовать на canvas-е и т.д., тут можно просто указать новую позицию или ещё как-то изменить объект, а перерисуется он уже сам!
И тут началась разработка! Никогда не приходилось до этого делать игру 2048, но найдя на просторах интернетов браузерную реализацию данной игры, пришлось поиграть в неё, опробовать разные ситуации, чтобы наглядно ознакомиться с правилами. Оттуда же были стянуты цвета и записаны в несколько чудном формате, потому что оказалось, что данный паскаль не поддерживает запись цветов через $, как это сделано в том же Delphi, например )
Вот такой вышел код, который возвращал нужный цвет текста и фона, в зависимости от цифры.

Читайте также  Сборка пк за 120000 рублей

TSquareColor — это запись, хранящая в себе фоновый цвет и цвет текста. Функция createColor принимает на вход первым параметром цвет фона, а вторым — цвет текста и возвращает уже заполненную запись TSquareColor, которая потом уже используется для задания цвета определённой клеточки )

Вообще, код неплохо откомментирован. В некоторых местах даже избыточно, т.к. это курсовая работа, пришлось комментировать почти всё 🙂
А некоторые куски кода, которые можно было бы оптимизировать и вынести в отдельную функцию, лишь изменяя некоторые параметры, пришлось оставить так, как есть, задублированными… )
Поэтому всякие объяснения можно найти в коде!
Сразу скажу, что настройки размера поля, отступов клеточек друг от друга, другие отступы, настройки анимации и т.д. можно задавать тоже в коде, эти константы вынесены специально для этих целей )

Настало время показать, как это дело выглядит! А вот так:

Игра 2048. Окно программы в самом разгаре игры!

Ничего особенного. Всё как обычно )

А в заголовке отображается ещё и количество очков. Управление то же самое, как и в классической реализации игры. Поведение тоже )
При появлении и сложении клеточек есть анимация небольшая, которая порой работает кривовато… Тут уж был задействован таймер, а также изменение размеров этих блоков. Иногда просто почему-то размер не доходит до начального состояния, и поэтому некоторые клеточки так и остаются немного больше или меньше, но это происходит редко )

Также был написан небольшой класс для показа «диалоговых» окон, который содержит в себе простенькую реализацию некоего подобия окна подтверждения (которое содержит вопрос и кнопки ОК и Отмена). Суть в том, что можно динамически создавать эти диалоговые окошки, модально показывать их, реагируют они также на нажатия клавиши Esc (отмена) и Enter (ок).
Также можно показывать просто уведомление с кнопкой Ок!
Простенько, но большего и не нужно.. ) Даже это уже было лишним 🙂
Код класса этого находится в файле controlUtils.pas, который тоже находится в архиве 🙂
Выглядят окошки примерно вот так:

Читайте также  Расположить числа в порядке возрастания 10001 2

Игра 2048. Вопрос о начале новой игры (при нажатии на Esc)

Игра 2048. Конец игры. Лол!

Про модальные диалоги я, конечно, загнул немножко )
Вся модальность работает вот так:

Обрабатываются нажатия в главном окне программы, а там уже идёт проверка, если открыто какое-то диалоговое окно, то нужно обрабатывать нажатия несколько иначе, а если же нет никаких окон, то там уж управлять игрой нужно )
При нажатии мышкой на кнопку ОК или Enter на клавиатуре срабатывает уже определённое заданное событие, которое передаётся как callback (типа того) при вызове функции dialogs.showConfirm. Как-то так оно и работает… )

Прикольно, в общем. Остальное можно найти в коде и в комментариях, которых там, как уже было сказано выше, предостаточно.

Были некоторые идеи, типа сохранения состояния игры при закрытии и восстановление при открытии, но как-то не было в этом необходимости, да и интерес через некоторое время пропал, поэтому всё осталось на таком уровне, на котором есть сейчас. К тому же, для курсовой тому человеку всех этих окошек диалоговых не нужно, поэтому на каком-то этапе он просто оставил старую версию и стал дорабатывать её по-своему )

Скачать исходник и готовый ехе-шник, который, кстати, весит довольно мало из-за .Net, можно вот в этом замечательном архиве: http://shpirat.net/etc/2048_PascalABC.NET.zip

Сделано это всё было ещё осенью, но сейчас стало можно это опубликовать, может, ещё кому-то пригодится или же просто интересно будет 🙂

Ссылка на основную публикацию
Adblock
detector