Avatar billede kohaar Nybegynder
19. februar 2004 - 18:37 Der er 2 kommentarer og
1 løsning

Flytte sprite med keyboard

Hejsa...

Jeg er ved at lege lidt med java, og jeg har et problem. Jeg er ved at få en sprite til at flytte sig ved hjælp af keyboardet. Jeg kan godt få spriten til at flytte sig frem og tilbage, samt dreje den (bruger piletasterne), men mit problem er, at når jeg flytter spriten frem eller tilbage, bliver vinklen hvor den drejer større og større.

Har koden her:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.AffineTransform;

public class Tank extends Applet implements KeyListener{

  private Image tank;
  Point pos = new Point(200,200);
  double angle = 0.00;
  double vel = 0;
  boolean fire = false;

  public void init() {
    setBackground(Color.white);
    addKeyListener(this);
    requestFocus();
    tank = getImage(getDocumentBase(),"tank.gif");
    setSize(800,600);
  }

  public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    AffineTransform tx = new AffineTransform();
    double dx = Math.sin(angle)*vel;
    double dy =- Math.cos(angle)*vel;
    pos.x+=dx;
    pos.y+=dy;
    tx.rotate(angle,pos.x+16,pos.y+16);
    tx.translate(pos.x, pos.y);
    g2d.drawImage(tank, tx, this);
  }

  public void keyPressed(KeyEvent e)
  {
      if (e.getKeyCode() == KeyEvent.VK_UP)  vel = 8;
      else if (e.getKeyCode() == KeyEvent.VK_DOWN) vel = -8;
      else if (e.getKeyCode() == KeyEvent.VK_LEFT) angle -= 0.02;
      else if (e.getKeyCode() == KeyEvent.VK_RIGHT) angle += 0.02;
      repaint();
  }

  public void keyReleased(KeyEvent e) {}
  public void keyTyped(KeyEvent e)    {}
}

Et eksempel kan ses på: http://www.harme.dk/tank
Avatar billede arne_v Ekspert
19. februar 2004 - 19:14 #1
Umidelbart ville jeg da tro at formlen var:

    double dx = Math.cos(angle)*vel;
    double dy = Math.sin(angle)*vel;

men det er langt uden for mit ekspertise område.
Avatar billede kohaar Nybegynder
19. februar 2004 - 19:50 #2
Dsv... Det er ikke det der er galt...
Avatar billede kohaar Nybegynder
01. oktober 2004 - 01:53 #3
sådan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester