mirror of
https://github.com/fumiama/c64-snake.git
synced 2026-06-10 13:00:32 +08:00
169
judge.asm
169
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 判断是否出界/撞到自身
|
; judgeout 判断是否出界/撞到自身
|
||||||
; 是->sec 即进位标志置1
|
; 是->sec 即进位标志置1
|
||||||
; 否->clc 即进位标志置0
|
; 否->clc 即进位标志置0
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;关于指令cmp:
|
||||||
|
;;相等Z=1;不等Z=0
|
||||||
|
;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
judgeout:
|
judgeout:
|
||||||
.scope
|
.scope
|
||||||
rts
|
lda d
|
||||||
.scend
|
;;方向向上
|
||||||
|
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 判断是否吃到食物
|
; judgefood 判断是否吃到食物
|
||||||
; 是->sec 即进位标志置1
|
; 是->sec 即进位标志置1
|
||||||
; 否->clc 即进位标志置0
|
; 否->clc 即进位标志置0
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;食物伪码;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; ((shead) 与 d(new)运算)的位置的内容 CMP crnd
|
||||||
|
; 忘了 = ->sec
|
||||||
|
; 忘了 = ->clc
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
judgefood:
|
judgefood:
|
||||||
.scope
|
.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
|
.scend
|
||||||
Reference in New Issue
Block a user