Давно как-то начал писать свой тетрис, но потом бросил и начал переписывать совсем недавно... Название: Te-tra x2 (название ничего не значит, что первое в голову пришло, за исключением x2); Жанр: головоломка; Пространство: 2D; Похожие игры: Тетрис; Язык программирования: Delphi; Платформа: Windows; Лицензия: бесплатно; Описание: "Клон" Тетриса. Особенность - можно будет играть вдвоём (x2 в названии как бы намекает) и против компьютера. Естественно, выигрывает последний выживший. У меня есть несколько разных идей на тему мультиплеера, но пока что сделал только основной ("классический") режим, и то не до конца (ещё несколько фишек хотел прикрутить), впрочем, играть уже можно. Можно считать готовым: классический режим, боковую панель с информацией, ведение счёта и увеличение скорости (всё для одного игрока, но всё это в классе, так что второй игрок - копия первого, только с другим управлением), меню паузы, главное меню, возможность делать скриншоты (с сохранением в JPG для компактности), установка сложности (пока 3 уровня, на большее кнопок не хватило, потом расширю), сохранение и загрузка игры, 7 основных и 3 дополнительных фигуры, особый тип фигур - осыпающиеся (песочные?), блокировка запуска лишних копий игры. В ближайших планах: добавить ещё несколько фигур с особыми функциями, причесать и оптимизировать код, модернизировать систему меню (сейчас кнопки только в столбик, я же хочу расширить их до двух-трёх столбиков), сделать меню настроек, расширить число настраиваемых параметров, улучшить палитру, написать справку (внутри игры, а не отдельно), что-нибудь типа обучения (основы Тетриса для чайников за 10 минут, ага), таблицу рекордов, ввод имени игрока, и, пожалуй, всё. Потом - режим для двух игроков, и игры с компьютером, онлайн таблицу рекордов и чего-нибудь ещё такого по-круче, типа онлайн игры. На счёт звуков и музыки я думал, но пока не знаю; пока что не до звуков, их всегда можно приделать. Думаю вот, как лучше назвать скорости - они у меня все (а их десять) поименованы, но как-то фигово. Отличия режимов сложности: Лёгкий - только стандартные фигуры минус две фигу[i]ры (в форме буквы s), вероятность получения песочных фигур - 50%, уровень повышается через каждые 500 очков. Нормальный - все стандартные фигуры, вероятность песочных фигур - где-то 20%, уровень через каждые 250 очков. Сложный - к стандартным прибавляются 3 дополнительных, куб удаляется (ещё хотел палку удалить, но это будет слишком жестоко) из-за своей простоты, песочные фигуры - 10%, уровень через 100 очков. Почему различия в повышении уровней? Дело в том, что скорость увеличивается в зависимости от уровней, и чем быстрее набираешь скорость - тем меньше заработаешь очков до провала. Так что в простом режиме мне, например, удалось дойти до 20000 (это с учётом осыпающихся фигур и сохранения игры), в нормальном - до 10000, в сложном - заваливаюсь ещё до 5000, а то и до 3000. Формулу подсчёта очков несколько раз изменял, но вроде бы сейчас она нормально работает - не слишком быстро повышается и не слишком быстро уменьшается. Уменьшается только от нажатий кнопок и количества фигур; думал прикрутить ещё время игры (в минус счёту), но это будет, наверное, вообще жестоко. Лучше сделать время отдельным параметром.
Управление: ([i]читать обязательно, пока нет справки внутри игры)
Движение фигуры - влево/вправо кнопками движения курсора;
Сбросить фигуру - кнопка вниз (внимание, срабатывает после отпускания клавиши);
Развернуть фигуру - кнопка вверх (срабатывает сразу, но я думаю - делать ли задержку?);
Изменить палитру - delete (пока только 3 варианта);
Отключить размытие фигур в движении - insert;
Пауза - escape (эта же клавиша возвращает в игру, а ещё - на предыдущую страницу в главном меню);
Скриншот - F12 (сохраняется под порядковым номером в папке screenshots в формате jpg, в среднем 150-300 КБ штука);
Изменить режим обработки (пошагово/сразу) песочных фигур (сейчас не совсем правильно работает) - enter;
Увеличить скорость (только чтобы оценить скорости игры, потом, конечно, уберу) - пробел;
Сохранить игру (папка saves) - клавиши 1, 2 и 3 (соответствует номеру слота) во время игры (загрузка через меню, удаление там же).
Скриншоты: (тут у меня немного перемешаны версии, но совсем старых нет, да и визуальных отличий между версиями мало) Из-за того, что скриншоты на rghost заливал, половина пропала - потом перезалью...
Эта жёлтая фигня на фоне изображает деревянные доски. Сделал жёлтый квадрат 8x8, набросал цветных пикселей... готово! Смазывание фигур на скорости получилось не так, как хотелось... Впрочем, до большой скорости сложно дойти, и эта ошибка почти незаметна. ...А вот недавно исправил ошибку с размытием в верхнем крае стакана, теперь осталось исправить прозрачность, а то получается слишком "жирное" смазывание. Вся графика моя. Хотя тут и графики-то почти нет. Кстати, основные картинки раскрашиваются и собираются из фрагментов программно. Да, тут нужно будет много оптимизировать, но пока что вроде как загружается быстро, памяти и ресурсов процессора ест совсем чуть-чуть, даже удивительно. Фраза в главном меню (изначально была в заголовке окна, но я убрал заголовок, теперь окно совсем без рамки; а убрал из-за неправильного расчёта размеров окна, типа при разных установках Windows размер заголовка меняется - это неприятно, лучше уж убрать) случайная, всего я их там 60 написал, как-то за один раз получилось, потом подредактировал. Не знаю уж, фигня или нет, но убирать уже как-то жалко. Игра ставится на паузу и сворачивается (из-за отсутствия рамки пришлось так сделать) при потере фокуса. Т.е. достаточно кликнуть по рабочему столу или другому окну. Ещё думаю сделать возможность убрать игру с экрана совсем (и потом вернуть, конечно), типа если кто-то на работе играет, нажал условную кнопку - игра исчезла, начальник не заметил. Просто в некоторых играх такую штуку видел... Сообщение об ошибке при попытке загрузки двух игр выводится "от имени" рабочего стола, так что можно случайно потерять его, аккуратнее. Курсор периодически скрывается (во время игры, например) в области окна игры, но при нормальной работе игры всё должно быть нормально.
Скачать:(ой, перенаправил домен на другой сайт, так что эти ссылки не работали; теперь поправил) Текущая версия (v0.0.30). Одна из первых версий, просто сохранилась до того, как я её почти полностью переписал. И она ещё не самая первая. Можно сказать, что я писал с перерывами по полгода из-за банальной лени. А оказалось - это интереснее, чем кажется - писать тетрис.
P.S. Помогите подобрать правильную палитру, а то пока что то слишком тускло, то слишком ярко.
Сообщение отредактировал TimKruz - Пятница, 11 Января 2013, 22:10
TimKruz, неплохо сделано, особенно заставка перед меню, радует, что игра на Delphi Только вот у меня та заставка подвисала. Или так у всех должно быть?
Плохо подобраны цвета клеток пустых и не только пустых - раздражает глаза, отвлекает от игры. Обнаружил баг:
Голубая 4-клеточная часть была прямой, а при нажатии клавиши вниз, она упала и рассыпалась на квадратики. Хотел провернуть то же самое с зеленым квадратом, но не вышло
А так, если с цветами разберешься и перерисуешь графику, то игра получится более интересной. Steel Standoff - 2D аркада. Мои статьи
Убери сетку, или её залей или фигуры а то так только глаза выжигать, все сливается. Проект не плохой кстати если хорошо организуешь онлайн режим - будет супер! хА! сидят такие в офисе тетрис гоняют))))
А мне графика понравилась. Кубики и их фон требуют перерисовки, но направление мысли верное, особенно это касается боковой панели. Сразу вспоминаются игрушки доWinXPшных времен. ... ла-ла-ла-ла-ла-ла-ла-ла! :-)
Голубая 4-клеточная часть была прямой, а при нажатии клавиши вниз, она упала и рассыпалась на квадратики. Хотел провернуть то же самое с зеленым квадратом, но не вышло
Всё правильно. Я же писал, что фигуры могут быть обычными и "песочными", т.е. они рассыпаются на блоки и отдельные блоки проваливаются вниз, до первого твёрдого блока. Выделяются они картинкой блока, она как бы прерывистая, вместо обычной сплошной.
Quote (GameMix)
Плохо подобраны цвета клеток пустых и не только пустых - раздражает глаза, отвлекает от игры.
Да, я сам с этими цветами играть не могу. Пробовал delete нажимать? Там во второй пустые клетки почти не видно, а в третьей цвета вообще тусклые.
Quote (GameMix)
особенно заставка перед меню Только вот у меня та заставка подвисала. Или так у всех должно быть?
Сделал первое, что пришло в голову. У меня есть вариант крутой заставки (давно ещё придумал), но делать долго, а мне лень. Она не подвисает, так и должно быть. Теоретически должно быть 10 кадров в секунду, потому что интервал выставлен на 100 миллисекунд (в меню и игре - 30, это 32-33 кадра в секунду; можно было бы сделать 64, но это опять скорости пересчитывать, да и нагрузка возрастает), просто там кучу раз вызывается random() и заливка (углов), так что при частом обновлении сильно нагружает процессор - неудобно как-то. Наверное, лучше заранее подготовить кадры, и не делать сплошной рандом...
Quote (zmear)
Убери сетку, или её залей или фигуры
Если сетку убрать, то фон будет чисто белым, с этим тоже что-то делать нужно. А с другими цветами как выглядит? Первый вариант да, фигово получился (наверное, из-за выделяющегося чёрного).
Quote (romgerman)
сделай другой фон.
Какой, например?
Quote (ArtGr)
Кубики и их фон требуют перерисовки
Надо подумать... Просто с самого начала делал их как бы светящимися, видимо, перестарался.
Обновление до 0.0.30, спешите скачать. Зелёная ссылка в первом сообщении не меняется. Изменил картинки блоков, теперь вроде бы удачнее выглядит. Цвета по умолчанию 1, 0 или 2 из-за смены картинки блока лучше не ставить. Что делать с фоном - не знаю, пробовал сделать зелёным в полосочку - выглядит фигово. Может быть, забить всё случайными цветными блоками? Но это подходит только для главного меню, а что делать с боковыми панелями? В сложном режиме изменил фигуру типа "П" на пентамино в виде уголка. Вообще надо бы добавить все (ну, почти все) фигуры пентамино и выделить их в отдельный режим, благо механизм обработки фигур позволяет легко добавлять новые в масштабе 4x4. Правда, похоже, этот механизм тоже модернизировать придётся, он удобный, но не универсальный. В том же сложном режиме снизил шанс выпадения песочных фигур с 10 до 5% и вернул квадрат 2x2 в список. Теперь при нажатии на insert отключается режим смазывания фигур. Заодно нашёл и исправил причину отсутствия смазывания у самых верхних блоков. Оказывается, банально использовал целочисленный тип вместо знакового, а защита от переполнений у меня в компиляторе отключена, чтобы не орал об ошибках лишний раз. Заставку теперь можно легко пропустить, нажав пробел. Просто мне надоело на неё смотреть, когда я игру по десять раз подряд запускаю. И, наконец, добавил фигуру-бомбу. Сама она не появляется, вызывается (как следующая фигура) кнопкой b. Выглядит как чёрный квадрат 2x2 с мигающими (колеблющимися?) "крыльями", так что по размеру занимает 4x4 блока, но можно успеть нажать "вниз" и пропустить её через отверстие 2x2. Взрывает блоки в радиусе 2-х блоков от себя (площадь 6x6) при касании. Однако будьте осторожны, использование бомбы уменьшает счёт в расчёте 50 на количество взорванных блоков, поэтому использовать бомбы предлагается только в экстренных случаях. Вроде бы есть баг, когда происходит gameover при появлении бомбы в до краёв наполненном стакане, но я не уверен, что это мне не кажется и что это вообще существенно...
Картинка взрыва (кстати, заготавливается программно, вместе с маской для прозрачности фона) держится примерно 0.45 секунды. Хотел сначала надпись на этой картинке рисовать тоже самостоятельно, но мне надоело искать необходимые опорные точки, поэтому использовал шрифт Comic Sans MS. Вроде бы всё, хотя, может быть, что-то забыл, что сделал.
P.S. Давно как-то у меня валялась какая-то небольшая программка для генерации разных пищащих звуков (в стиле старых игр типа), вот хотелось бы её найти, но названия совсем не помню, может кто знает?
*** Как бы лучше обозвать скорости? Сейчас всё выглядит так:
Quote
нереальная!!! дьявольская!! безумная! очень сложная сложная быстрая нормальная медленная ёжик в тумане улитка на склоне
Подскажите другие варианты (подберу наиболее удачные), а то эти как-то совершенно не сочетаются друг с другом, а уж о "сложной скорости" я вообще молчу. Просто фантазия как-то с перебоями работает.
Сообщение отредактировал TimKruz - Воскресенье, 26 Августа 2012, 00:06
Да там такой код, что стыдно показывать. Хотя, конечно, если всё оптимизировать и причесать... Да, может потом и выложу, когда всё будет прилично выглядеть, это же не секретная разработка и не коммерческий проект...
вот интересный вариант. указывать скорость не названием а реальной скоростью, например: четверть кубика в секунду, пол кубика в секунду, кубик в секунду, полтора, два и т.д. а если твой вариант. то дьявольскую и нереальную, лучше поменять местами.
вот интересный вариант. указывать скорость не названием а реальной скоростью, например: четверть кубика в секунду, пол кубика в секунду, кубик в секунду, полтора, два и т.д.
Это можно попробовать, но, мне кажется, получится фигово, вот: кубик в 0.3 секунды (или три и треть кубика в секунду - 10 скорость), кубик в 0.27 секунды (или три и 19/27 в секунду - 9 скорость), кубик в 0.24 секунды (или четыре и одна шестая кубика в секунду - 8) и так далее, до 0.03 секунды...
Quote (omsklavr)
Тим советую вечером поиграть немного в кс :), тогда вдохновение будет и зделаешь гта своего города
Тебе не надоело во все темы всякую фигню писать? Для GTA нужно кучу графики, моделей с анимацией и тому подобное, а это месяцы работы для профессиональной команды разработчиков... Да и движок пишется не любителями, а такой же командой профессионалов... И хватит свой сервер везде рекламировать.
Quote (Markus_13)
Размер заголовка и рамки окна определяется с помощью WinApi: GetSystemMetrics...
Ну да, можно и так делать... Но я не вижу смысла давать возможность перемещать окно игры пользователю - зачем? Вторую копию запустить нельзя, сворачивается окно само, при потере фокуса (например, кликнуть по рабочему столу), разворачивать окно на весь экран нельзя, закрывается оно через собственное меню, так что заголовок как-то и не нужен уже. Вообще было бы неплохо разворачивать окно на весь экран, но это нужно масштабировать все картинки, подгонять пропорции... Хотя можно сделать масштабирование через OpenGL, но у меня в OpenGL постоянно с пропорциями проблемы - никак не получается сделать так, чтобы при любом разрешении картинка выглядела одинаково...