![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Gast
Beiträge: n/a
|
Hi Leuts!
Wie ich in meinem anderen Post schon beschrieben habe, habe ich einen Pong Klon programmiert - funktioniert so weit sehr gut. Auf meinem Desktop läuft alles so wie es soll. Wenn ich das gleiche Spiel aber auf meinem Laptop (1.6Ghz Centrino, Radeon 9700 Pro ) ausführe ruckelt sich der Ball vielleicht was zurecht. Da läuft er mal schnell, mal langsam aber auf keinen Fall gleichmäßig. Auch bringt eine Veränderung der Geschwindigkeit vom Ball ( die über die Thread.sleep Zeit steuere ) keine Veränderung. Jetzt hab ich schon das Update 4 des JDK installiert, bringt aber nix. Habt ihr ne Ahnung, woran das liegen kann? Gruß, VipViper2000 |
|
|
|
Nach oben #2 |
|
Gast
Beiträge: n/a
|
Höchstwahrscheinlich liegt das an deinem Centrino.
Der Skaliert je nach Anforderung seine taktrate hoch und runter. Ich habe ebenfalls ein centrino 1.7 Ghz, kann dieses Problem aber selber nicht feststellen. Schau mal unter diesem Link http://www.pbus-167.com/chc.htm#anchor_donations Dies ist ein Programm zu steuerung der Taktrate und der Voltage, genauso wie der Prozi skalieren soll. unter www.m30x.de.vu gibt es Anleitungen und auch ein Thread in den Games-Teil dazu. Die forumsuche ist dein Freund. Viel Spaß. |
|
|
|
Nach oben #7 |
|
Gast
Beiträge: n/a
|
Kannst du mal deine CPU Auslastung posten? Weil ich hab das mit dem Splash Screen jetzt auch hinbekommen ( dank dir
Mir ist aufgefallen, dass ich selbst beim Splash am Anfang schon eine CPU Auslastung von 100% habe. Ist das bei dir auch so?? Das kann doch nicht sein. Bis zu diesem Zeit existiert im Prinzip nur der GameController und der Splash. Hier mal der Quelltext vom Controller ( Splash ist der gleiche, wie der den du das letzte mal gepostet hast Code:
/*
* Created on 04.07.2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author Zenobios
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GameController {
private boolean newGame;
private boolean isGame;
private boolean isSplash;
private Spielfeld spiel;
GameController(){
isGame = false;
isSplash = false;
newGame = false;
spiel = null;
showSplash();
}
public void showSplash(){
isSplash = true;
Splash splash = new Splash(this);
while(isSplash){}
newGame();
}
public void endSplash(){
isSplash = false;
}
public boolean isSplash(){
return isSplash();
}
public void newGame(){
isGame = true;
Spielfeld spiel = new Spielfeld(this);
while(isGame){}
if(newGame) newGame();
}
public void endGame(boolean newGame){
if(newGame){
this.newGame = newGame;
isGame = false;
}
else{
System.out.println("Kein neues Spiel gewünscht...");
System.exit(0);
}
}
}
|
|
|
|
Nach oben #8 |
|
Gast
Beiträge: n/a
|
Hab dir ein kleines bißchen was falsches da reingeschrieben.
Versuche die Thread.sleep() aufrufe in die run() reinzupacken. Dann kannste in der paint() umswitchen mit ner boolean oder so. Code:
public void paint(Graphics g)
{
if(wahr){
g.drawImage(splash, 0, 0, this);
wahr = false;
}else{
g.drawImage(splash2, 0, 0, this);
wahr = true;
}
}
// neu
public void run()
{
while (!endSplash)
{
try{
Thread.sleep(500);
}catch(InterruptedException e){}
repaint();
}
}
So solltest du das immer machen. Thread.sleep() bei animationen immer in run() Viel Spaß weiterhin. |
|
|
|
Nach oben #10 |
|
Gast
Beiträge: n/a
|
Ingame ist das genau das gleiche.
du hast da nur eine while_schleife (nach dem alten Code), die andauernd repaint() aufruft. Pack das genauso in einen eigenen Thread und diese while-Schleife packst du da rein. Falls du nicht genau verstehst. Gibt mir den Code und ich bastel dasda rein, ist eh nur ein kleiner eingriff. |
|
|
|
Nach oben #14 |
|
Gast
Beiträge: n/a
|
Also ich hab den Code jetzt angepasst - es lag nicht am Splash selber sondern am GameController. Wie du in dieser Klasse sehen kannst, lasse ich eine Endlosschleife laufen, die ständig kontrolliert, ob der Splash noch läuft. Hab das jetzt geändert und voila - CPU Auslastung weg.
Ja, das mit den Threads muss ich mir nochmal genauer angucken. Ich hab jetzt das Problem, dass wenn der Splash durch ist ( ich also Enter gedrückt habe ) das Spiel zwar anscheinend läuft, aber nicht gezeichnet wird. Ich habe nochmal die aktuellen Dateien in ein Zip gepackt. Ich denke, das lässt sich lösen, wenn ich das Spielfeld in einen eigenen Thread packe, oder was meinst du? |
|
|
|
Nach oben #16 |
|
Gast
Beiträge: n/a
|
Danke für deine Arbeit. Aber nun werden die Punkte am Ende nicht mehr angezeigt. Aber das kriege ich schon hin. Nur die CPU Last ist bei meinem 2800er immer noch recht hoch - ca. 40%. Müsste doch eigentlich bei so einem Spiel viel weniger sein, oder? Wie kann ich das denn noch verbessern?
|
|
|
|
Nach oben #19 |
|
Gast
Beiträge: n/a
|
Ich hatte vergessen das zurückzustellen.
Ich hab nämlich deine Images nicht, da musste ich auf weißen Hintergrund und schwarze Rechtecke zurückgreifen. Das hat aber nicht mit der Auslastung zu tun. Und echt, bei mir ist es nicht. Ansonsten teste ich das nochmal mit den Images, dann können wir auf nummer sicher gehen. Musst sie dann nur beifügen. |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Feste breite in Gecko und IE unterschiedlich | pago | HTML, XML und CSS | 14 | 10.09.2006 13:33 |
| wie schnell spammer gebannt sein können :) | robo47 | Plauderecke | 10 | 05.07.2006 19:52 |
| Unterschiedlich Darstellung Link | DasMööp | HTML, XML und CSS | 3 | 02.03.2006 16:15 |
| Apache2 antwortet nicht schnell genug | Jan | Tools, Server, Betriebssysteme | 16 | 20.02.2006 10:12 |