Как сделать пакмана на c

Добавил пользователь Alex
Обновлено: 05.10.2024

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

Установка

Сохранение/восстановление

Чистка

Удаление

Работа с кэшем

Обвновление

16 комментариев

вот кстати вопросик у меня назрел, pacman умеет только скачивать пакеты, без установки? Вот хочу я например скачать пакет из репозитория не устанавливая его, просто что б был на потом. Или пакеты для обновления скачать, но не устанавливать. Хелп читал, но что-то не нашел. С apt-get это просто, добавляется параметр -d и он просто скачивает нужный пакет

Загрузка пакета без установки:
pacman -Sw package_name
Установка загруженного или локалдьного пакета:
pacman -U /package_path/package_name.pkg.tar.xz

Обновление системы если необходимо оставить без изменения какой либо пакет:
IgnorePkg=package_name

Обновление системы если необходимо оставить без изменения какую либо группу пакетов:
IgnoreGroup=package_group
Пример команды игнорирующей обновление группы пакетов gnome и kde:
IgnoreGroup=gnome
IgnoreGroup=kde
sudo IgnoreGroup=perl-gtk2-unique

это к сожалению не совсем то
например apt-get upgrade -d делает всё тоже самое, т.е. обычный процесс обновления это построения списка какетов для обновления, их скачивание, но эти пакеты просто не устанавливаются

Пропустить пакет
Пропустить группу пакетов
Не обновлять пакет
Не менять файлы в директории
При чем тут apt-get не пойму.

Просто человек ищет схожий функционал с apt-get upgrade -d
И судя по всему все, что может pacman предложить это указывать конкретную группу пакетов, он принуждает пользователя знать, что обновляется, а не кликать я совсем согласен и мне все равно какие там пакеты(как apt-get)


сейчас пишу игру Pacman. дали такое задание в колледже
написал безумный код на монетки, которые он поедает, вышло на 1500 строк. использовал оператор If и For. и монетки в 3-х верхних рядах не жрет.
кто нибудь может помочь укоротить все это.
знаю, что нужно поле, на котором это все находится, запихнуть в массив, в адресах которого будут эти монетки и через.
вот примерно как выглядит массив
TShape*mas[500][600];
for(int i=0;i Последний раз редактировалось Олегус; 18.05.2009 в 00:38 .

вот оно. я буду очень благодарен тебе.

На Дельфи есть исходники почти готового пакмана, не так давно тема была, поищи поиском. Перепишешь на С++.

The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Pacman за 5 минут :) Pacman за 5 минут, Pac-man, Dendy, Ретро-игры, Construct 2, Длиннопост

Сегодня я расскажу о том, как создать игру на телефон за пять минут!!

Одно время мне попадались на глаза видеоуроки про создание игр за сравнительно короткое время. Но как правило это были какие-то примеры применения базовых основ по созданию игр в тех или иных редакторах. По сути своей которые позволяли, овладев необходимыми навыками быренько набрасать пару спрайтов и заставить их как-то взаимодействовать. Зачастую эти видосы открывали целый курс обучения геймдизайна. Ну а иногда просто для одноразового ознакомительного просмотра.

Но при ближайшем рассмотрении разработка и портирование игры на смартфон скрывала за собой кучу сопутствующих проблем, разбираться с решением которых в то время не было времени. И видимо, не особо-то и желания.

Однако же мной была предпринята попытка сделать что-то простенькое, быстренькое, и чтобы сразу можно было в это поиграть без регистрации и смс.

За прототип я взял (к сожалению или счастью без спроса) игрушку пакмен на денди. Со всем уважением к издателям и разработчикам.

За движок - бесплатную версию констракта второго.

Музончик взял первый попавшийся, тоже к сожалению без спроса, но надеюсь проблем не возникнет. Если что - всегда можно удалить, или заменить. Или просто написать огромную благодарность музыкантам за создание такого чудного трека.

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

Почему я выбрал именно констракт второй? Я уже довольно приличное время с ним тесно взаимодействую. У него есть достаточный потенциал для создания различного рода событий. Неплохой арсенал финального экспорта. Правда и имеются кое-какие ограничения. максимальное количество слоев - 4. Максимальное количество ивентов - 100

