コード例 #1
0
ファイル: Jogo.cs プロジェクト: NicolasCendron/CSharpFrogger
        //public void iniciarLoop()
        //{
        //    new Thread(loop, "Main loop").start();
        //}

        #endregion

        #region Setup
        
        public void Setup(int velocidade)
            {
                //Criamos a estratégia de double buffering
           
                //TODO: createBufferStrategy(2);
                Random random = new Random();
                veiculos = new Veiculo[NRO_VEICULOS];
                for (int i = 0; i < NRO_VEICULOS; i++)
                {
                    if (i < NRO_VEICULOS / 4)
                        veiculos[i] = new Onibus(velocidade);
                    else if (i >= NRO_VEICULOS / 4 && i < NRO_VEICULOS / 2)
                        veiculos[i] = new Carro(velocidade);
                    else if (i >= NRO_VEICULOS / 2 && i < NRO_VEICULOS)
                        veiculos[i] = new Moto(velocidade);
                }
                for (int i = 0; i < NRO_VEICULOS; i++)
                {
                    int j = random.Next(veiculos.Length);

                    Veiculo temp = veiculos[i];
                    veiculos[i] = veiculos[j];
                    veiculos[j] = temp;
                }
                pista1 = new Boolean[TAM_PISTA];
                pista2 = new Boolean[TAM_PISTA];
                pista3 = new Boolean[TAM_PISTA];
                veiculoNoMapa = new Boolean[NRO_VEICULOS];
                for (int i = 0; i < TAM_PISTA; i++)
                {
                    pista1[i] = false;
                    pista2[i] = false;
                    pista3[i] = false;
                }
                for (int i = 0; i < NRO_VEICULOS; i++)
                {
                    veiculoNoMapa[i] = false;
                }
                Mapa = new Mapa();
                Sapo.ResetaPosicao();
            }
コード例 #2
0
ファイル: Jogo.cs プロジェクト: NicolasCendron/CSharpFrogger
        public Jogo()  // : base("Frogger")
        {
            /* this.addKeyListener(this);
             setDefaultCloseOperation(EXIT_ON_CLOSE);
             setBounds(100, 100, 378, 357);
             setResizable(false);
             getContentPane().setLayout(null);
             setIgnoreRepaint(true);
             setFocusable(true);
             */
            Sapo = new Sapo();

            //addWindowListener(new WindowAdapter()

            //    {
            //    @Override
            //    public void windowClosing(WindowEvent e)
            //    {
            //        //Se apertar o x, paramos o loop.
            //        loop.stop();
            //    }
            //});

        }
コード例 #3
0
ファイル: Jogo.cs プロジェクト: NicolasCendron/CSharpFrogger
        public void processLogics()
        {
            // TODO Auto-generated method stub
            //Calcula o tempo entre dois updates
            long time = ControleTempo.CurrentTimeMillis() - previous;
            if (Sapo.Vidas == 0)
                Environment.Exit(0);
            if (Sapo.Ymatriz == 0)
                loop.nextLevel();
            for (int i = 0; i < TAM_PISTA; i++)
            {
                pista1[i] = false;
                pista2[i] = false;
                pista3[i] = false;
            }
            for (int i = 0; i < NRO_VEICULOS; i++)
            {
                if (veiculoNoMapa[i])
                {
                    if (veiculos[i].Visible)
                    {
                        for (int j = veiculos[i].Xmatriz; j < veiculos[i].NroBlocosOcupa + veiculos[i].Xmatriz; j++)
                        {
                            if (Sapo.Ymatriz == veiculos[i].Ymatriz && Sapo.Xmatriz == j)
                            {
                                Sapo.ResetaPosicao();
                                Sapo.PerdeVida();
                            }
                        }
                        veiculos[i].update(time);
                        switch (veiculos[i].Pista)
                        {
                            case 1:
                                for (int j = veiculos[i].Xmatriz; j < veiculos[i].Xmatriz + veiculos[i].NroBlocosOcupa; j++)
                                    pista1[j + 3] = true;
                                break;
                            case 2:
                                for (int j = veiculos[i].Xmatriz; j < veiculos[i].Xmatriz + veiculos[i].NroBlocosOcupa; j++)
                                    pista2[j + 3] = true;
                                break;
                            case 3:
                                for (int j = veiculos[i].Xmatriz; j < veiculos[i].Xmatriz + veiculos[i].NroBlocosOcupa; j++)
                                    pista3[j + 3] = true;
                                break;
                        }
                    }
                    else
                    {
                        veiculoNoMapa[i] = false;
                        veiculos[i].resetPosicao();
                    }
                }
            }
            int soma1 = 0;
            int soma2 = 0;
            int soma3 = 0;
            for (int i = 0; i < TAM_PISTA; i++)
            {
                if (pista1[i])
                    soma1++;
                if (pista2[i])
                    soma2++;
                if (pista3[i])
                    soma3++;
            }
            if (soma1 < 0.3 * TAM_PISTA)
                tentaColocarVeiculo(pista1, 1);
            if (soma2 < 0.3 * TAM_PISTA)
                tentaColocarVeiculo(pista2, 2);
            if (soma3 < 0.3 * TAM_PISTA)
                tentaColocarVeiculo(pista3, 3);
            //Grava o tempo na saída do método
            previous = ControleTempo.CurrentTimeMillis();

        }