Script para sistema de genética
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Script para sistema de genética
Olá, pessoal!
Acabei de ver no Youtube os tutoriais de C# do Marcos Schultz. Eu só sei o que aprendi lá e agradeço a ele por isso.
Não quero me alongar muito. Posso explicar melhor depois, se alguém quiser.
O que eu preciso é de um sistema de genética.
Cada característica do animal (galinhas, no meu caso) será definida por dois pares de alelo, no qual o número de alelos dominantes (maiúscula) determinam a cor.
Ex: Par1 é A ou a. Par2 é B ou b.
Cor do corpo = AaBB (3 dominantes).
Dúvida:
Alguém já fez ou conhece algum jogo que tem algo parecido?
Acabei de ver no Youtube os tutoriais de C# do Marcos Schultz. Eu só sei o que aprendi lá e agradeço a ele por isso.
Não quero me alongar muito. Posso explicar melhor depois, se alguém quiser.
O que eu preciso é de um sistema de genética.
Cada característica do animal (galinhas, no meu caso) será definida por dois pares de alelo, no qual o número de alelos dominantes (maiúscula) determinam a cor.
Ex: Par1 é A ou a. Par2 é B ou b.
Cor do corpo = AaBB (3 dominantes).
Dúvida:
Alguém já fez ou conhece algum jogo que tem algo parecido?
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Script para sistema de genética
Fiz um script para definir aleatoriamente os genes das primeiras aves.
As próximas aves vão receber os genes dos pais.
O script está gigante. Alguém sabe como otimizá-lo?
Ainda não não pensei em como continuar programando o jogo.
Segue script:
public int numeroAlelo1, numeroAlelo2, numeroAlelo3, numeroAlelo4;
public string gene1, gene2, gene3, gene4;
public string geneCompleto;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
numeroAlelo1 = Random.Range(1, 3);
if (numeroAlelo1 == 1)
{
gene1 = "A";
}
if (numeroAlelo1 == 2)
{
gene1 = "a";
}
numeroAlelo2 = Random.Range(1, 3);
if (numeroAlelo2 == 1)
{
gene2 = "A";
}
if (numeroAlelo2 == 2)
{
gene2 = "a";
}
numeroAlelo3 = Random.Range(3, 5);
if (numeroAlelo3 == 3)
{
gene3 = "B";
}
if (numeroAlelo3 == 4)
{
gene3 = "b";
}
numeroAlelo4 = Random.Range(3, 5);
if (numeroAlelo4 == 3)
{
gene4 = "B";
}
if (numeroAlelo4 == 4)
{
gene4 = "b";
}
}
if (numeroAlelo2 == 1 || numeroAlelo4 == 3)
{
if (numeroAlelo2 == 1)
{
geneCompleto = gene2 + gene1 + gene3 + gene4;
}
if (numeroAlelo4 == 3)
{
geneCompleto = gene1 + gene2 + gene4 + gene3;
}
if (numeroAlelo2 == 1 && numeroAlelo4 == 3)
{
geneCompleto = gene2 + gene1 + gene4 + gene3;
}
}
else
{
geneCompleto = gene1 + gene2 + gene3 + gene4;
}
}
}
As próximas aves vão receber os genes dos pais.
O script está gigante. Alguém sabe como otimizá-lo?
Ainda não não pensei em como continuar programando o jogo.
Segue script:
public int numeroAlelo1, numeroAlelo2, numeroAlelo3, numeroAlelo4;
public string gene1, gene2, gene3, gene4;
public string geneCompleto;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
numeroAlelo1 = Random.Range(1, 3);
if (numeroAlelo1 == 1)
{
gene1 = "A";
}
if (numeroAlelo1 == 2)
{
gene1 = "a";
}
numeroAlelo2 = Random.Range(1, 3);
if (numeroAlelo2 == 1)
{
gene2 = "A";
}
if (numeroAlelo2 == 2)
{
gene2 = "a";
}
numeroAlelo3 = Random.Range(3, 5);
if (numeroAlelo3 == 3)
{
gene3 = "B";
}
if (numeroAlelo3 == 4)
{
gene3 = "b";
}
numeroAlelo4 = Random.Range(3, 5);
if (numeroAlelo4 == 3)
{
gene4 = "B";
}
if (numeroAlelo4 == 4)
{
gene4 = "b";
}
}
if (numeroAlelo2 == 1 || numeroAlelo4 == 3)
{
if (numeroAlelo2 == 1)
{
geneCompleto = gene2 + gene1 + gene3 + gene4;
}
if (numeroAlelo4 == 3)
{
geneCompleto = gene1 + gene2 + gene4 + gene3;
}
if (numeroAlelo2 == 1 && numeroAlelo4 == 3)
{
geneCompleto = gene2 + gene1 + gene4 + gene3;
}
}
else
{
geneCompleto = gene1 + gene2 + gene3 + gene4;
}
}
}
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Script para sistema de genética
Outra dúvida:
Existe alguma forma eficiente de reconhecer letras maiúsculas?
Como posso fazer isso?
Obrigado!
Existe alguma forma eficiente de reconhecer letras maiúsculas?
Como posso fazer isso?
Obrigado!
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Script para sistema de genética
cara acho que esta faltando alguma informação nesse tópico esta meio vago, oque você que algo parecido com isso ?
para checar se a letra e maiúscula ou não você vai ter que converte a string em char ou usar diretamente um char ou pegar um indexe da string que corresponde a um char
para checar se a letra e maiúscula ou não você vai ter que converte a string em char ou usar diretamente um char ou pegar um indexe da string que corresponde a um char
- Código:
string s = "A";
if (System.Char.IsUpper(s[0]))
print("IsUpper"); //e maiúsculas
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Script para sistema de genética
Vou explicar mais detalhadamente então. Quero fazer um jogo de gerenciamento de uma granja e que envolve genética.
As aves terão algumas característica (peso, quantidade de ovos que bota etc.), mas quero focar agora nas cores.
Será uma cor para cabeça, uma para o corpo e outra para a cauda. Existem 5 cores (vermelho, marrom, branco, cinza e preto) e elas serão definidas para cada uma das partes da ave por 2 pares de alelos.
Vermelho: 0 dominante
Marrom: 1 dominante
Branco: 2 dominantes
Cinza: 3 dominantes
Preto: 4 dominantes
- Ex: Cor da cabeça: AaBb.
A cor da cabeça será o branco porque tem 2 dominantes (maiúsculas).
- Ex: Cor do corpo: aaBb.
A cor da corpo será o marrom porque tem 1 dominante (maiúscula).
O que eu preciso é que o script reconheça quantas maiúsculas há em cada característica para então definir a cor.
Depois, na reprodução, vou precisar que o alelos dos pais passem para os filhos. O filho vai receber por sorteio, para cara parte, 1 alelo do tipo "A" do pai e 1 da mãe. 1 do tipo "B" do pai e 1 da mãe. Ainda não pensei em como fazer isso.
Dúvidas:
Obrigado.
As aves terão algumas característica (peso, quantidade de ovos que bota etc.), mas quero focar agora nas cores.
Será uma cor para cabeça, uma para o corpo e outra para a cauda. Existem 5 cores (vermelho, marrom, branco, cinza e preto) e elas serão definidas para cada uma das partes da ave por 2 pares de alelos.
Vermelho: 0 dominante
Marrom: 1 dominante
Branco: 2 dominantes
Cinza: 3 dominantes
Preto: 4 dominantes
- Ex: Cor da cabeça: AaBb.
A cor da cabeça será o branco porque tem 2 dominantes (maiúsculas).
- Ex: Cor do corpo: aaBb.
A cor da corpo será o marrom porque tem 1 dominante (maiúscula).
O que eu preciso é que o script reconheça quantas maiúsculas há em cada característica para então definir a cor.
Depois, na reprodução, vou precisar que o alelos dos pais passem para os filhos. O filho vai receber por sorteio, para cara parte, 1 alelo do tipo "A" do pai e 1 da mãe. 1 do tipo "B" do pai e 1 da mãe. Ainda não pensei em como fazer isso.
Dúvidas:
- Acho que dá pra fazer com if, mas tem como ser mais simples e eficaz?
- Alguém poderia me indicar onde posso aprender mais sobre C#?
- Alguém conhece algum jogo que tem algo parecido com isso (genética)?
Obrigado.
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Script para sistema de genética
para chegar quantas Letras minusculas ou maiúsculas tem na string você usar foreach, for, ou pesquisar em linq, por que uma string basicamente e um array de char então você pode acessar cada índice.
livros para aprende C# Use a cabeça # e Como Programar - Deitel qualquer edição se possível as mais recente.
sites legais www.macoratti.net/ [url=msdn.microsoft.com/pt-BR/library/kx37x362.aspx]msdn.microsoft.com/pt-BR/library/kx37x362.aspx[/url]
livros para aprende C# Use a cabeça # e Como Programar - Deitel qualquer edição se possível as mais recente.
sites legais www.macoratti.net/ [url=msdn.microsoft.com/pt-BR/library/kx37x362.aspx]msdn.microsoft.com/pt-BR/library/kx37x362.aspx[/url]
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Script para sistema de genética
deitel e muito bom tenho um aqui muito esplicativo.
Aqui um site gratis melhor do brasil em cursos de c#
Aqui um site gratis melhor do brasil em cursos de c#
Click Aqui
Última edição por DuViDoSo34 em Seg Abr 24, 2017 8:59 pm, editado 1 vez(es) (Motivo da edição : O o gaaaas)
Re: Script para sistema de genética
Valeu pela resposta, pessoal.
Estou usando o Char.IsUpper para contar o número de maiúscula. Está funcionando.
Já avancei bastante.
Já consigo fazer os filhos herdarem as características dos pais. Porém, para isso eu tenho que arrastar os GameObjects (pai e mãe) para o script no Inspector do filho.
Dúvidas:
Como faço para setar um GameObject clicando na tela do jogo?
Dá para fazer isso com qualquer GameObject ou ele precisa ter um botão?
Alguém sabe um vídeo que ensine isso?
Por exemplo, quero clicar em um galo, depois em uma galinha, depois no botão "Reproduzir". E vai nascer um pintinho. Quero saber como faço para que esse galo e essa galinha estejam nas variáveis GameObject pai e mae do script do pintinho.
Obrigado!
Estou usando o Char.IsUpper para contar o número de maiúscula. Está funcionando.
Já avancei bastante.
Já consigo fazer os filhos herdarem as características dos pais. Porém, para isso eu tenho que arrastar os GameObjects (pai e mãe) para o script no Inspector do filho.
Dúvidas:
Como faço para setar um GameObject clicando na tela do jogo?
Dá para fazer isso com qualquer GameObject ou ele precisa ter um botão?
Alguém sabe um vídeo que ensine isso?
Por exemplo, quero clicar em um galo, depois em uma galinha, depois no botão "Reproduzir". E vai nascer um pintinho. Quero saber como faço para que esse galo e essa galinha estejam nas variáveis GameObject pai e mae do script do pintinho.
Obrigado!
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Script para sistema de genética
Se os gameObjetcs tiverem colisores voce pode usar: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html
Re: Script para sistema de genética
Eu sou iniciante em programação, então não entendi muito bem o que tem que fazer.
Como faço para setar os gameobjects para essas variáveis apenas com o clique?
Qual é o comando para que a variável "pai" receba o gameobject em que eu clicar na hora do jogo?
Obrigado.
- Código:
public class ScriptFilho : MonoBehaviour {
public GameObject pai;
public GameObject mae;
Como faço para setar os gameobjects para essas variáveis apenas com o clique?
Qual é o comando para que a variável "pai" receba o gameobject em que eu clicar na hora do jogo?
Obrigado.
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Re: Script para sistema de genética
Tem umas 400 maneiras de fazer isto:
Da pra fazer com um raycast que sai da câmera e vai para a posição do Mouse:
Ai é só pegar o hit.gameObject;
você também pode utilizar a void OnMouseEnter, dentre outras coisas.
Da pra fazer com um raycast que sai da câmera e vai para a posição do Mouse:
Ai é só pegar o hit.gameObject;
você também pode utilizar a void OnMouseEnter, dentre outras coisas.
Re: Script para sistema de genética
Marcos, primeira coisa: obrigado!
Comecei a programar a poucos com que aprendi com seus tutoriais.
Eu já tinha desenvolvido um modo com tags e acho que funciona melhor assim.
Mas depois da sua resposta fui tentar com o Raycast e também consegui. Eu vou colocar aqui, porque pode ajudar mais alguém.
Algum moderador pode colocar o tópico com resolvido. Obrigado.
Comecei a programar a poucos com que aprendi com seus tutoriais.
Eu já tinha desenvolvido um modo com tags e acho que funciona melhor assim.
Mas depois da sua resposta fui tentar com o Raycast e também consegui. Eu vou colocar aqui, porque pode ajudar mais alguém.
- Código:
public class Raio : MonoBehaviour {
public GameObject oque;
public Camera Cam;
public Vector3 mouseClique;
void Update () {
if (Input.GetKeyDown(KeyCode.Mouse0))
{
RaycastHit hit;
Ray mouseRay = Cam.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(mouseRay, out hit))
{
Debug.Log("Está colidindo!");
oque = hit.transform.gameObject;
}
else
{
Debug.Log("Não está colidindo!");
}
}
}
Algum moderador pode colocar o tópico com resolvido. Obrigado.
JoelMJunior- MembroAvançado
- PONTOS : 2945
REPUTAÇÃO : 13
Respeito as regras :
Tópicos semelhantes
» Script para Sistema de Entregas e no final ganhar dinheiro
» [TUTORIAL] Unit Vida Inimigo e script para atacar- mesmo sistema usado em God Of War
» Como posso criar um sistema de pulo para esse script que determina a gravidade.
» Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
» Posso usar o sistema de marcas de derrapagem como base para outro sistema?
» [TUTORIAL] Unit Vida Inimigo e script para atacar- mesmo sistema usado em God Of War
» Como posso criar um sistema de pulo para esse script que determina a gravidade.
» Como criar sistema de Habilidades (Skills) para o personagem 2D / e sistema de batalha 2D
» Posso usar o sistema de marcas de derrapagem como base para outro sistema?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos