generated from BattlesnakeOfficial/starter-snake-typescript
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathopponents.ts
31 lines (27 loc) · 1.13 KB
/
opponents.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { Battlesnake, Move, SnakePositionMap } from "./types"
import { parseCoord, translateCoord } from "./utils"
// Takes in your snake and a set of opponent snake body positions
// and checks if any possible move would collide with them
// TODO: Account for their move (i.e. if they would move and it would make your
export function checkOpponents(you: Battlesnake, oppMap: SnakePositionMap, safeMoves: Record<Move, boolean>): Record<Move, boolean> {
return Object.values(oppMap).reduce((acc, curr) => {
// TODO: Maybe refactor this into a loop? Too lazy to do that - love Graham :)
// Check Up move
if (curr[parseCoord(translateCoord(you.head, Move.Up))]) {
acc[Move.Up] = false
}
// Check Down move
if (curr[parseCoord(translateCoord(you.head, Move.Down))]) {
acc[Move.Down] = false
}
// Check Left move
if (curr[parseCoord(translateCoord(you.head, Move.Left))]) {
acc[Move.Left] = false
}
// Check Right move
if (curr[parseCoord(translateCoord(you.head, Move.Right))]) {
acc[Move.Right] = false
}
return acc
}, safeMoves)
}