diff --git a/addfood.asm b/addfood.asm index d361361..89f26af 100644 --- a/addfood.asm +++ b/addfood.asm @@ -52,7 +52,9 @@ addfood: beq - cmp #cblk beq - - lda #csnk + cmp #crnd + beq - + lda #crnd dey sta (_ptr), y rts diff --git a/append.asm b/append.asm deleted file mode 100644 index 8788428..0000000 --- a/append.asm +++ /dev/null @@ -1,9 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; append 增加蛇长 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -append: -.scope - inc c ; 蛇长加一 - ; 其他代码 - rts -.scend \ No newline at end of file diff --git a/head.asm b/head.asm index 2b5f825..22972ef 100644 --- a/head.asm +++ b/head.asm @@ -1,6 +1,7 @@ .alias cblk $66 ; 边框 .alias csnk $a0 ; 像素 .alias csps $20 ; 空白 +.alias crnd $51 ; 食物 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 按钮配置,调试时使用WASD控制 @@ -23,5 +24,6 @@ .alias field $0428 ; 蛇所在屏幕内存区 .data -.org $c000 +.org $c000 +.space eat 1 .text \ No newline at end of file diff --git a/main.asm b/main.asm index 26a9e29..e350a2a 100644 --- a/main.asm +++ b/main.asm @@ -5,9 +5,6 @@ main: .scope -.data -.space lopcnt 1 ; 循环次数计数 -.text `init jsr getchar ; 等待输入任意字符开始游戏 jsr erasehint ; 游戏开始,清空提示 @@ -18,28 +15,24 @@ main: jsr printfail jsr getchar rts - clc -* jsr judgefood ; 判断是否吃到食物 +* clc + lda #0 + sta eat + jsr judgefood ; 判断是否吃到食物 bcc + - jsr append + inc c ; 蛇长加一 + lda #1 + sta eat + jsr addfood * jsr calcscore ; 计算得分 jsr printscore ; 打印分数 lda #32 jsr delay ; 延时期间最后一个按键位于d lda d - beq ++ cmp #ed_g bne + rts -* sta d -* inc lopcnt - lda lopcnt - cmp #16 - bmi ----- - lda #0 - sta lopcnt - jsr addfood - jmp ----- +* jmp ---- .scend ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -50,7 +43,7 @@ main: jsr chrout lda #$00 sta s - lda #$00 + sta eat sta s + 1 ; 初始化分数为0 jsr printscore ; 打印分数 lda #csnk @@ -69,7 +62,6 @@ main: .require "hint.asm" .require "getchar.asm" .require "addfood.asm" -.require "append.asm" .require "delay.asm" .require "judge.asm" .require "move.asm" diff --git a/snake.prg b/snake.prg index 7d3a4bd..a9f7847 100644 Binary files a/snake.prg and b/snake.prg differ