3つのコンピューターゲーム(各30バイト)

Shifticida (32バイト)と世界最小のレーシングゲーム (58バイト)に触発されて、私は最小のx86コンピューターゲームを作ることにしました。 1つのゲームの代わりに、3つが判明しました。 残念ながら、彼らはレースほどクールではありませんが、それぞれ30バイトしか占有しません。

推測する


二人用のゲーム。 最初のプレーヤーがキーボードのボタンを押します。 その後、2番目のプレーヤーは、最初のプレーヤーと同じボタンをクリックするまで、キーボードのボタンを使用します。 2番目のプレーヤーがあまり長く苦労しないように、画面にプロンプ​​トが表示されます。 目的のボタンが見つかると、ゲームは終了します。

;;-

int 16h ;;
mov bl, al ;;

still: ;;
int 29h ;;

mov al, 13;;
int 29h

mov ah,1 ;;
int 21h

cmp al, bl ;;
je true ;; , true
ja big ;; , big

; , , , bl,
mov al, '-' ; "-"
jmp still

big:
mov al, '+' ; "+"
jmp still

true:
int 20h ;;


バシュ


対戦相手がコンピューターである古典的な数学ゲーム。 ルールは次のとおりです:15本のスティックがテーブルにあり、1から3まで順番に取る必要があります。

ゲームは現在のスティックの数を画面に表示し、キーボードからの入力を待ちます(1、2、または3を自由に押してください)。 人が移動した後、コンピューターもいくつかのスティックを取り、スティックの残りの数を画面に表示します。 ゲームはスティックで終了し、勝つと画面にハートが表示されます。 注意:キーボード入力はフィルタリングされないため、一度に15本または200本のスティックを使用できます。 コンピュータは、同様の状況にある生きている人と同じようにこれに反応します(非常に気分を害する可能性があります)。

;;

mov dl, 15 ;; dl

still: ;;

mov al, '|' ;;
mov cl, dl ;; ,
disp: ;; cl
int 29h ;; 29h
loop disp

mov ah, 1 ;;
int 21h

sub al, '0' ;; ASCII-

cmp dl, al ;; - ,
je win

sub dl, 4 ;; 4
jns still ;; ,

jmp fin ;; -

win:
int 29h ;;

fin:
int 20h ;;


残念ながら、2回目以降、Bashでのプレイは退屈になります。

片腕の盗賊


このプログラムは、画面上の文字を一度に1つずつ、左上隅にスクロールします。 現在の文字を修正して次の文字に移動するには、右矢印キーを押します。 3つの同一のキャラクターを入手できる場合は、非常に古いコンピューターを使用しているか、非常に幸運です!

;;

push 0b800H ;;
pop ds

mov cx, 3 ;;

le: ;;
push cx ;; cx,
add bl, 2 ;;

inf: ;;
int 1AH ;;
add dl, bl ;; , ""
mov [bx], dl ;;

;;
in al, 60H
cmp al, 77
jz re ;; " ",
;;

jmp inf ;;

re: ;;
pop cx ;; cx
loop le ;; " "

int 20h ;;


おわりに


fasmを使用してゲームのソースコードをコンパイルしました 。 たとえば、dosboxで実行できます。 ワンアームの場合、CPUサイクルを減らすことをお勧めします。

ex2.com-推測
poo2.com -Bache
roll.com-片腕の盗賊

PSゲームをさらに小さくすることは可能ですか? もちろんできます!

Source: https://habr.com/ru/post/J119765/


All Articles