📄 sound.java
字号:
import java.applet.*;
import java.awt.*;
import java.net.*;
public class Sound 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;
// Thread
Thread th;
// Instanzvariable f黵 den AudioClip
AudioClip bounce;
public void init()
{
setBackground (Color.blue);
// Laden des Audioclips
bounce = getAudioClip (getCodeBase(), "bounce.au");
}
public void start ()
{
// Schaffen eines neuen Threads, in dem das Spiel l鋟ft
th = new Thread (this);
// Starten des Threads
th.start ();
}
public void stop()
{
th.stop();
}
public void destroy()
{
th.stop();
}
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;
// Abspielen des AudioClips
bounce.play();
}
// Ball br黨rt linken Rand und prallt ab
else if (x_pos < radius)
{
// 膎dern der Richtung des Balles
x_speed = +1;
// Abspielen des AudioClips
bounce.play();
}
// 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 + -