|
电脑游戏中的人工智能制作(3) org 100h tictacprocfar start: pushcs pop ds mov ax,0B800h; 清除屏幕 mov es,ax; xor di,di; mov cx,7D0h; mov ax,0F20h ; rep stosw; xor cx,cx; mov dl,5 loc_1: callprintBoard loc_2: mov ah,8 ; 等待按键 int 21h movzx bx,al
sub bl,31h ; 如果不是1..9 jcloc_2; 则重新输入 cmp bl,8 jaloc_2 cmp data_1[bx],al jne loc_2 mov byte ptr data_1[bx],'x' dec dl jzshort loc_3 mov al,'o' callbestMove mov [si],al callisWin; 判断是否已取得胜利 jnc loc_1 loc_3: callprintBoard mov ax,4C00h int 21h data_1db'12' data_2db'3456789' data_3db0 tictacendp printBoardprocnear mov si,offset data_1 mov di,548h mov cl,3 locloop_4: movsb add di,5 movsb add di,5 movsb add di,133h looplocloop_4 retn printBoardendp isWin procnear mov bx,1 mov bp,3 callsub_3; 检查横向是否完成 inc bx inc bx dec bp dec bp callsub_3; 检查纵向是否完成 callsub_4; 检查斜向是否完成
|