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); }
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]; }