duvidas com OO C#
Galera,
e eu tenho uma classe que pega a posição de uma figura no form, gera um numero radomico e soma com essa posição e a mesma e atualizada no form, so que tem um problema quando vou fazer isso com 2 objetos, a minha classe que gera o numero radomico gera o mesmo numero para os 2 objetos porque?
vou deixar aqui o código do aplicativo
ALGUEM PODE ME AJUDAR?
e eu tenho uma classe que pega a posição de uma figura no form, gera um numero radomico e soma com essa posição e a mesma e atualizada no form, so que tem um problema quando vou fazer isso com 2 objetos, a minha classe que gera o numero radomico gera o mesmo numero para os 2 objetos porque?
vou deixar aqui o código do aplicativo
# CLASSE CAODECORRIDA using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace CorridaDeCaes { class CaoDeCorrida { public int posicaoInicial; // Onde a caixa de imagem inicia; public int tamanhoDaPista; public PictureBox minhaFigura = null; public int posicao; public Random radomico; int[] mover = { 1, 2, 3, 4,5,6,7,8,9,10,11,12,13,14,15 }; public bool Correr() { int andar = mover[radomico.Next(mover.Length)]; if (posicao < 314) { posicao = posicaoInicial; } else { posicao = posicao + andar; } if (posicao >= 712) { return true; } else { return false; } } } } #FORMULARIO DA CORRIDA using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; namespace CorridaDeCaes { public partial class Form1 : Form { CaoDeCorrida caoBob; CaoDeCorrida caoBilly; public Form1() { InitializeComponent(); caoBob = new CaoDeCorrida(); caoBilly = new CaoDeCorrida(); caoBob.posicaoInicial = 314; caoBob.minhaFigura = pictureBox2; caoBob.minhaFigura.Location = new Point(caoBob.posicaoInicial, 12); caoBob.radomico = new Random(); caoBilly.posicaoInicial = 314; caoBilly.minhaFigura = pictureBox3; caoBilly.minhaFigura.Location = new Point(caoBilly.posicaoInicial, 71); caoBilly.radomico = new Random(); } private void button1_Click(object sender, EventArgs e) { while(caoBob.minhaFigura.Location.X < 712 || caoBilly.minhaFigura.Location.X < 712 ) { caoBob.Correr(); // Ele gera o mesmo numero para os dois objetos int posicao1 = caoBob.posicao; caoBob.minhaFigura.Location = new Point(posicao1, 12); caoBilly.Correr(); // Ele gera o mesmo numero para os dois objetos int posicao2 = caoBilly.posicao; caoBilly.minhaFigura.Location = new Point(posicao2, 71); if (caoBob.Correr() == true || caoBilly.Correr() == true) { if (posicao1 >= 712) { MessageBox.Show("O cão vencedor foi: CÃO BOB! " ); } if (posicao2 >= 712) { MessageBox.Show("O cão vencedor foi: CÃO BOLLY! "); } } } } } }
ALGUEM PODE ME AJUDAR?
Renato Castro
Curtidas 0
Respostas
Vinicius Vieira
17/04/2011
Cara esse número randômico, leva em consideração alguns parâmetros para ser gerado que não sei dizer quais são, mas se estiverem iguais para os dois objetos quando você der o next vai retornar um número igual mesmo, ainda mais que o seu rol é pequeno, o ideal seria você fazer o seu algoritmo para gerar o número randômico um que leve em consideração um número de criação do objeto que você pode criar para gerar o número assim você garante que os parâmetros serão diferentes ao fazer a conta que gera seu número randômico.
GOSTEI 0