Add scoring

This commit is contained in:
Juhani Krekelä 2023-01-14 22:43:49 +02:00
parent 65a8c4cc1a
commit f3e5856ac4
1 changed files with 56 additions and 0 deletions

View File

@ -16,6 +16,8 @@ define direction_down 6
define direction_left 12
define direction_right 18
define score_high_reg v5
define score_low_reg v6
define game_over_reg v7
define fruit_x_reg v8
define fruit_y_reg v9
@ -29,6 +31,9 @@ start:
cls
ld game_over_reg, 0
ld score_high_reg, 0
ld score_low_reg, 0
rnd head_x_reg, 63
rnd head_y_reg, 31
@ -80,6 +85,8 @@ game_over:
ld st, v0
call wait
call display_score
ld v0, 30
call wait
@ -96,6 +103,42 @@ game_over:
jp start
display_score:
cls
ld i, score_high_bcd
ld b, score_high_reg
ld i, score_low_bcd
ld b, score_low_reg
ld i, score_low_bcd
ld v2, [i]
; v0 and v1 are zero, v2 is ones
ld v3, v2
ld i, score_high_bcd
ld v2, [i]
; v0 is thousands, v1 is hundreds, v2 is tens
; Score is a four-digit number stored in v0 to v3
ld v4, 0
ld v5, 0
ld f, v0
drw v4, v5, 5
add v4, 5
ld f, v1
drw v4, v5, 5
add v4, 5
ld f, v2
drw v4, v5, 5
add v4, 5
ld f, v3
drw v4, v5, 5
ret
wait:
ld dt, v0
wait_loop:
@ -261,6 +304,8 @@ collision:
eat_fruit:
; Jumping to collision skips tail moving code, so we get the snake
; lengthening for free
call increment_score
ld v0, 1
ld st, v0
@ -268,8 +313,19 @@ eat_fruit:
drw fruit_x_reg, fruit_y_reg, 1
jp spawn_fruit
increment_score:
; Low register stores 0…9
add score_low_reg, 1
se score_low_reg, 10
ret
ld score_low_reg, 0
add score_high_reg, 1
ret
tail_collision:
ld game_over_reg, 1
ret
single_pixel: db #80
score_high_bcd: db 0, 0, 0
score_low_bcd: db 0, 0, 0