Array
(
)

duvidas com OO C#

Renato Castro
   - 17 abr 2011

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

#Código


# 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?

Vinicius Vieira
   - 18 abr 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.