Так же для теста игры я воспользовался своим ресурсом. Хотя можно было быстренько поднять какой-нибудь xamp на компе. И тестить в домашней сети.

Начал я с того, что разметил будущий проект под пропорции оригинальной игры 1:2. Можно было конечно развернуться полномасштабно в фул эйч ди. Но любовь к пикселям не позволила допустить подобное пренебрежение.

На полученный 512х448 квадрат )) я разместил бэкграунд, в виде спрайта игрового поля со всеми стенками. Дополнительно придав им жёсткости спрайтом с поведением солид. Это означало что через области с этими спрайтами нельзя пройти. Можно только упереться.

Следующим шагом надо было заставить пакмена двигаться и поворачивать. Для более чёткого координированного движения (он же не поворачивает, он грубо вверх вниз влево вправо двигается) и чтобы не цеплялся за стенки, я в каждый перекрёсток поставил по спрайту, координируещему направление. в точке перечесечения координат ГГ и вейпоинта, выравнивались координаты спрайтов и применялся инпут.

Следующим шагом было создание врагов и оформление им АИ. Созданы они по образу и подобию пакмена, с той лишь разницей, что вместо импута в точках пересечения с вейпоинтами рандомно выбиралось направление. Что напроч лишило их каких-либо признаков интеллекта, зато добавило непредсказуемости в игре.

по событию столкновения одного из них с главным героем поставил замедление происходящего с анимацией самопожирания пакмена.

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

Для придания красоты, я немного подправил анимацию хавчика и добавил эффекты исчезновения стенкам.

Так же добавил два счётчика, текущий скор и топ скор. Пририсовал стрелочки для управления на тачскрине.

Кнопочку для "поделиться с друзьями в вк" - ну а куда без этого. Ну и добавил вишенку.

Далее я экспортировал в html5 совместимый формат. И залил на хостинг. При разработке констракт использует локалхост. но этого было не достаточно для телефона.

После загрузки веб версии, я перешёл по ссылке с телефона, игрушка загрузилась и вроде бы была играбельна. Далее маленький трюк, порадовавший меня в своей простоте и юзабельности. Просто раскрыл менюшку управления страницей и отправил ярлык на рабочий стол. На главный экран. После чего игрушка спокойно открылась в формате полноэкранного приложения. Всё. Конец.

пс. небольшой баг. музончик весит чуть больше всего остального. Поэтому ему требуется некоторое время на подкачку.

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

Кому нужен исходник - в лс.

п.п.с. демонстрирующую геймплей гифку и летсплей прикреплять не стал. игровой процесс понятен и прост. но желающим потрогать, как говорится, своими руками ссыль:

В поселке, где я жила, в центре микрорайона был Клуб. Здесь проходили крупные мероприятия, дискотеки, на которые мы бегали подростками.

Этот Клуб, или как мы его еще называли ДК, был центром культурной жизни нашего небольшого поселка. Здесь проходили всевозможные творческие занятия для детей – танцевальная студия, изостудия, коклюшки (кто еще помнит, что это такое), лепка из глины (у родителей до сих пор стоят некоторые мои шедевры), картины из соломки, цветы из ткани.

Все это приходилось посещать под давлением родителей. Увы, но нигде я надолго не задержалась.

А еще в этом же клубе было кафе, где продавали самое вкусное мороженое в металлических креманках с соусом (не знаю, почему не сироп).

Найти фотографию мороженного в металлической креманке, оказалось сложно. Ну не было у нас шариков из мороженного.

Найти фотографию мороженного в металлической креманке, оказалось сложно. Ну не было у нас шариков из мороженного.

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

Сейчас ребенка не удивишь компьютерной игрой, поэтому мы сделали игру из бумаги. Делается она очень просто.

Итак, как же сделать игру.

На двух листах формата А4, склеенных с обратной стороны скотчем , надо нарисовать произвольный лабиринт. Я сначала расчертила простым карандашом сетку, наметила ходы, а потом прошлась маркером.

