1
0
mirror of https://github.com/fumiama/c64-snake.git synced 2026-06-05 00:32:39 +08:00

Merge pull request #2 from fumiama/main

merge
This commit is contained in:
laffey98
2021-04-13 20:59:09 +08:00
committed by GitHub
3 changed files with 166 additions and 9 deletions

View File

@@ -4,5 +4,7 @@
calcscore:
.scope
inc s
rts
bne +
inc s+1
* rts
.scend

169
judge.asm
View File

@@ -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

View File

@@ -21,4 +21,4 @@ printscore:
rts
.scend
score_str: .byte "SCORE",0
score_str: .byte "SNAKE",0