# Achtung, die Kurve! - Klon



## H2SO4 (19. Sep 2006)

Vielleicht kenn jemand das Spiel (s. Titel).

Mein Problem besteht nur darin, eine sich ständig geradeausbewegene, 3px breite Linie zu zeichnen, die sich auf Tastendruck (es gibt zwei, Pfeil.rechts, und Pfeil.links) nach links, bzw. rechts dreht.

Wie realisiere ich das? MIr geht es hauptsächlich um das Drehen. Den Rest kriege ich hin.

Hier das Spiel:

AchtungdieKurve.zip


----------



## KSG9|sebastian (19. Sep 2006)

Die Linie zeichnest du in der Paint-Methode, z.B. so:


```
public void paint(Graphics g){
  g.drawLine(startX, startY, endX, endY);
}
```
Dann hast du nen Listener der auf Pfeil rechts bzw. Pfeil Links reagiert:

```
public void keyReleased(KeyEvent e){
   if(e.getKeyCode() == KeyEvent.VK_LEFT){
      startX += 3;
      startY +=3;
      endX -= 3;
      endY -=3;
   } else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
      startX += 3;
      startY -=3;
      endX -= 3;
      endY +=3;
   }
   repaint();
}
```


----------



## H2SO4 (19. Sep 2006)

Sorry, aber ich muss nochmal stören.

Leider klappt das noch nicht ganz.



```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PaintPanel extends WindowPanel
{
  static PaintPanel panel;
  private int startX, startY, endX, endY;
  static boolean an = true;
  
  public PaintPanel()
  {
    super();
    
    this.setBackground(Color.black);
    
    startX = 10;
    startY = 10;
    endX = 10;
    endY = 10;
  }
  
  public void paint(Graphics g)
  {
    g.drawLine(startX, startY, endX, endY);
  }
  
  public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_LEFT){
      startX += 3;
      startY +=3;
      endX -= 3;
      endY -=3;
    } else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
      startX += 3;
      startY -=3;
      endX -= 3;
      endY +=3;
    }
    repaint();
  }
}
```

Zur Info:

WindowPanel


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class WindowPanel extends JPanel implements KeyListener
{
  public WindowPanel()
  {
    super();
    this.setLayout(null);
  }
  
  protected void addButtonListener(JButton pButton)
  {
    pButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent ae)
      {
        input(ae.getActionCommand());
      }
    });
  }

  protected void addMenuListener(JMenuItem pMenu)
  {
    pMenu.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent ae)
      {
        menuInput(ae.getActionCommand());
      }
    });
  }
  
  public void keyReleased(KeyEvent e) {
    ;
  }
  
  public void keyPressed(KeyEvent e) {
    ;
  }
  
  public void keyTyped(KeyEvent e) {
    ;
  }

  //Bearbeiter für die Buttonereignisse
  protected void input(String l)
  {
    ;
  }

  //Bearbeiter für die Menuereignisse
  protected void menuInput(String l)
  {
    ;
  }
  
  //Erzeugung der Komponenten
  protected void createComponents()
  {
    ;
  }
  
  //Erzeugung der Buttons
  protected void createButtons()
  {
    ;
  }
}
```


----------



## KSG9|sebastian (19. Sep 2006)

was heißt "klappt so nicht"? was genau willst du machen? was passiert?


----------



## H2SO4 (19. Sep 2006)

Steht ja so schon oben. Jetzt soll sich auf Tastendruck erstmal die Linie nach rechts bzw. links verändern. In einem Thread soll sie sich dann später immer gerade aus bewegen und nur auf Tastendruck drehen.

Siehe Spielanhang


----------

