Comments 95
>Конечно можно!
Вывод на экран строки «You've just lost The Game».
Вывод на экран строки «You've just lost The Game».
в 30 байт так просто не поместится, сама надпись съедает 25 байт, придётся сжимать
Game Over тогда уж )
Такая Короткая Игра.
…
— Фига-се басню сократили!
— Фига-се басню сократили!
Где-то в полдень мужик встает с дивана с глубокого похмелья, очень
долго ищет тапочки, надевает их, очень медленно, еле поднимая ноги идет на кухню. Проходя мимо клетки с попугаем снимает с нее (с клетки) покрывало, заходит на кухню достает из холодильника пиво, медленно с наслаждением пьет, идет обратно. Проходя мимо клетки с попугаем накидывает на нее покрывало, ложиться на диван и засыпает.
Голос из клетки — охуенно день прошел!
долго ищет тапочки, надевает их, очень медленно, еле поднимая ноги идет на кухню. Проходя мимо клетки с попугаем снимает с нее (с клетки) покрывало, заходит на кухню достает из холодильника пиво, медленно с наслаждением пьет, идет обратно. Проходя мимо клетки с попугаем накидывает на нее покрывало, ложиться на диван и засыпает.
Голос из клетки — охуенно день прошел!
Если выводить в лоб через DOSовское 21h прерывание, то программа занимает 35 байт. А ту же Баше можно уместить байт эдак в 20 для процессора Z80, я уверен.
в свое время у нас на курсе по ассемблеру было задание соревнование
кто в меньшем числе байт проги выведет «Александр Сергеевич Пушкин» в трех вариантах — в строку как есть, лесенкой и в столбик.
выкручивались прямой работой с памятью.
не помню какой вариант был у победителя, но мой был, вроде, 58 байт.
во даже откопал в архивах два варианта, только сча не в чем скомпилить проверить в linuxe
кто в меньшем числе байт проги выведет «Александр Сергеевич Пушкин» в трех вариантах — в строку как есть, лесенкой и в столбик.
выкручивались прямой работой с памятью.
не помню какой вариант был у победителя, но мой был, вроде, 58 байт.
во даже откопал в архивах два варианта, только сча не в чем скомпилить проверить в linuxe
UFO just landed and posted this here
Да-да, когда-то давно делал Баше на микросхемах логики.
Жульничество какое-то :)
У вас 6 наборов страничек для всех вариантов.
У вас 6 наборов страничек для всех вариантов.
Но от этого игра не перестает быть полноценной игрой. Лет десять назад я свою игру (квест) тоже на чистом HTML делал, в Word 97. Вот смешно сейчас об этом вспоминать…
Хотел бы я посмотреть на подобную реализацию шахмат =D
UFO just landed and posted this here
Сам гугл не смог бы хранить все комбинации.
От начала до конца комбинации хранить не обязательно. Поэтому достаточно будет сделать 4224 страниц: На поле 64 клетки, каждая клетка может иметь 33 состояния (путая или одна из 32 фигур); Всё умножаем на 2 для подсветки допустимых ходов.
64 клетки нужно возвести в степень 33, а не перемножить.
Наоборот, 33 в степени 64.
Ага, что-то я напутал. Но возводить в степень можно и клетки и фигуры. Просто получаются разные исходные данные: 64 ^ 33 — что стоит на каждой клетке, 32 ^ 64 — на какой клетке каждая фигура. Но кол-во фигур и тип могут меняться, поэтому лучше первый вариант.
Однако и я ошибся — оба эти числа меньше десяти в сотой степени, а значит меньше чем гугол.
вы лучше посчитайте количество состояний доски в го. Доска 19х19 :)
UFO just landed and posted this here
мне кажется, что все-таки меньше. Позиция каждой фигуры в реальной партии может принимать 65 значений (64 на доске + 1 вне доски). Итого получаем максимум 65*32 = 2080 досок (причем некоторые будут совпадать из-за того, что одинаковые фигуры можно менять местами)
Можно считать, что клетка может быть пустой, потом чёрная или белая фигура и количество фигур — на самом деле их всего 6. Так что не так и много состояний получается.
Да конечно, это был сарказм. Прикольное решение, очень даже.
UFO just landed and posted this here
В игре просто следующий алгоритм:
Сколько бы ты не взял спичек, компьютер возьмет столько, чтобы у вас в сумме получилось 4 спички.
Например: игрок берет 1 спичку, компьютер 3. Или игрок берет 3 спички, а компьютер 1.
Сколько бы ты не взял спичек, компьютер возьмет столько, чтобы у вас в сумме получилось 4 спички.
Например: игрок берет 1 спичку, компьютер 3. Или игрок берет 3 спички, а компьютер 1.
неплохо придумано! но все же тут подгружаются другие странички ( хотя идея хорошо
в вашей игре реально выиграть? ))
В свое время мне попадалась книжка где Баше была реализована в спичечных коробках, причем согласно логике играющего человека такая конструкция даже имела самообучающийся механизм. :-)
Видимо, выигрышная стратегия, описанная на Википедии, не очень-то и выигрышная.Конечно там глупость написана. Исправил. В любом случае, при стартовая позиции с 15 и 3 выигрышная стратегия будет для первого игрока. Второй может победить только если первый сделает ошибку.
Делали! Посадка на Луну, например.
А я на своем Б3-21 делал даже шахматы (правда, проиграть им мог только человек, который играет в шахматы впервые в жизни).
А я на своем Б3-21 делал даже шахматы (правда, проиграть им мог только человек, который играет в шахматы впервые в жизни).
Автору нужно полистать сборник игр под калькуляторы МК-52 — солидная подборка, а реализация алгоритмов на x86 займет как раз всего несколько десятков байт. Вдохновения вам!
С алгоритмами проблем нет. Проблемы есть с вводом и выводом. Например, вывод одного символа через 29h прерывание — это 4 байта к весу двоичного файла. На некоторых МК (про 52 ничего сказать не могу, никогда его в руках не держал) для ввода данных программа останавливалась и затем запускалась вручную, и это требовало всего одного шага.
Если у Вас был 61, то программировался он по-моему точно так же как 52. Просто в 52 была энергонезависимая долговременная память (Программы сохранялись после отключения питания)
Забавно :) Как раз недавно стал асм изучать, а такие вот игрушки дают стимул лично для меня.
Правила такие: на столе лежат 15 палочек, нужно по очереди брать от 1 до 3. Проигрывает тот, кому нечего брать со стола.Почему-то сразу вспомнилась задачка:
у вас отличная память! В каком году читали?
Интересная задачка. Набросает кто-нибудь набросает по быстрому алгоритм решения?
Зачем выбрасывать при недостатке продовольствия, когда можно съесть?
Фэйк, набор-то компьютерный.
UFO just landed and posted this here
Ваши игры — да в учебники по ассемблеру. Одновременно и интересно, и не слишком громоздко для начинающих.
UFO just landed and posted this here
А в нем 16-битные инструкции не работают.
На этом сайте (pouet.net) нашел свою давнюю работу с питерского демо-пати Chaos Construction 2000, 5 место в номинации 256 byte compo
www.pouet.net/prod.php?which=5317
www.pouet.net/prod.php?which=5317
Какие-то пробелмы при скачивании.
Вот архив всех работ 256 byte compo
www.scene.org/file.php?file=/parties/2000/chaos00/256b/in256b.zip&fileinfo
Вот архив всех работ 256 byte compo
www.scene.org/file.php?file=/parties/2000/chaos00/256b/in256b.zip&fileinfo
Не знаю на каком это ассемблере писано но эти игры можно еще уменьшить.
На тасме точно такая штука работает, там можна делать переходы без меток!!! Метка занимает 1 байт! Чтобы перейти без метки вперед надо знать сколько байт занимают следующие команды (например 10 байт) и тогда переход можно написать так «jmp $+10» и так переход сработает без метки. Назад тоже должно работать «jmp $-10»
На тасме точно такая штука работает, там можна делать переходы без меток!!! Метка занимает 1 байт! Чтобы перейти без метки вперед надо знать сколько байт занимают следующие команды (например 10 байт) и тогда переход можно написать так «jmp $+10» и так переход сработает без метки. Назад тоже должно работать «jmp $-10»
Наркоман штоле? Посмотрел бы для начала как твой пример будет выглядеть в дизассембелере и как выглядит код автора в нем же.
Не знаю как у кого а у меня программы с такими переходами всегда нормально работали… Если уж делать мелкие проги то пора экономить каждый байт (и если сделать такую прогу без метки то она становилась меньше на байт)
ПОСОНЫ, а по сети в них можно рубиться?
UFO just landed and posted this here
Боюсь, с сапером непросто будет. Для каждой клетки нужно проверять соседей — это минимум 7 проверок (а значит, в бинарник пойдет от 7 до 21 байт). А кроме этого, нужно выводить на экран и опрашивать клавиатуру (минимум 4 байта на каждую из этих задач). И команда завершения программы должна быть обязательно. Вот и выходит, что в лучшем раскладе, без генератора случайных чисел, 16 байт только на ввод-вывод и кусок игровой логики. Примерно так же я размышлял, когда решил не делать реализацию игры Жизнь — в 32 байта она просто не поместится (на x86, разумеется).
Простите, а зачем эти адреса дотком приведены в заключении?
{irony}Снова нету вариантов под Mac и Linux… Автор, почему не кроссплатформенная?! :( {/irony}
Можно ещё сократить, первую и третью — до 24 байт, вторую — до 27 байт.
Первая программа:
Вторая программа:
Третья программа:
- выходить из COM-программы можно не по int 20h, а по ret; в бинарнике второй программы это даже используется, в отличие от исходника;
- int 29h сохраняет ah, так что «mov ah,1» и «int 29h» можно поменять местами, а пару команд «mov al,imm1» и «mov ah,imm2» можно заменить на одну «mov ax,imm2*256+imm1»;
- если в мешанину условных переходов закрадывается безусловный, это повод подумать, нельзя ли переупорядочить код, избавляясь от безусловного перехода.
Первая программа:
org 100h
;;Угадай-ка
int 16h ;;Ожидаем нажатие на клавишу
mov bl, al ;;Сохраняем код клавиши в память
still: ;;Главный цикл
int 29h ;;Вывод символа на экран
mov ax, 1*256+13;;al=13 - Возврат каретки, ah=1 - Опрос клавиатуры
int 29h
int 21h
cmp al, bl ;;Сравнение кодов клавиш
mov al, '+'
ja still
mov al, '-'
jb still
true:
ret
Вторая программа:
org 100h
;;Баше
mov dl, 15+4 ;;Поместим в dl количество палочек
still: ;;Главный цикл
sub dl, 4
js fin
mov ax, 1*100h+'|' ;;Выведем символ палочки
mov cl, dl ;;с помощью цикла,
disp: ;;ровно cl раз
int 29h ;;вызвав прерывание 29h
loop disp
int 21h
sub al, '0' ;;Переводим ASCII-код в число
cmp dl, al ;;Забрали последнюю палочку - значит, победили
jne still
win:
int 29h ;;Выведем сердечко
fin:
ret
Третья программа:
;;Однорукий бандит
push 0b800H ;;Обращаемся к видеопамяти
pop ds
le: ;;Вывод символа
inc bx
inc bx ;;Переместим курсор
inf: ;;Почти вечный цикл
int 1AH ;;Вызываем таймер
add dl, bl ;;Мешаем игроку победить, быстро нажимая клавишу "Вправо"
mov [bx], dl ;;Выводим текущий символ на экран
;;Обработчик клавиатуры
in al, 60H
cmp al, 77 ;;Нажата кнопка "Стрелка влево", переходим к следующему символу
jnz inf ;;Почти вечный цикл повторяется почти вечно
re: ;;Пора выводить следующий символ или останавливать бандита
cmp bx, 6
jnz le
ret ;;Конец программы
Баше интересная задумка. Аппаратную версию игры можно сожно создать исключительно на выключателях и лампах. А программная вообще не требует вычислений. Благодаря Баше я выиграл ящик пива в 2000 году, поспорив, что смогу написать игру на чистом HTML (уровня Internet Explorer 3.0).
Я когда-то восхищался программой для МК-61, которая была размером в 8 команд, это была игра Бридж. Аналогичные программы занимали всю память (более 100 команд), эта же реализовывала хитрый алгоритм. Правда кроме самого кода программы, нужно было еще заполнить почти все ячейки памяти нужными значениями для вычислений.
Sign up to leave a comment.
Три компьютерные игры (по 30 байт каждая)