|
@@ -1,24 +1,18 @@
|
|
|
package main
|
|
package main
|
|
|
|
|
|
|
|
-import "fmt"
|
|
|
|
|
-
|
|
|
|
|
func (game *Game) initRobots() {
|
|
func (game *Game) initRobots() {
|
|
|
var fabricate int = game.level * 16
|
|
var fabricate int = game.level * 16
|
|
|
for i := 0; i < fabricate; i++ {
|
|
for i := 0; i < fabricate; i++ {
|
|
|
var found bool
|
|
var found bool
|
|
|
var rndPos Position
|
|
var rndPos Position
|
|
|
for !found {
|
|
for !found {
|
|
|
- rndPos := game.randPos()
|
|
|
|
|
|
|
+ rndPos = game.randPos()
|
|
|
if !game.onPlayer(rndPos) {
|
|
if !game.onPlayer(rndPos) {
|
|
|
found = true
|
|
found = true
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
game.robots = append(game.robots, rndPos)
|
|
game.robots = append(game.robots, rndPos)
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- for _, r := range game.robots {
|
|
|
|
|
- fmt.Println("xy", r.x, r.y)
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (game *Game) drawRobots() {
|
|
func (game *Game) drawRobots() {
|
|
@@ -27,8 +21,71 @@ func (game *Game) drawRobots() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (game *Game) drawTrash() {
|
|
|
|
|
- for _, t := range game.trash {
|
|
|
|
|
- game.screen.SetContent(t.x, t.y, '*', nil, game.style)
|
|
|
|
|
|
|
+func (game *Game) moveRobots() {
|
|
|
|
|
+ // Iterate through the robots
|
|
|
|
|
+ for i, r := range game.robots {
|
|
|
|
|
+
|
|
|
|
|
+ // Determine in which direction to go
|
|
|
|
|
+ if game.player.position.x < r.x {
|
|
|
|
|
+ game.robots[i].x--
|
|
|
|
|
+ } else if game.player.position.x > r.x {
|
|
|
|
|
+ game.robots[i].x++
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if game.player.position.y < r.y {
|
|
|
|
|
+ game.robots[i].y--
|
|
|
|
|
+ } else if game.player.position.y > r.y {
|
|
|
|
|
+ game.robots[i].y++
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // After all the moves, lets check if any of the rowboz collided with anything
|
|
|
|
|
+ for i, r := range game.robots {
|
|
|
|
|
+
|
|
|
|
|
+ // Check if it collides with anything.
|
|
|
|
|
+ if game.onPlayer(r) {
|
|
|
|
|
+ game.gameover = 1
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if game.onRobot(i, r) || game.onTrash(r) {
|
|
|
|
|
+
|
|
|
|
|
+ trash := r
|
|
|
|
|
+
|
|
|
|
|
+ // delete robot
|
|
|
|
|
+ game.deleteRobot(i)
|
|
|
|
|
+
|
|
|
|
|
+ // create trash
|
|
|
|
|
+ game.addTrash(trash)
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (game *Game) onRobot(index int, pos Position) bool {
|
|
|
|
|
+ var found bool
|
|
|
|
|
+ for i, r := range game.robots {
|
|
|
|
|
+ if index != i && pos.x == r.x && pos.y == r.y {
|
|
|
|
|
+ found = true
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return found
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// TODO: improve this
|
|
|
|
|
+func (game *Game) deleteRobot(robot int) {
|
|
|
|
|
+
|
|
|
|
|
+ var rowboz []Position
|
|
|
|
|
+
|
|
|
|
|
+ for i, r := range game.robots {
|
|
|
|
|
+ if robot != i {
|
|
|
|
|
+ rowboz = append(rowboz, r)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ game.robots = nil
|
|
|
|
|
+ game.robots = rowboz
|
|
|
|
|
+
|
|
|
}
|
|
}
|