J
JaVa
Gast
Hi!
Mein Pong Spiel wäre jetzt fertig, doch jetzt bin ich auf eines des Lästigsten Probleme gestossen: Die Performance!!!
Im Applet Viewer läuft es ganz gut, obwohl man ein leichtes Ruckeln des Balles sehen kann. Dock kaum verschiebe ich das Fenster (Appletviewer) dann fängt der Ball an mal langsamer mal schneller über den Bildschirm zu fliegen! Das ist total nervig und macht das Spiel unspielbar! Beim Browser, noch schlimmer: da muss man gar nichts machen und der Ball spinnt wie oben beschrieben, nur noch eine Spur radikaler! Ich glaube nicht dass es etwas mit meiner Ball Klasse zu tun hat, wo ich eine Methode schrieb die den Ball bewegt. Ich glaube es liegt in der Hauptklasse! Hier der Code. Ich vermute stark es liegt am Thread!
Bitte helft mir!
ThX JaVa
Mein Pong Spiel wäre jetzt fertig, doch jetzt bin ich auf eines des Lästigsten Probleme gestossen: Die Performance!!!
Im Applet Viewer läuft es ganz gut, obwohl man ein leichtes Ruckeln des Balles sehen kann. Dock kaum verschiebe ich das Fenster (Appletviewer) dann fängt der Ball an mal langsamer mal schneller über den Bildschirm zu fliegen! Das ist total nervig und macht das Spiel unspielbar! Beim Browser, noch schlimmer: da muss man gar nichts machen und der Ball spinnt wie oben beschrieben, nur noch eine Spur radikaler! Ich glaube nicht dass es etwas mit meiner Ball Klasse zu tun hat, wo ich eine Methode schrieb die den Ball bewegt. Ich glaube es liegt in der Hauptklasse! Hier der Code. Ich vermute stark es liegt am Thread!
Code:
/**
* @(#)SampleThread.java
*
* Sample Applet application
*
* @author
* @version 1.00 04/08/05
*/
import java.awt.*;
import java.util.*;
import java.applet.*;
import java.net.*;
public class SampleThread extends Applet implements Runnable
{
Thread t;
//int i;
//DOUBLE-BUFFER
Image dbImage;
Graphics dbg;
//SPIELELEMENTE
ball PongBall;
player MyPlayer;
enemy YourEnemy;
//SOUND
sound Game_sound;
//Zeichensatz
//noch keiner
public void init()
{
PongBall = new ball (200,200);
MyPlayer = new player (100, PongBall);
YourEnemy = new enemy();
Game_sound = new sound ();
Game_sound.bounce_wall = getAudioClip(getCodeBase(), "wall_bounce2.au");
Game_sound.bounce_player_paddle = getAudioClip(getCodeBase(), "player_bounce.au");
//i = 0;
}
public void start()
{
t = new Thread(this);
t.start();
}
public void stop()
{
t.stop();
}
public void run()
{
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while(true)
{
//i++;
repaint();
PongBall.isBallOut(Game_sound, YourEnemy);
PongBall.checkCollision(MyPlayer, Game_sound);
PongBall.move();
YourEnemy.move(Game_sound, PongBall);
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
break;
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void destroy()
{
}
public void update (Graphics g)
{
// init of Double Buffer
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// delete image in the background
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// draw foreground on deleted background
dbg.setColor (getForeground());
paint (dbg);
// displays complete image on screen
g.drawImage (dbImage, 0, 0, this);
}
public void paint(Graphics g)
{
g.drawString("SCORE = " + PongBall.player_points, 10, 415);
g.drawString("COMPUTER SCORE = " + YourEnemy.enemy_score, 350, 415);
//g.drawImage(PCpaddle, x, y, this);
//g.drawImage(ball, ball_x, ball_y, this);
PongBall.paint(g);
MyPlayer.paint(g);
YourEnemy.paint(g);
g.setColor(Color.black);
g.drawRect(10, 10, 475, 385); //draws the game-area tollerating the width/height of the ball!
}
public boolean keyDown(Event e, int key)
{
if(key == 1005)
{
MyPlayer.moveDOWN();
}
if(key == 1004)
{
MyPlayer.moveUP();
}
return true;
}
}
Bitte helft mir!
ThX JaVa