Jogo de Maior ou Menor - Duvida sobre melhorias no script
Página 1 de 1
Jogo de Maior ou Menor - Duvida sobre melhorias no script
Prezados,
Fiz um joguinho simples de maior ou menor, pois, tenho dificuldade com programação, estou aprendendo ainda...
Ele funciona assim... clica no botão maior e menor e a carta é virada e ela também fica guardada na posição abaixo respectiva...
Como o baralho são 4 naipes, ele precisa passar por todos eles para ganhar... E acertar das 5 tentativas, pelo menos 3 para avançar para o próximo naipe...
O jogo é só a tela inicial para desbloquear a fase real depois...
Gostaria de se possível, vissem e me dessem um feedback sobre a possibilidade de usar loop para diminuição de código ou outras melhorias estruturais e de elegância para o código... O código vai comentado...
A imagem da tela do jogo é essa:
https://uploaddeimagens.com.br/imagens/telajogomaior_ou_menor-png
O código é:
Agradeço...
Fiz um joguinho simples de maior ou menor, pois, tenho dificuldade com programação, estou aprendendo ainda...
Ele funciona assim... clica no botão maior e menor e a carta é virada e ela também fica guardada na posição abaixo respectiva...
Como o baralho são 4 naipes, ele precisa passar por todos eles para ganhar... E acertar das 5 tentativas, pelo menos 3 para avançar para o próximo naipe...
O jogo é só a tela inicial para desbloquear a fase real depois...
Gostaria de se possível, vissem e me dessem um feedback sobre a possibilidade de usar loop para diminuição de código ou outras melhorias estruturais e de elegância para o código... O código vai comentado...
A imagem da tela do jogo é essa:
https://uploaddeimagens.com.br/imagens/telajogomaior_ou_menor-png
O código é:
- Código:
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class NumeroMaiorOuMenor : MonoBehaviour
{
public int cartaAleatoria; //numero aleatorio gerado
public int cartaAleatoriaFalsa, idCartaClone; //referencia para mudar sprite da carta da mesa e das 5 cartas que saíram
public int pontos = 0; //pontos do jogador
private int tentativas = 5; //total de tentativas
public Button[] botoes; //botoes de maior e menor
public GameObject verso, anverso, botaoTarefas, mainCamera, carta5; //verso e anverso da carta da mesa *botao que contem todo esse jogo e deixá-lo falso *usar script anexado a camera *carta 5 que está sobre a mesa
public GameObject[] baralhoSaiu, naipeMostrar; //as cartas embaixo que sairam *naipe embaixo para mostrar os que já venceu
public TextMeshPro textoNumeroAleatorio, textoQuestoes, textoPontos; //textoNumeroAleatorio para teste *textoQuestoes e dos Pontos para visualizacao pelo jogador
public int idPergunta, idNaipe; //referencia para o número da pergunta *referencia para mudar o naipe embaixo
public Sprite[] cartaOuro, cartaEspadas, cartaCopas, cartaPaus; //os sprites das cartas anexadas no inspector, por naipe
public AudioSource[] som; //som de erro e acerto
public bool venceuDesafio = false;
void Start()
{
if (PlayerPrefs.HasKey("JogoMaiorQueCinco")) //para quando ele vencer esse desafio e ele abre o scene, ele não tenha que responder de novo
{
mainCamera.GetComponent<AtivarDesativarObjeto>().Desativar(); //o script de desativa este desafio está na camera
}
idPergunta = 1; //referencia de valores de inicio
idNaipe = 0; //referencia de valores de inicio
idCartaClone = 0; //referencia de valores de inicio
GerarCartaAleatoria(); //vai gerar um numero aleatorio
}
private void Update()
{
textoQuestoes.text = "Questão " + idPergunta + " de " + tentativas;//durante o jogo havera as mudancas nos valores das questoes e pontos
textoPontos.text = "Pontos: " + pontos;
anverso.GetComponent<SpriteRenderer>().sprite = cartaOuro[cartaAleatoriaFalsa];//o sprite da carta na mesa muda
CartasMostrar(); //os sprites dos naipes vao mudando a medida que vai progredindo e vencendo cada naipe... vao substituindo sempre os sprites do cartaOuro
carta5.GetComponent<SpriteRenderer>().sprite = cartaOuro[4];//o naipe do 5 da carta na mesa muda
}
public void GerarCartaAleatoria()
{
cartaAleatoria = Random.Range(1, 10); //gera os numero de 1 a 9, referente as cartas que estao anexadas no Inspector
if (cartaAleatoria == 5) //como não coloquei o IGUAL A 5, estou excluindo ele e fazendo com que gere uma nova cartaAleatoria
{
Debug.Log("Deu Cinco... que Incrível!!!");//só pra saber quando deu 5
idCartaClone = idCartaClone - 1; //foi necessário pq quando saia 5, a referencia do baralhoSaiu sempre pulava uma carta pq ele entendia assim
GerarCartaAleatoria();
}
cartaAleatoriaFalsa = cartaAleatoria - 1; //o numeroAleatorioFalse foi necessario para que o sprite correto tanto no baralhoSaiu qt o naipeMostrar
textoNumeroAleatorio.text = "" + cartaAleatoria; //o texto para o teste do numeroAleatorio
idCartaClone = idCartaClone + 1; //referencia da cartaClone embaixo
}
public void MenorQueCinco() //se clicar maior que cinco, add pontos, tem um sonzinho, desativar o verso para mostrar a cartaAleatoria na mesa e uma das 5 embaixo, e invoka a funcao para saber se o numero da pergunta é maior que o número de questoes
{
if (cartaAleatoria < 5)
{
som[0].Play();
pontos++;
verso.SetActive(false);
CartasSairam();
Invoke("ProxNumAleatorio", 1);
}
else
{
som[1].Play();
verso.SetActive(false);
CartasSairam();
Invoke("ProxNumAleatorio", 1);
}
}
public void MaiorQueCinco()//tal qual o anterior
{
if (cartaAleatoria > 5)
{
som[0].Play();
pontos++;
verso.SetActive(false);
CartasSairam();
Invoke("ProxNumAleatorio", 1);
}
else
{
som[1].Play();
verso.SetActive(false);
CartasSairam();
Invoke("ProxNumAleatorio", 1);
}
}
void FuncaoNaipe()//é chamada na funcao ProxCartaAleatoria para atualizar os valores e as cartas da mesa, além de gerar outra carta aleatoria, se tiver pelo menos 3 acertos
{
pontos = 0;
idPergunta = 1;
idNaipe += 1;
idCartaClone = 0;
CartasMostrar();
CartasSairamVoltar();
GerarCartaAleatoria();
}
void FuncaoPerdeuNaipe()//é chamada na funcao ProxCartaAleatoria para atualizar os valores e as cartas da mesa, além de gerar outra carta aleatoria, se tiver menos de 3 acertos
{
pontos = 0;
idPergunta = 1;
idCartaClone = 0;
CartasSairamVoltar();
GerarCartaAleatoria();
}
void CartasSairam()//add o sprite da carta que saiu ao local de referencia no Inspector
{
if (idCartaClone == 1)
{
baralhoSaiu[0].GetComponent<SpriteRenderer>().sprite = cartaOuro[cartaAleatoriaFalsa];
}
if (idCartaClone == 2)
{
baralhoSaiu[1].GetComponent<SpriteRenderer>().sprite = cartaOuro[cartaAleatoriaFalsa];
}
if (idCartaClone == 3)
{
baralhoSaiu[2].GetComponent<SpriteRenderer>().sprite = cartaOuro[cartaAleatoriaFalsa];
}
if (idCartaClone == 4)
{
baralhoSaiu[3].GetComponent<SpriteRenderer>().sprite = cartaOuro[cartaAleatoriaFalsa];
}
if (idCartaClone == 5)
{
baralhoSaiu[4].GetComponent<SpriteRenderer>().sprite = cartaOuro[cartaAleatoriaFalsa];
}
}
void CartasSairamVoltar()//ao concluir as 5 tentativas, ele volta o verso novamente
{
foreach (GameObject baralho in baralhoSaiu)
{
baralho.GetComponent<SpriteRenderer>().sprite = verso.GetComponent<SpriteRenderer>().sprite;
}
}
void CartasMostrar()//mostra qual naipe o jogador ja venceu, sao os 4 que estao embaixo
{
if (idNaipe == 1)
{
naipeMostrar[1].SetActive(false);
cartaOuro = cartaEspadas;
}
if (idNaipe == 2)
{
naipeMostrar[2].SetActive(false);
cartaOuro = cartaCopas;
}
if (idNaipe == 3)
{
naipeMostrar[3].SetActive(false);
cartaOuro = cartaPaus;
}
}
void ProxCartaAleatoria()//verificar se a pergunta é maior que as tentativas e entao define as funcoes a serem executadas
{
verso.SetActive(true);
idPergunta += 1;
if (idPergunta > tentativas)
{
if (idNaipe == 0 && pontos > 2)
{
Debug.Log("Voce venceu Copas");
FuncaoNaipe();
}
else if (idNaipe == 1 && pontos > 2)
{
Debug.Log("Voce venceu Espadas");
FuncaoNaipe();
}
else if (idNaipe == 2 && pontos > 2)
{
Debug.Log("Voce venceu Ouro");
FuncaoNaipe();
}
else if (idNaipe == 3 && pontos > 2)
{
Debug.Log("Voce venceu Paus");
PlayerPrefs.SetInt("JogoMaiorQueCinco", 0);
botaoTarefas.GetComponent<AtivarDesativarObjeto>().Desativar();
}
else
{
FuncaoPerdeuNaipe();
}
}
else
{
GerarCartaAleatoria();
Debug.Log("Gerou outro numero aleatorio");
}
}
}
Agradeço...
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Re: Jogo de Maior ou Menor - Duvida sobre melhorias no script
https://uploaddeimagens.com.br/imagens/telajogomaiormenorinspector-png
Esse é o Inspector do jogo
Esse é o Inspector do jogo
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Re: Jogo de Maior ou Menor - Duvida sobre melhorias no script
Ah... teve umas variáveis que mudei o nome de última hora... no Invoke da função MenorQueCinco... ela vai para a função ProxCartaAleatoria...
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» [DÚVIDA] Dúvida sobre script e rigidbody
» Duvida sobre script
» Duvida sobre um script de contagem 1, 2, 3, GO!.
» Duvida sobre deixar jogo online.
» Dúvida sobre jogo android...
» Duvida sobre script
» Duvida sobre um script de contagem 1, 2, 3, GO!.
» Duvida sobre deixar jogo online.
» Dúvida sobre jogo android...
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos