battleship-cli/game.go

132 lines
2.8 KiB
Go
Raw Normal View History

package main
import (
"fmt"
"math/rand/v2"
"os"
)
var (
hiddenShips1 [][]string
revealedShips1 [][]string
)
func fillShips(tiles int) {
hiddenShips1 = make([][]string, tiles)
revealedShips1 = make([][]string, tiles)
for i := 0; i < tiles; i++ {
hiddenShips1[i] = make([]string, tiles)
revealedShips1[i] = make([]string, tiles)
}
for i := 0; i < len(revealedShips1); i++ {
for i1 := range revealedShips1[i] {
shipChance := rand.IntN(3-0) + 0
if shipChance == 1 {
revealedShips1[i][i1] = "S"
} else {
revealedShips1[i][i1] = "_"
}
}
}
for i := 0; i < len(hiddenShips1); i++ {
for i1 := range hiddenShips1[i] {
hiddenShips1[i][i1] = "_"
}
}
}
func game() {
fmt.Printf("How many rows/columns would you like to have?\nChoice: ")
var shipNum int
fmt.Scanln(&shipNum)
clear()
fillShips(shipNum)
fmt.Println("Player 1 (You):")
//fillMatrix(PLAYER1_REAL_MATRIX)
showMatrix(revealedShips1)
fmt.Println()
showMatrix(hiddenShips1)
os.Exit(0)
}
func showMatrix(mat [][]string) {
for i := 0; i < len(mat); i++ {
for _, v := range mat[i] {
fmt.Printf("%v ", v)
}
fmt.Println()
}
}
func fillMatrix(mat [][]string) {
for i := 0; i < len(mat); i++ {
for i1 := range mat[i] {
shipChance := rand.IntN(3-0) + 0
if shipChance == 1 {
mat[i][i1] = "S"
} else {
mat[i][i1] = "_"
}
}
}
}
// Trash zone:
// func gameStatus(player1 [][]string, player2 [][]string) {
// fmt.Println("Player 1 (You):")
// fillMatrix(PLAYER1_REAL_MATRIX)
// showMatrix(PLAYER1_REAL_MATRIX)
// fmt.Println()
// showMatrix(PLAYER1_HIDDEN_MATRIX)
// fmt.Printf("\n\n")
// fmt.Println("Player 2:")
// fillMatrix(PLAYER2_REAL_MATRIX)
// showMatrix(PLAYER2_REAL_MATRIX)
// fmt.Println()
// showMatrix(PLAYER2_HIDDEN_MATRIX)
//
// }
// PLAYER1_REAL_MATRIX := [][]string{
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// }
// Holy hell this is a MUCH better way to initialize matrixes
// PLAYER1_REAL_MATRIX := make([][]string, 5)
// for i := 0; i < 5; i++ {
// PLAYER1_REAL_MATRIX[i] = make([]string, 5)
// }
//PLAYER1_HIDDEN_MATRIX := PLAYER1_REAL_MATRIX
// PLAYER1_HIDDEN_MATRIX := make([][]string, len(PLAYER1_REAL_MATRIX))
// copy(PLAYER1_HIDDEN_MATRIX, PLAYER1_REAL_MATRIX)
// PLAYER2_REAL_MATRIX := [][]string{
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// {"x", "x", "x", "x", "x", "x"},
// }
//
// PLAYER2_HIDDEN_MATRIX := PLAYER2_REAL_MATRIX
// Forget it, I'm just going to implement a single player for now
// for {
//
// fmt.Scanln()
// }