示例#1
0
        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            int   i          = 14;
            Vetor velocidade = new Vetor();

            switch (e.KeyValue)
            {
            case 32:     //Espaço

                break;

            case 38:     // Cima

                velocidade = new Vetor(0, -i);
                break;

            case 40:     // Baixo

                velocidade = new Vetor(0, i);
                break;

            case 39:     // Direita

                velocidade = new Vetor(i, 0);
                break;

            case 37:     // Esquerda

                velocidade = new Vetor(-i, 0);
                break;
            }

            Vetor jogadorTransladacao = velocidade;

            foreach (Poligono poligono in poligonos)
            {
                // Ignora o jogador no tratamento
                if (poligono == jogador)
                {
                    continue;
                }

                // Testa a colisão com os polígonos
                ColisaoPoligonoResultado r = ColisaoPoligono(jogador, poligono, velocidade);

                if (r.Interceptar)
                {
                    jogadorTransladacao = velocidade + r.TranslacaoMinimaVetor;
                    break;
                }
            }

            jogador.Posicao(jogadorTransladacao);
        }
示例#2
0
        public frmPrincipal()
        {
            InitializeComponent();

            Paint   += new PaintEventHandler(Form1_Paint);
            KeyDown += new KeyEventHandler(Form1_KeyDown);

            KeyPreview     = true;
            DoubleBuffered = true;

            Random rnd = new Random(Environment.TickCount);

            Poligono p = new Poligono();

            p.Pontos.Add(new Vetor(0, 0));
            p.Pontos.Add(new Vetor(50, -25));
            p.Pontos.Add(new Vetor(75, 0));
            p.Pontos.Add(new Vetor(75, 75));
            p.Pontos.Add(new Vetor(50, 100));
            p.Pontos.Add(new Vetor(0, 75));
            p.cor = Color.FromArgb(255, rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255));
            poligonos.Add(p);

            p = new Poligono();
            p.Pontos.Add(new Vetor(150, 150));
            p.Pontos.Add(new Vetor(50, 0));
            p.Pontos.Add(new Vetor(150, 0));
            p.Posicao(80, 80);
            p.cor = Color.FromArgb(255, rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255));
            poligonos.Add(p);

            p = new Poligono();
            p.Pontos.Add(new Vetor(0, 50));
            p.Pontos.Add(new Vetor(50, 0));
            p.Pontos.Add(new Vetor(150, 80));
            p.Pontos.Add(new Vetor(160, 200));
            p.Pontos.Add(new Vetor(-10, 190));
            p.Posicao(300, 300);
            p.cor = Color.FromArgb(255, rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255));
            poligonos.Add(p);

            foreach (Poligono polygon in poligonos)
            {
                polygon.CriarArestas();
            }

            jogador = poligonos[0];
        }