102 lines
1.9 KiB
Go
102 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"strings"
|
|
"wheel_of_fortune/internel/common"
|
|
)
|
|
|
|
func init() {
|
|
printMenu()
|
|
fmt.Println("Введите цифру:")
|
|
}
|
|
|
|
func printMenu() {
|
|
fmt.Println(`
|
|
Выберете пункт меню:
|
|
1. Новая игра
|
|
2. Загрузить игру
|
|
3. Сохранить игру
|
|
4. Выход
|
|
`)
|
|
}
|
|
|
|
func print_field(field string) {
|
|
for i := range field {
|
|
fmt.Print(string(field[i]), " ")
|
|
}
|
|
fmt.Println()
|
|
}
|
|
|
|
func gameEngine() {
|
|
storage := common.ReadDB()
|
|
fmt.Println(storage)
|
|
|
|
word := storage.Words[rand.Intn(len(storage.Words))]
|
|
|
|
fmt.Println(word)
|
|
|
|
var field string = strings.Repeat("_", len(word.Word))
|
|
|
|
print_field(field)
|
|
|
|
fmt.Println("Введите вашу букву: ")
|
|
|
|
var inputString string
|
|
|
|
var count_fail int = 3
|
|
|
|
for strings.Contains(field, "_") {
|
|
_, err := fmt.Scan(&inputString)
|
|
|
|
if err != nil || len(inputString) != 1 {
|
|
fmt.Println("Ошибка ввода")
|
|
return
|
|
}
|
|
|
|
char := inputString[0]
|
|
|
|
// strings.Contains(word.Word, string(char))
|
|
var isFound bool = false
|
|
for i := 0; i < len(word.Word); i++ {
|
|
if word.Word[i] == char {
|
|
field = field[:i] + string(char) + field[i+1:]
|
|
isFound = true
|
|
}
|
|
}
|
|
|
|
if !isFound {
|
|
count_fail--
|
|
fmt.Printf("Осталось %d попыток\n", count_fail)
|
|
}
|
|
|
|
if count_fail == 0 {
|
|
fmt.Println("Игра окончена")
|
|
return
|
|
}
|
|
|
|
print_field(field)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
var number int
|
|
fmt.Scanln(&number)
|
|
|
|
/*TODO: реализовать функции, добавить интрфейс сохранения,
|
|
загрузки, структуру, возможность возврата в меню в процессе игры*/
|
|
switch number {
|
|
case 1:
|
|
gameEngine()
|
|
case 2:
|
|
fmt.Println("load")
|
|
case 3:
|
|
fmt.Println("save")
|
|
case 4:
|
|
fmt.Println("exit")
|
|
default:
|
|
fmt.Println("Вы ввели несуществующий пункт меню")
|
|
}
|
|
}
|