fixed gate overflow bug
This commit is contained in:
parent
0fdb836e82
commit
2b0ef1ac82
3 changed files with 6 additions and 9 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
|
bot.zip
|
||||||
|
|
||||||
# Created by https://www.gitignore.io/api/sbt,linux,scala,eclipse
|
# Created by https://www.gitignore.io/api/sbt,linux,scala,eclipse
|
||||||
|
|
||||||
|
|
|
@ -43,16 +43,17 @@ class Cortex {
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def mod(a: Int)(b: Int): Int = (a % b) + (if (a < 0) b else 0)
|
||||||
|
|
||||||
def getMaxDir(field: Field, directions: Seq[Direction], weightBoard: Array[Array[Int]], state: State): Direction = {
|
def getMaxDir(field: Field, directions: Seq[Direction], weightBoard: Array[Array[Int]], state: State): Direction = {
|
||||||
var maxDir: Direction = randomDirection(directions)
|
var maxDir: Direction = randomDirection(directions)
|
||||||
val board = state.board
|
val board = state.board
|
||||||
|
|
||||||
for (d <- directions){
|
for (d <- directions){
|
||||||
var (x,y) = (field.x+d.deltaX, field.y+d.deltaY)
|
var (x,y) = (mod (field.x+d.deltaX) (S.width), mod (field.y+d.deltaY) (S.width))
|
||||||
if ( d.equals(Left) && board(field.x)(field.y).citizens.contains(Gate("l")) ) x = S.width-1
|
var (maxX, maxY) = (mod (field.x+maxDir.deltaX) (S.width), mod (field.y+maxDir.deltaY) (S.width))
|
||||||
else if ( d.equals(Right) && board(field.x)(field.y).citizens.contains(Gate("r")) ) x = 0
|
|
||||||
|
|
||||||
if (weightBoard(x)(y) > weightBoard(field.x+maxDir.deltaX)(field.y+maxDir.deltaY)) maxDir = d
|
if (weightBoard(x)(y) > weightBoard(maxX)(maxY)) maxDir = d
|
||||||
}
|
}
|
||||||
|
|
||||||
maxDir
|
maxDir
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package bot
|
|
||||||
|
|
||||||
trait Extracted
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue