📄 tastaturereignisse.java
字号:
import java.applet.*;
import java.awt.*;
public class Tastaturereignisse extends Applet implements Runnable
{
// Initialisierung der Variablen
int x_pos = 30; // x - Position des Balles
int y_pos = 100; // y - Position des Balles
int x_speed = 1; // Geschwindigkeit des Balles in x - Richtung
int radius = 20; // Radius des Balles
int appletsize_x = 300; // Gr鲞e des Applets in x - Richtung
int appletsize_y = 300; // Gr鲞e des Applets in y - Richtung
// Variablen f黵 die Doppelpufferung
private Image dbImage;
private Graphics dbg;
public void init()
{
setBackground (Color.blue);
}
public void start ()
{
// Schaffen eines neuen Threads, in dem das Spiel l鋟ft
Thread th = new Thread (this);
// Starten des Threads
th.start ();
}
public void stop()
{
}
public void destroy()
{
}
/* Diese Methode f鋘gt das Ereigniss auf, das beim Dr點ken einer Keyboardtaste entsteht.
Die Tasten Cursor links, rechts und die Space Taste haben dabei eine bestimmte Bedeutung.
Wird eine andere Taste gedr點kt, so wird ihr Integerwert in die Standardausgabe geschrieben. */
public boolean keyDown (Event e, int key)
{
// linke Cursortaste
if (key == Event.LEFT)
{
// Ball bewegt sich dann nach links
x_speed = -1;
}
// rechte Cursortaste
else if (key == Event.RIGHT)
{
// Ball bewegt sich dann nach rechts
x_speed = 1;
}
// SpaceBar hat Wert 32
else if (key == 32)
{
x_speed = 0;
}
else
{
// Ausgabe von gedr黭tem Key und Zahlenwert an die Standardausgabe
System.out.println ("Charakter: " + (char)key + " Integer Value: " + key);
}
return true;
}
public void run ()
{
// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
// Solange true ist l鋟ft der Thread weiter
while (true)
{
// Wenn der Ball den rechten Rand ber黨rt, dann prallt er ab
if (x_pos > appletsize_x - radius)
{
// 膎dern der Richtung des Balles
x_speed = -1;
}
// Ball br黨rt linken Rand und prallt ab
else if (x_pos < radius)
{
// 膎dern der Richtung des Balles
x_speed = +1;
}
// Ver鋘dern der x- Koordinate
x_pos += x_speed;
// Neuzeichnen des Applets
repaint();
try
{
// Stoppen des Threads f黵 in Klammern angegebene Millisekunden
Thread.sleep (20);
}
catch (InterruptedException ex)
{
// do nothing
}
// Zur點ksetzen der ThreadPriority auf Maximalwert
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
/** Update - Methode, Realisierung der Doppelpufferung zur Reduzierung des Bildschirmflackerns */
public void update (Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Bildschirm im Hintergrund l鰏chen
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gel鰏chten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
paint (dbg);
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
g.drawImage (dbImage, 0, 0, this);
}
public void paint (Graphics g)
{
g.setColor (Color.red);
g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -