Compare commits
No commits in common. "51176b0aa31e461d289ae4c075fb0a04461c86d1" and "2543cd8e55da77841e17c2af736148762f50d75a" have entirely different histories.
51176b0aa3
...
2543cd8e55
56
game.go
56
game.go
@ -3,7 +3,6 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"math/rand"
|
|
||||||
|
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
)
|
)
|
||||||
@ -13,22 +12,14 @@ func gameinit() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("Initilization error: ", err)
|
log.Fatalln("Initilization error: ", err)
|
||||||
}
|
}
|
||||||
go game.gameDirector()
|
go gameDirector(&game)
|
||||||
game.keyboardProcessor()
|
keyboardProcessor(&game)
|
||||||
|
|
||||||
// Quit the screen
|
// Quit the screen
|
||||||
quit(&game)
|
quit(&game)
|
||||||
|
|
||||||
// Give closure
|
// Give closure
|
||||||
if game.gameover == 1 {
|
fmt.Println("You get rekt lol.")
|
||||||
fmt.Println("You get rekt by a robot")
|
|
||||||
} else if game.gameover == 2 {
|
|
||||||
fmt.Println("You took the easy way out")
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("Score:", game.player.score)
|
|
||||||
fmt.Println("Moves:", game.player.moves)
|
|
||||||
fmt.Println("Teleports:", game.player.teleports)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,11 +47,9 @@ func initialize() (Game, error) {
|
|||||||
x: 40,
|
x: 40,
|
||||||
y: 12,
|
y: 12,
|
||||||
},
|
},
|
||||||
score: 0,
|
|
||||||
moves: 0,
|
moves: 0,
|
||||||
teleports: 0,
|
teleports: 0,
|
||||||
},
|
},
|
||||||
level: 1,
|
|
||||||
// robots: []Robot, // I need this maybe
|
// robots: []Robot, // I need this maybe
|
||||||
// trash: []Position, // I will need this
|
// trash: []Position, // I will need this
|
||||||
gameover: 0,
|
gameover: 0,
|
||||||
@ -69,7 +58,7 @@ func initialize() (Game, error) {
|
|||||||
return game, err
|
return game, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (game *Game) gameDirector() {
|
func gameDirector(game *Game) {
|
||||||
defer quit(game)
|
defer quit(game)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
@ -78,15 +67,11 @@ func (game *Game) gameDirector() {
|
|||||||
game.screen.Clear()
|
game.screen.Clear()
|
||||||
|
|
||||||
// Draw starter conditions
|
// Draw starter conditions
|
||||||
game.drawBox()
|
game.drawBox(game)
|
||||||
game.drawPlayer()
|
game.drawPlayer(game)
|
||||||
game.drawCoords()
|
game.drawCoords(game)
|
||||||
|
|
||||||
// Draw robots??
|
// Draw robots??
|
||||||
if len(game.robots) == 0 {
|
|
||||||
game.initRobots()
|
|
||||||
}
|
|
||||||
game.drawRobots()
|
|
||||||
|
|
||||||
// Draw the screen
|
// Draw the screen
|
||||||
game.screen.Show()
|
game.screen.Show()
|
||||||
@ -98,7 +83,7 @@ func (game *Game) gameDirector() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (game *Game) keyboardProcessor() {
|
func keyboardProcessor(game *Game) {
|
||||||
defer close(game.keypresses)
|
defer close(game.keypresses)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
@ -111,7 +96,6 @@ func (game *Game) keyboardProcessor() {
|
|||||||
case *tcell.EventKey:
|
case *tcell.EventKey:
|
||||||
// Keys to bug out
|
// Keys to bug out
|
||||||
if ev.Key() == tcell.KeyEscape || ev.Key() == tcell.KeyCtrlC {
|
if ev.Key() == tcell.KeyEscape || ev.Key() == tcell.KeyCtrlC {
|
||||||
game.gameover = 2
|
|
||||||
return
|
return
|
||||||
|
|
||||||
// Screen management
|
// Screen management
|
||||||
@ -141,32 +125,18 @@ func (game *Game) keyboardProcessor() {
|
|||||||
game.keypresses <- teleport
|
game.keypresses <- teleport
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if game.gameover != 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func quit(game *Game) {
|
func quit(game *Game) {
|
||||||
game.screen.Clear()
|
|
||||||
maybePanic := recover()
|
maybePanic := recover()
|
||||||
game.screen.Fini()
|
game.screen.Fini()
|
||||||
if maybePanic != nil {
|
if maybePanic != nil {
|
||||||
panic(maybePanic)
|
panic(maybePanic)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (game *Game) randPos() Position {
|
|
||||||
var safe bool
|
|
||||||
var pos Position
|
|
||||||
|
|
||||||
for !safe {
|
|
||||||
x := rand.Intn(80)
|
|
||||||
y := rand.Intn(24)
|
|
||||||
|
|
||||||
if x == 0 || x == 79 || y == 0 || y == 23 {
|
|
||||||
safe = false
|
|
||||||
} else {
|
|
||||||
pos = Position{x: x, y: y}
|
|
||||||
safe = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pos
|
|
||||||
}
|
|
||||||
|
25
player.go
25
player.go
@ -2,7 +2,7 @@ package main
|
|||||||
|
|
||||||
import "math/rand"
|
import "math/rand"
|
||||||
|
|
||||||
func (game *Game) drawPlayer() {
|
func (g *Game) drawPlayer(game *Game) {
|
||||||
game.screen.SetContent(game.player.position.x, game.player.position.y, '@', nil, game.style)
|
game.screen.SetContent(game.player.position.x, game.player.position.y, '@', nil, game.style)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10,65 +10,46 @@ func (g *Game) movePlayer(game *Game, press int) {
|
|||||||
if press == Left {
|
if press == Left {
|
||||||
if game.player.position.x != 2 {
|
if game.player.position.x != 2 {
|
||||||
game.player.position.x--
|
game.player.position.x--
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == Right {
|
} else if press == Right {
|
||||||
if game.player.position.x != 78 {
|
if game.player.position.x != 78 {
|
||||||
game.player.position.x++
|
game.player.position.x++
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == Up {
|
} else if press == Up {
|
||||||
if game.player.position.y != 1 {
|
if game.player.position.y != 1 {
|
||||||
game.player.position.y--
|
game.player.position.y--
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == Down {
|
} else if press == Down {
|
||||||
if game.player.position.y != 22 {
|
if game.player.position.y != 22 {
|
||||||
game.player.position.y++
|
game.player.position.y++
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == upleft {
|
} else if press == upleft {
|
||||||
if game.player.position.x != 2 && game.player.position.y != 1 {
|
if game.player.position.x != 2 && game.player.position.y != 1 {
|
||||||
game.player.position.x--
|
game.player.position.x--
|
||||||
game.player.position.y--
|
game.player.position.y--
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == upright {
|
} else if press == upright {
|
||||||
if game.player.position.x != 78 && game.player.position.y != 1 {
|
if game.player.position.x != 78 && game.player.position.y != 1 {
|
||||||
game.player.position.x++
|
game.player.position.x++
|
||||||
game.player.position.y--
|
game.player.position.y--
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == downright {
|
} else if press == downright {
|
||||||
if game.player.position.x != 78 && game.player.position.y != 22 {
|
if game.player.position.x != 78 && game.player.position.y != 22 {
|
||||||
game.player.position.x++
|
game.player.position.x++
|
||||||
game.player.position.y++
|
game.player.position.y++
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == downleft {
|
} else if press == downleft {
|
||||||
if game.player.position.x != 2 && game.player.position.y != 22 {
|
if game.player.position.x != 2 && game.player.position.y != 22 {
|
||||||
game.player.position.x--
|
game.player.position.x--
|
||||||
game.player.position.y++
|
game.player.position.y++
|
||||||
game.player.moves++
|
|
||||||
}
|
}
|
||||||
} else if press == teleport {
|
} else if press == teleport {
|
||||||
game.teleport()
|
game.teleport(game)
|
||||||
game.player.teleports++
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (game *Game) teleport() {
|
func (g *Game) teleport(game *Game) {
|
||||||
// Draw something nice
|
// Draw something nice
|
||||||
game.player.position.x = rand.Intn(80)
|
game.player.position.x = rand.Intn(80)
|
||||||
game.player.position.y = rand.Intn(24)
|
game.player.position.y = rand.Intn(24)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (game *Game) onPlayer(pos Position) bool {
|
|
||||||
var onPlayer bool
|
|
||||||
if pos.x == game.player.position.x && pos.y == game.player.position.y {
|
|
||||||
onPlayer = true
|
|
||||||
} else {
|
|
||||||
onPlayer = false
|
|
||||||
}
|
|
||||||
return onPlayer
|
|
||||||
}
|
|
||||||
|
14
render.go
14
render.go
@ -3,14 +3,20 @@ package main
|
|||||||
import "strconv"
|
import "strconv"
|
||||||
|
|
||||||
// drawBox Draw the outline of the box the snake can move in
|
// drawBox Draw the outline of the box the snake can move in
|
||||||
func (game *Game) drawBox() {
|
func (g *Game) drawBox(game *Game) {
|
||||||
|
|
||||||
// Assuming we will always have this
|
|
||||||
x1 := 0
|
x1 := 0
|
||||||
y1 := 0
|
y1 := 0
|
||||||
x2 := 79
|
x2 := 79
|
||||||
y2 := 23
|
y2 := 23
|
||||||
|
|
||||||
|
if y2 < y1 {
|
||||||
|
y1, y2 = y2, y1
|
||||||
|
}
|
||||||
|
if x2 < x1 {
|
||||||
|
x1, x2 = x2, x1
|
||||||
|
}
|
||||||
|
|
||||||
// Fill background
|
// Fill background
|
||||||
for row := y1; row <= y2; row++ {
|
for row := y1; row <= y2; row++ {
|
||||||
for col := x1; col <= x2; col++ {
|
for col := x1; col <= x2; col++ {
|
||||||
@ -38,8 +44,8 @@ func (game *Game) drawBox() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// drawCoords Print the coordinates of the player
|
// drawCoords Print the coordinates of the head of the snake
|
||||||
func (game *Game) drawCoords() {
|
func (g *Game) drawCoords(game *Game) {
|
||||||
var x, y int = 25, 24
|
var x, y int = 25, 24
|
||||||
for _, r := range []rune("[ x:" + strconv.FormatInt(int64(game.player.position.x), 10) + " y: " + strconv.FormatInt(int64(game.player.position.y), 10) + " ]") {
|
for _, r := range []rune("[ x:" + strconv.FormatInt(int64(game.player.position.x), 10) + " y: " + strconv.FormatInt(int64(game.player.position.y), 10) + " ]") {
|
||||||
game.screen.SetContent(x, y-1, r, nil, game.style)
|
game.screen.SetContent(x, y-1, r, nil, game.style)
|
||||||
|
33
robots.go
33
robots.go
@ -1,34 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "fmt"
|
func drawRobot(game *Game) {
|
||||||
|
game.screen.SetContent(game.player.position.x, game.player.position.y, '+', nil, game.style)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, r := range game.robots {
|
func drawTrash(game *Game) {
|
||||||
fmt.Println("xy", r.x, r.y)
|
game.screen.SetContent(game.player.position.x, game.player.position.y, '*', nil, game.style)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (game *Game) drawRobots() {
|
|
||||||
for _, r := range game.robots {
|
|
||||||
game.screen.SetContent(r.x, r.y, '+', nil, game.style)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (game *Game) drawTrash() {
|
|
||||||
for _, t := range game.trash {
|
|
||||||
game.screen.SetContent(t.x, t.y, '*', nil, game.style)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
4
types.go
4
types.go
@ -21,7 +21,6 @@ type Position struct {
|
|||||||
|
|
||||||
type Player struct {
|
type Player struct {
|
||||||
position Position
|
position Position
|
||||||
score int
|
|
||||||
moves int
|
moves int
|
||||||
teleports int
|
teleports int
|
||||||
}
|
}
|
||||||
@ -35,8 +34,7 @@ type Game struct {
|
|||||||
style tcell.Style
|
style tcell.Style
|
||||||
keypresses chan int
|
keypresses chan int
|
||||||
player Player
|
player Player
|
||||||
level int
|
robots []Robot
|
||||||
robots []Position
|
|
||||||
trash []Position
|
trash []Position
|
||||||
gameover int
|
gameover int
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user