From dd1ab483f78d65b05405ea3ced5bdd9624e7478a Mon Sep 17 00:00:00 2001 From: dreamingPainter <859671742@qq.com> Date: Tue, 13 Apr 2021 20:43:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0judge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- judge.asm | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 162 insertions(+), 7 deletions(-) diff --git a/judge.asm b/judge.asm index 1e27090..dd69529 100644 --- a/judge.asm +++ b/judge.asm @@ -1,19 +1,174 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; 日期:2021-4-11 +; 食物:crnd $51 +; 墙:cblk $66 +; 像素:csnk +; 蛇头 (shead) +; 键入方向d(8bit)-> +; 宽38 高23 +;;;;;;;;;;;;;;;;;;;;撞墙伪码;;;;;;;;;;;;;;;;;;;;;;;;; +; ((shead) 与 d(new)运算)的位置的内容 CMP cblk +; 忘了 = ->sec +; 忘了 = ->clc +;;;;;;;;;;;;;;;;;;;撞自己伪码;;;;;;;;;;;;;;;;;;;;;;;; +; ((shead) 与 d(new)运算)的位置的内容 CMP csnk +; 忘了 = ->sev +; 忘了 = ->clc +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; judgeout 判断是否出界/撞到自身 ; 是->sec 即进位标志置1 ; 否->clc 即进位标志置0 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;关于指令cmp: +;;相等Z=1;不等Z=0 +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; judgeout: .scope - rts -.scend + lda d + ;;方向向上 + cmp #go_u + beq _gup + ;;方向向下 + cmp #go_d + beq _gdown + ;;方向向左 + cmp #go_l + beq _gleft + ;;方向向右 + cmp #go_r + beq _gright + jmp _End1 ;什么都没有撞 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;是否撞墙;是否考虑溢出情况;撞墙撞自己要不要分开写? +_gup: ;地址-40?实现:/减法/地址跳跃 + lda shead + sec + sbc #40 + sta _ptr + lda shead+1 + sbc #0 + sta _ptr+1 + ldy #0 + lda (_ptr),y + + cmp #cblk + beq _End2 + jmp _selfx + +_gdown: ldy #40 ;地址+40,好像有问题,这个(shead)是蛇头地址的地址了 拟修改:lda (取低位用啥来着)(shead),sec, adc #40, + lda (shead),y + cmp #cblk + beq _End2 + jmp _selfx + +_gleft: + lda shead + sec + sbc #1 + sta _ptr + lda shead+1 + sbc #0 + sta _ptr+1 + ldy #0 + lda (_ptr),y + + cmp #cblk + beq _End2 + jmp _selfx + +_gright:ldy #1 ;地址+1,好像有问题,这个(shead) 拟修改:lda (取低位用啥来着)(shead),sec,adc # + lda (shead),y + cmp #cblk + beq _End2 + +_selfx: cmp #csnk + beq _End2 + +;蛇没死 +_End1: clc + rts +;蛇死了 +_End2: sec + rts + +.scend +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; judgefood 判断是否吃到食物 ; 是->sec 即进位标志置1 ; 否->clc 即进位标志置0 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;食物伪码;;;;;;;;;;;;;;;;;;;;;;; +; ((shead) 与 d(new)运算)的位置的内容 CMP crnd +; 忘了 = ->sec +; 忘了 = ->clc +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + judgefood: .scope - rts + lda d + ;;方向向上 + cmp #go_u + beq _gup + ;;方向向下 + cmp #go_d + beq _gdown + ;;方向向左 + cmp #go_l + beq _gleft + ;;方向向右 + cmp #go_r + beq _gright + jmp _End1 ;输入了一个无效字符,,,,,? + +;是否撞墙;是否考虑溢出情况-不用;撞墙撞自己要不要分开写? +_gup: + lda shead + sec + sbc #40 + sta _ptr + lda shead+1 + sbc #0 + sta _ptr+1 + ldy #0 + lda (_ptr),y + + cmp #crnd + beq _End2 + bne _End1 + +_gdown: ldy #40 ;地址+40 + lda (shead),y + cmp #crnd + beq _End2 + bne _End1 + +_gleft: + + lda shead + sec + sbc #1 + sta _ptr + lda shead+1 + sbc #0 + sta _ptr+1 + ldy #0 + lda (_ptr),y + + cmp #crnd + beq _End2 + bne _End1 + +_gright:ldy #1 ;地址+1 + lda (shead),y + cmp #crnd + beq _End2 + +;没吃到 +_End1: clc + rts +;吃到了 +_End2: sec + rts + + .scend \ No newline at end of file