da ich irgend wann demnächst mal ein spiel basteln will hab ich angefangen mir mal so die basics anzuschauen um gegenstände zu bewegen. hat auch alles gut geklappt un war auch gar nich so schwer nur als ich dann einen KeyListener hinzufügen wollt dann wollt der nich so wie ich dass gerne gewollt hätte^^. wenn eine pfeiltaste gedrückt wird hätte ich gerne dass sich die geschwindigkeit meines objekts verändert aber wenn ich eine taste drücke passiert gar nichts.
hier mal der komplette code:
ich hoffe ihr könnt mir helfen, schon mal danke im vorraus
mfg
ex
hier mal der komplette code:
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class frmMain extends Applet implements Runnable, KeyListener
{
int iXpos,iYpos,iRadius,iXspeed,iYspeed,iAppletsizeX,iAppletsizeY;
private Image dbImage;
private Graphics dbg;
Thread th;
public void init()
{
this.setBackground(Color.blue);
this.addKeyListener(this);
iXpos = 10;
iYpos = this.getSize().height / 2;
iRadius = 20;
iXspeed = 1;
iYspeed = -1;
iAppletsizeX = this.getSize().width;
iAppletsizeY = this.getSize().height;
}
public void start()
{
th = new Thread(this);
th.start();
}
public void stop()
{
}
public void keyTyped(KeyEvent e)
{
}
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_LEFT : iXspeed = -1; break;
case KeyEvent.VK_RIGHT: iXspeed = +1; break;
case KeyEvent.VK_UP : iYspeed = -1; break;
case KeyEvent.VK_DOWN : iYspeed = 1;
}
}
public void keyReleased(KeyEvent e)
{
}
public void destroy()
{
}
public void run()
{
while(true)
{
if(iXpos > iAppletsizeX - iRadius)
{
iXspeed = -1;
}
if(iXpos < iRadius)
{
iXspeed = 1;
}
if(iYpos > iAppletsizeY - iRadius)
{
iYspeed = -1;
}
if(iYpos < iRadius)
{
iYspeed = 1;
}
iXpos = iXpos + iXspeed;
iYpos = iYpos + iYspeed;
repaint();
try
{
Thread.sleep (10);
}
catch(InterruptedException ex)
{
}
}
}
//Doppelpufferung
public void update(Graphics g)
{
if (dbImage == null)
{
dbImage = createImage(this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics();
}
dbg.setColor(getBackground());
dbg.fillRect(0, 0,this.getSize().width, this.getSize().height);
dbg.setColor(getForeground());
paint (dbg);
g.drawImage(dbImage,0,0,this);
}
public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillOval(iXpos - iRadius,iYpos - iRadius,2 * iRadius,2 * iRadius);
}
}
ich hoffe ihr könnt mir helfen, schon mal danke im vorraus
mfg
ex