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