viernes, 16 de diciembre de 2022

Juego de Serie en Go


Cuando quiero aprender un nuevo lenguaje desarrollo un juego de series, es decir aparece una serie con un valor faltante y el jugador debe completarlo.

Uno de los requerimientos no funcionales es que se pueda agregar una serie nueva fácilmente, para cumplirlo vamos a utilizar las ventajas de go.

Empecemos desarrollo de la serie, la serie tiene como responsabilidad generarse :

func IniciarSecuencia() [4]int {

rand.Seed(time.Now().Unix())

semilla := rand.Intn(3)

switch semilla {

case 0:

return generarSecuenciaPar()

case 1:

return generarSecuenciaInpar()

default:

return generarFibonacci()

}

}

Esta función genera la serie y para eso utiliza diferentes funciones que generan diferentes tipos de secuencias : 

import (
"math/rand"
"time"
)

func generarSecuenciaPar() [4]int {
var resultado [4]int
rand.Seed(time.Now().Unix())
semilla := rand.Intn(100)
for i := 0; i < 4; i++ {
resultado[i] = semilla + i*2
}
return resultado
}

func generarSecuenciaInpar() [4]int {
var resultado [4]int
rand.Seed(time.Now().Unix())
semilla := rand.Intn(100)
for i := 0; i < 4; i++ {
resultado[i] = semilla + i*2 + 1
}
return resultado
}

func generarFibonacci() [4]int {
var resultado [4]int
rand.Seed(time.Now().Unix())
semilla := rand.Intn(50)
for i := 0; i < 4; i++ {
if i < 2 {
resultado[i] = semilla
} else {
resultado[i] = resultado[i-1] + resultado[i-2]
}
}
return resultado
}

Y listo!! ahora en el main tenemos que llamar a esta función y ver si esta bien el resultado: 

package main

import (
"example/secuencia/secuencia/model"
"fmt"
"os"
)

func main() {

fmt.Println("------------- Bienvenido !! ----------------")

exit := 'Y'
puntaje := 0

for exit != 'N' {
secuencia := model.IniciarSecuencia()
for i := 0; i < len(secuencia); i++ {
if i != 2 {
fmt.Print(secuencia[i])
fmt.Print(" ")
} else {
fmt.Print("________  ")
}
}

fmt.Println()
fmt.Println("--------------------------")
fmt.Print(" Faltante :")

var nro int

n, err := fmt.Scanf("%d\n", &nro)
if err != nil {
fmt.Println(n, err)
os.Exit(n)
}

if nro == secuencia[2] {
fmt.Print(" Ganaste!! ")
puntaje++
} else {
fmt.Print(" Perdiste!! ")
puntaje--
}
fmt.Println(" Puntaje : ", puntaje)
fmt.Print(" Desea continuar jugando ? (Y/N) ")
fmt.Scanf("%c\n", &exit)
}

}

Y eso es todo a jugar se a dicho!!




No hay comentarios.:

Publicar un comentario