поэтому я создаю игру pacman на Java, чтобы научить себя программированию игр.

У меня есть основное окно игры со спрайтом pacman и нарисованными призраками, pacman перемещается с помощью клавиш со стрелками,не выходит за пределы стен окна и т. д. Сейчас я пытаюсь построить лабиринт, как на этой картинке:

Pacman maze

не давая мне прямого / полного решения этого, может ли кто-нибудь помочь мне в том, как это можно построить? Я говорю только о границы и трубы (метки "T") здесь, через которые вы не можете пройти, и вам нужно обойти. Не те точки, которые ест Пакман.

вот мои вопросы:

1) каков наиболее эффективный алгоритм/метод создания этого лабиринта? Будет ли он должен быть нарисован каждый раз, когда вызывается метод paint() или есть способ нарисовать его только в начале игры и никогда больше?

2) Как это будет фактически нарисовано на экране? Я предполагаю fillRect() будет использоваться?

3) любые намеки на обнаружение столкновений (поэтому pacman/ghosts не могут пройти через стены) были бы полезны.

4) любые подсказки о том, как будет рассчитываться пустое пространство между трубами, чтобы точки могли быть заполнены между ними, также будут очень полезны.

Я бы так не поступил.

Я бы нарисовал графическую карту, а затем создал 2D-массив данных, который представляет карту. Карта данных будет отвечать за определение столкновений, поедание точек, где конфеты и где призраки. Как только вся логика для всего обрабатывается, просто используйте 2D-массив, чтобы отобразить все в соответствующих пиксельных координатах на графической карте.

например пользователь нажимает левую клавишу. Сначала вы определяете, что Пакман в элементе 3, 3. Элемент 3, 2 содержит информацию, обозначающую стену, поэтому вы можете реализовать код, чтобы заставить его игнорировать команду.

каждый элемент будет представлять о том, где точка может быть. Например:

нет, глядя на доску, я бы сказал, что массив будет выглядеть примерно так.

и так далее. Возможно, вы захотите выбрать более гибкую структуру данных, чем просто символы, поскольку некоторые области должны содержать куча разной информации. Т. е. даже если призрачная область нереста пуста, pacman не допускается там. Движение призраков и pacman отличается для боковых побегов, точка Candy spawn-пустое место, но если вы хотите оставаться гибким, вы захотите указать, где это находится на основе карты.

еще одна вещь, которую вы захотите запомнить, это то, что pacman и призраки часто находятся между точками, поэтому содержат информацию, которая представляет собой процент пространства они занимают от 1,2 до 1,3 важно для обнаружения столкновений, а также определения, когда вы хотите, чтобы удалить точки, бонусы и конфеты с доски.

вот подсказка для вас:

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

вы можете нарисовать карту в BufferedImage и просто нарисовать ее на каждой paint(). Таким образом, вы получите вполне разумную производительность.

Если вы довольны твердыми стенами, вы можете нарисовать каждый квадратный стеновой блок с помощью fillRect. Если вы хотите получить такой же вид, как на картинке, вам нужно понять, как правильно рисовать линии и использовать дуги для углов.

карта игры Pacman состоит из квадратов и Пакман и призраки всегда перемещаются с одного квадрата на соседний в анимированном шаге (т. е. вы нажимаете вправо, Пакман перемещает один квадрат вправо). Это означает, что обнаружение столкновений легко: просто не допускайте перемещения в квадраты, которые не пусты.

Я не понимаю, что вы пытаетесь задать здесь.

1) просто дать мой совет на перерисовку. Что-то, что вы можете сделать, если найдете перерисовку всего изображения медленно, это определить только элементы, которые изменились на экране, и перерисовать их. Подход для этого будет следующим: определите спрайты, которые переместились. Определите (приблизительный) прямоугольник вокруг этих спрайтов. Перерисуйте только эти прямоугольники. Таким образом, вы только освежаете части экрана, а не весь экран. Это должно привести к увеличению производительность по перерисовке всего экрана.

Читайте также: