Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
1

Разминка для спецов №1 (512b game). Предлагаю развлечься!

02.12.2016, 00:01. Просмотров 1039. Ответов 15

Друзья спецы. Кто хочет немного отвлечься от помощи студентам и проявить спортивный программистский интерес?
Предлагаю замутить... (хотел сначала написать "конкурс", но призов нет и жюри тоже)... в общем, своеобразную коллективную развлекуху
Назовём это "Asm 512b game fun"

Задача: написать на ассемблере игру на любую тему.

Условия:
  1. Игра должна быть написана на MASM, TASM или FASM (можно NASM, но нежелательно – не у всех он есть, вероятно) под DOS. Размер получаемого COM-файла не должен превышать 512 байт! Можно использовать FPU, MMX, rdtsc и т.п., а вот SSE/AVX нежелательно (не у всех это добро может поддерживаться).
  2. Программа должна корректно работать в DOSBox (текстовый или графический режим – неважно).
  3. Управление игрой должно производиться через взаимодействие с пользователем (клавиатура, мышь...), т.е. классический вариант автоматической игры "жизнь" не годится (если только юзер не сможет влиять на её ход). Хочется, чтобы это была именно игра, а не просто программка, которой можно управлять (например, эффект пламени, в котором можно менять направление ветра стрелками влево-вправо на игру не очень похож).
  4. Должен быть предусмотрен выход из программы (либо клавиатурой, либо после логического завершения игрового процесса, но разумеется, такой игровой процесс должен длиться разумное кол-во времени – максимум 5 минут, а не полчаса ).
  5. Код должен быть написан с нуля специально для этой темы, т.е. нельзя использовать чужой код или код, написанный ранее.
  6. Результат в виде ASM-файла и скриншота выкладывайте прямо сюда. Также просьба прикрепить архив с исходником и COM-файлом.
  7. Сроков проведения "разминки" нет, она может идти хоть год, но хотелось бы увидеть большую часть работ в течение недели (до 8 декабря или раньше).
  8. Чем интереснее и красивее будет игра, тем лучше (всяческие спецэффекты и трюки тоже приветствуются)
Есть желающие поучаствовать?
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2016, 00:01
Ответы с готовыми решениями:

Разминка для мозгов
Необходимо выполнить задания, написав их на языке С: 1) Нарисовать схему...

Разминка Для Ума
Предлагаю задачу, которую я закрывал дня два. Идея такая - как на СКД получить...

Разминка для профессианалов
Помогите решить детскую задачу Условие: В телефонной книге 100 номеров...

Разминка для программистов
Интересно будет посмотреть на коды, кто и как решил эти задачи. :) 1....

разминка для мозга
на askdev.ru есть конкурс - игра в города(http://www.askdev.ru/question/1969/)...

15
R71MT
4325 / 1404 / 299
Регистрация: 29.07.2014
Сообщений: 2,447
Записей в блоге: 5
02.12.2016, 04:42 2
..суть в рамках 512? ОК! Не плохая идея...
0
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
02.12.2016, 09:34  [ТС] 3
Цитата Сообщение от R71MT Посмотреть сообщение
суть в рамках 512?
В целом – да
Хотел сначала 256b написать, но подумал, что игры, скорее всего, будут не фонтан. Хотя, Farbrausch и не такое вытворяли, см. аттач (не игра, но всё же).
В общем, на первый раз нормально
0
Вложения
Тип файла: zip fr0_1.zip (3.0 Кб, 8 просмотров)
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,119
Завершенные тесты: 1
02.12.2016, 12:08 4
Цитата Сообщение от Jin X Посмотреть сообщение
MMX, rdtsc
В досбоксе это не поддерживается. Он эмулирует 486 процессор.
0
alexcoder
1558 / 703 / 146
Регистрация: 03.06.2009
Сообщений: 4,119
Завершенные тесты: 1
02.12.2016, 12:34 5
У меня тоже не игра, но зато 74 байта.
1
Вложения
Тип файла: rar muar.rar (459 байт, 9 просмотров)
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
02.12.2016, 15:55  [ТС] 6
Цитата Сообщение от alexcoder Посмотреть сообщение
В досбоксе это не поддерживается. Он эмулирует 486 процессор.
Значит, ошибка, пардон. Хотя rdtsc всё же работает, попробовал сейчас.

Цитата Сообщение от alexcoder Посмотреть сообщение
У меня тоже не игра, но зато 74 байта.
Даёшь игру теперь?!
0
Constantin Cat
1974 / 1062 / 367
Регистрация: 28.02.2015
Сообщений: 2,337
Завершенные тесты: 1
03.12.2016, 03:20 7
Jin X, давно как, бы писал самолетики, нужно порытся в архивах.
0
Ethereal
Нарушитель
4521 / 1815 / 235
Регистрация: 17.02.2013
Сообщений: 2,708
05.12.2016, 17:18 8
Тут два требования черезчур строгими кажутся. Писать только сейчас - ну так если есть чем заняться, то не до того уже. И 512 байт, ну так данные программы, например лабиринты, могут сожрать значительно больше. Если бы было ограничение именно на код в 512 байт, то было бы логичнее, а данных сколько угодно.

Вот нашел в старом архиве свой старый Сокобан. Написан на ассемблере как COM-файл, но потом сжат LzExe и от этого превратился в EXE. Кода в нем 0x218 байт. Почти вписывается. И можно было бы вполне вписать, заменив вставленные в него копирайты в 3 строки на краткое (C)Ethereal и еще что сократить/ужать (например убрать возможность отката ошибочного хода), да исходник-то не сохранился. Вернее он на MFM-винте, да только тот некуда подключить.

А вот данных в программе в виде лабиринтов в несколько килобайт и еще рекордных результатов байт на 400.

В программе фишка. Она сжата с помощью LzExe, но лучшие результаты сохраняются в сам EXE-файл в его конце. Там уже какие-то сохранены.

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

После запуска программы с помощью стрелок вправо-влево выбирается лабиринт, потом пробелом переходим в выбранный лабиринт, пробелом из него-же выходим. Esc - выход из программы. В процессе игры клавишей BackSpace (забой) можно откатить последний сдвиг блока, если он был сделан по ошибке, но только один. А сама игра идет стрелками.

Когда лабиринт разобран, человечек пропадает, тут нажать пробел, получить поздравления и еще раз пробел.
0
Вложения
Тип файла: rar SOKOBAN.rar (7.2 Кб, 5 просмотров)
Ethereal
Нарушитель
4521 / 1815 / 235
Регистрация: 17.02.2013
Сообщений: 2,708
05.12.2016, 17:35 9
Смысл игры - затолкать человечком рубины (блоки) на квадратные поля. Когда рубин загнан на такое поле он выглядит уже как звездочка.
0
Ratio
6 / 6 / 0
Регистрация: 24.09.2016
Сообщений: 57
05.12.2016, 20:08 10
Цитата Сообщение от Jin X Посмотреть сообщение
не должен превышать 512 байт!
Я писал игру, но она весила 3 кило. На 512 б не вижу особого смысла. Разве что змейку какую-нибудь написать.
Хотя может быть что-то и попробую, когда время появиться.
0
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
05.12.2016, 22:59  [ТС] 11
Цитата Сообщение от Ethereal Посмотреть сообщение
Тут два требования черезчур строгими кажутся. Писать только сейчас - ну так если есть чем заняться, то не до того уже. И 512 байт, ну так данные программы, например лабиринты, могут сожрать значительно больше. Если бы было ограничение именно на код в 512 байт, то было бы логичнее, а данных сколько угодно.
Так, в 512 байтах весь и прикол. Уместить максимум в минимум
Это типа демосцены 512b intro, только в формате игры.
Про "писать только сейчас" – может быть и чересчур. Просто если уже было написано, то какой тут спортивный интерес?
Хотя, если уже что-то есть, выкладывай, всё равно интересно

Добавлено через 1 минуту
Цитата Сообщение от Ratio Посмотреть сообщение
Разве что змейку какую-нибудь написать.
Я змейку писал как-то давным-давно. Симпатично получилось, но чуть больше 1kb. Так что, в 512 байтах змейка тоже может разная получится
0
Ethereal
Нарушитель
4521 / 1815 / 235
Регистрация: 17.02.2013
Сообщений: 2,708
05.12.2016, 23:34 12
Цитата Сообщение от Jin X Посмотреть сообщение
Хотя, если уже что-то есть, выкладывай, всё равно интересно
Так я-ж выложил. Или еще чего нарыть ?

Добавлено через 3 минуты
Цитата Сообщение от Jin X Посмотреть сообщение
Это типа демосцены 512b intro, только в формате игры.
Не, ну графическая демонстрашка затмит любую текстовую игру. Ибо красиво. А в графические игры 512 я что-то мало верю. В игре-ж содержание должно быть, а не просто эффект 1 шт.

Добавлено через 7 минут
Хотя да, питона можно запихать. Или стрелялку по пролетающей слева-направо хреновине.
0
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
06.12.2016, 00:40  [ТС] 13
Цитата Сообщение от Ethereal Посмотреть сообщение
Так я-ж выложил. Или еще чего нарыть ?
Ну, так это ж не 512b

Цитата Сообщение от Ethereal Посмотреть сообщение
Хотя да, питона можно запихать. Или стрелялку по пролетающей слева-направо хреновине.
Да можно придумать, мне кажется, даже что-то типа xonix'а упрощённого. Или какой-нибудь простенький тетрис. Или что-то связанное с перестановкой цветов. Автослалом (раньше были "игры на экране").

Добавлено через 1 минуту
Но в тексте, согласен, попроще будет что-то сделать
0
Ethereal
Нарушитель
4521 / 1815 / 235
Регистрация: 17.02.2013
Сообщений: 2,708
06.12.2016, 01:02 14
Цитата Сообщение от Jin X Посмотреть сообщение
Ну, так это ж не 512b
Нет. Кода там 512 байт + 24 байта лишку. Остальное данные. Если считать только размер кода, то почти подходит. Потому и выложил.

Добавлено через 4 минуты
З.Ы. Так тут игры в 512 байт пока никто не выложил. Или меньше 512 байт, но не игра или игра, но больше.
0
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
07.12.2016, 01:19  [ТС] 15
Почти сделал за сегодняшний вечер xonix! Всё как положено: с закраской и врагами
Минимальная рабочая конфигурация 398 байт (с 3 врагами, с одним - 386 байт).
Максимальная (с полной инициализацией регистров, 3 врагами, со звуком, доп. клавиатурными удобствами, миганием при врезании, подсчётом очков... правда, пока без вывода на экран ) - 510 байт.

В общем, осталось сделать вывод счёта на экран (и оптимизировать под 512 байт) и можно выкладывать сюда
p.s. Заливку делал через рекурсию - частенько происходило переполнение стека, пришлось делать оптимизацию стека (1 байт возврата вместо 2-х). Так что, может, ещё алгоритм заливки изменю - почитать надо...
0
Jin X
4631 / 1379 / 162
Регистрация: 14.12.2014
Сообщений: 2,606
Записей в блоге: 8
Завершенные тесты: 2
07.12.2016, 22:52  [ТС] 16
Добил-таки я этот xonix!
Получилось несколько вариантов (очень замороченно), прикрепляю всё в архиве, вот readme.txt:
Код
xonix05k (c) 2016 by Jin X
written in TASM (DOS COM) special for [512b game fun] (http://www.cyberforum.ru/assembler/thread1865830.html)
-------------------------------------------------------------------------------------------------------------

xonix05k.asm - source (with russian comments)
xonix05k.inc - config include for maximal version (with russian comments)
x05_full.inc - config include for 512b full version
x05_scrx.inc - config include for 512b version with score
x05_sndx.inc - config include for 512b version with sound

xonix05k.com - release of 602b maximal version (with sound, score, 'GAME OVER!' message, long copyright output; extmode and safemode are enabled)
x05_full.com - release of 512b full version with sound, score and 'LOST' message (no copyright; extmode and safemode are disabled)
x05_scrx.com - release of 512b version with score and 'LOST!' message (without sound and copyright; extmode is enabled, safemode is disabled)
x05_sndx.com - release of 512b version with sound and 'GAME OVER!' message (without score, with brief copyright in file [no output]; extmode is enabled, safemode is disabled)

readme.txt - this file :)

--------------------------------------
Enjoy the game and have a nice day! ;)
Исходник вставить в сообщение не получается, т.к. он больше 15 Кб, см. архив
0
Миниатюры
Разминка для спецов №1 (512b game). Предлагаю развлечься!  
Вложения
Тип файла: zip xonik05k.zip (12.8 Кб, 8 просмотров)
07.12.2016, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2016, 22:52

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

Запрос для спецов по SQL
Имеется таблица: <TABLE...

VPN для SCALANCE S61x, разминка для мозга
Столкнулся с вопросом поднять VPN тунель на оборудовании Logmatic (такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru