# Brauche Hilfe bei Bewegung eines Rechtecks [Applet]



## flohrian (9. Aug 2006)

Erstmal "Hallo Community".
(Ist mein zweiter Post :O)

Ich bin gerade dabei, einen Ansatz für eine Art Autorennspiel zu entwickeln.
Der Code, den ich bis jetzt dabei geschrieben habe, funktioniert merkwürdigerweise nicht... 
Da ich überhaupt nicht sagen kann, wo der Fehler liegt, poste ich einfach mal den gesamten Code:


```
import java.applet.*;

import java.util.*;

import java.lang.*;
import static java.lang.Math.*;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


class Vehicle
{

	int iSpeed;
	
	int iMaxSpeed;
	int iAccelrate;
	
	int iMobility;
	
	int iPosX;
	int iPosY;
	
	int iLength;
	int iWidth;
	
	int iAngle;
	
	public void Move ()
	{
		
		this.iPosX += sin (this.iAngle);
		this.iPosX += cos (this.iAngle);
		
	}
	
	public void Accelrate ()
	{
		
		this.iSpeed += this.iAccelrate;
		
	}
	
	public void BecomeSlower ()
	{
		
		this.iSpeed = this.iSpeed - this.iAccelrate / 2;
		
	}
	
	public void Brake ()
	{
		
		this.iSpeed = this.iSpeed - this.iAccelrate;
		
	}

}

class Car extends Vehicle
{

	int iSpeed = 0;
	
	int iMaxSpeed = 20;
	int iAccelrate = 2;
	
	int iMobility = 5;
	
	int iPosX = 10;
	int iPosY = 10;
	
	int iLength = 30;
	int iWidth = 12;
	
	int iAngle = 0;

}





public class Test01 extends Applet implements KeyListener
{

	Car Player = new Car ();
	
	public void init ()
	{
		
		addKeyListener (this);
		
	}
	
	public void paint (Graphics g)
	{
		
		setBackground (Color.white);
		setForeground (Color.black);
		
		Graphics2D g2 = (Graphics2D) g;
		g2.fillRect (Player.iPosX, Player.iPosY, Player.iLength, Player.iWidth);
		
	}
	
	public void keyTyped (KeyEvent ev)
	{
	}
	
	public void keyPressed (KeyEvent ev)
	{
		
		if (ev.getKeyCode () == KeyEvent.VK_UP)
		{
			
			Player.Accelrate ();
			Player.Move ();
			
		}
		
		repaint ();
		
	}
	
	public void keyReleased (KeyEvent ev)
	{
	}

}
```

Gemalt wird das "Auto" zwar, aber bewegen tut es sich nicht :/
Wo der Fehler steckt kann ich nicht sagen, aber es müsste wohl
a) Die Move oder die Accelrate-Funktion von Car,
b) Die Abfrage des Tastendrucks oder
c) irgendeine Vererbungs-Komplikation
sein, denke ich.

Mfg
Flo


----------



## flohrian (9. Aug 2006)

Ich Vollidiot!
Ich habs!

Es lag daran, dass ich nach dem Laden des Applets in den Browser, und vor dem Drücken der Pfeiltaste nicht aufs Applet geklickt habe, und das Vieh demnach nicht den Focus hatte und nicht reagieren konnte 

Mfg
Flo


----------



## flohrian (9. Aug 2006)

Hmm..
irgendwie hats jetrzt wieder nicht mehr funktioniert.
Deshalb habe ich nochmal den Code, den ich als Erstes gepostet hab ausprobiert, aber es geht nicht mehr 
Habe echt keine ahnung und bin total am Verzweifeln..

Mfg
Flo


----------



## Leroy42 (10. Aug 2006)

Das dir bis jetzt keiner geantwortet hast liegt daran,
daß du zwar Code postest aber *weder* schreibst, was denn nicht
funktioniert, *noch* was denn überhaupt _passieren soll_!

Irgendeinen fremden Code nach einem Fehler zu durchsuchen, von dem
wir nicht wissen wo er ist *und* ohne zu wissen was erwartet wird,
ist nicht wirklich motivierend.



			
				Ein ähnlich formulierender Fragesteller hat gesagt.:
			
		

> Einer der Methoden da unten rechnet nicht aus was ich erwarte!
> Helft mir bitte!
> 
> 
> ...


 :shock:  :autsch:  :shock:


----------



## flohrian (10. Aug 2006)

Hmm, stimmt, hast recht.
Tut mir leid.
War irgendwie so verzweifelt... hab ich irgendwie doof gemacht, ich weiß 

Also der Code soll eigentlich ein kleines Rechteck als Dummy-Grafik für ein Auto zeichnen, was er auch tut.
Der Teil, der nicht funktioniert ist die Bewegung.
Auf einen Tastendruck (KeyPressed) von der Pfeiltaste nach oben (KeyEvent.VK_UP) soll die Position geändert werden.
Die wichtigen Daten wie der Winkel (Bewegung wird mit Sinus, Cosinus und dem Winkel (später) gelöst) werden in der Klasse Car gespeichert, die von Vehicle abgeleite ist.
Das war es eigentlich auch schon. (Hoffe ich)

Mfg
Flo


----------



## flohrian (10. Aug 2006)

Jetzt hab ich aber den Fehler...
Die Funktionen aus Vehicle werden entweder gar nicht oder irgendwie falsch nach Car vererbt.
Hab aus Vehicle nu nen Interface gemacht und das ganze in Car implementiert.
So geht's auch..

Mfg
Flo


----------

