| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package main
- func (game *Game) initRobots() {
- var fabricate int = game.level * 16
- for i := 0; i < fabricate; i++ {
- var found bool
- var rndPos Position
- for !found {
- rndPos = game.randPos()
- if !game.onPlayer(rndPos) {
- found = true
- }
- }
- game.robots = append(game.robots, rndPos)
- }
- }
- func (game *Game) drawRobots() {
- for _, r := range game.robots {
- game.screen.SetContent(r.x, r.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
- }
|