Skip to content

Commit 65c912c

Browse files
committed
Implemented diagonal-blocking AI
1 parent 4145687 commit 65c912c

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

src/code/ai.asm

+20-6
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ CalculateTurnAI::
152152
jr nz, .colLoop
153153

154154
; ---------------------------------------------------------
155-
; Check left-to-right diagonal for possible win
155+
; Check left-to-right diagonal for win- and block-moves
156156
; ---------------------------------------------------------
157157
158158
; Set registers for checks
@@ -179,8 +179,9 @@ CalculateTurnAI::
179179
180180
; Check if win on diagonal
181181
ld a, c
182-
and a
183-
jr nz, .noWinLtrDiagonal
182+
cp 1
183+
jr z, .noWinLtrDiagonal
184+
ld [wAITurnBlockFlag], a
184185
ld a, b
185186
cp 1
186187
jr nz, .noWinLtrDiagonal
@@ -200,13 +201,19 @@ CalculateTurnAI::
200201
dec hl
201202
and a
202203
jr nz, .ltrDiagonalFindWinSquareLoop
204+
ld a, [wAITurnBlockFlag]
205+
and a
203206
ld a, b
207+
jr z, .ltrDiagonalLoadWinMove
208+
ld [wAITurnBlockBuffer], a
209+
jr .noWinLtrDiagonal
210+
.ltrDiagonalLoadWinMove
204211
ld [wCursorPosAI], a
205212
ret
206213
.noWinLtrDiagonal
207214

208215
; ---------------------------------------------------------
209-
; Check right-to-left diagonal for possible win
216+
; Check right-to-left diagonal for win- and block-moves
210217
; ---------------------------------------------------------
211218
212219
; Set registers for checks
@@ -231,8 +238,9 @@ CalculateTurnAI::
231238
232239
; Check if win on diagonal
233240
ld a, c
234-
and a
235-
jr nz, .noWinRtlDiagonal
241+
cp 1
242+
jr z, .noWinRtlDiagonal
243+
ld [wAITurnBlockFlag], a
236244
ld a, b
237245
cp 1
238246
jr nz, .noWinRtlDiagonal
@@ -248,7 +256,13 @@ CalculateTurnAI::
248256
dec hl
249257
and a
250258
jr nz, .rtlDiagonalFindWinSquareLoop
259+
ld a, [wAITurnBlockFlag]
260+
and a
251261
ld a, b
262+
jr z, .rtlDiagonalLoadWinMove
263+
ld [wAITurnBlockBuffer], a
264+
jr .noWinRtlDiagonal
265+
.rtlDiagonalLoadWinMove
252266
ld [wCursorPosAI], a
253267
ret
254268
.noWinRtlDiagonal

0 commit comments

Comments
 (0)