G
Guest
Gast
Hi,
letztes Jahr um diese Zeit, hatte ich als Tutor an der Uni die ehrenvolle Aufgabe, den "neuen" Studenten mit einfachen Aufgaben die Lust am Programmieren zu wecken. Unter anderem hatte ich TutorVolley als Aufgabe gestaltet. Das kam unter den Studenten sehr gut an, sodass die Uni wieder auf mich zugekommen ist und gefragt hat, ob ich nicht Lust habe dieses Semester (obwohl ich bei IBM grad im Praktikum bin), wieder einige Aufgaben zu stellen.
Lange Rede "kurzer" Sinn. Natürlich wollte ich und habe mir auch dieses Jahr etwas schönes einfallen lassen.
Es geht wieder darum eine KI zu schreiben und einen bestimmten vorgegebenen Spieler zu schlagen.
Der Download und weitere Hinweise für ApoIcejump findet ihr hier!
Jetzt meine Frage bzw Bitte an euch. Hat jemand Zeit und Lust es schon einmal zu versuchen. Damit ich gegebenenfalls noch Änderungen vollziehen kann, bevor ich es auf die Studenten loslasse.
Ich danke euch
Eine kleine Frage habe ich aber auch noch ...
Im Applet kann ich irgendwie kein KeyListener hinzufügen. Er meckert nicht oder sonstwasirgendwas. Er ruft auch addKeyListener(this); auf ABER er reagiert trotzdem nicht auf die Tastenkommandos. Die Maus funktioniert wiederbar. Bloss hilft das nicht so richtig, wenn man den Spieler mit der eigentlich Tastatur steuert.
Ich habe das gleiche Prinzip wie bei meinem Spiel ApoHarry gemacht. Dort funktionert es wunderbar (falls es jemand probieren möchte, einfach auf den Link gehen und dann "7" drücken). Aber jetzt hier nicht. Und dadurch verstehe ich es nicht.
Ich habe mir mir folgende 2 kleine Klassen geschrieben, um das Applet zu starten:
Der dazu interessant Teil der ApoComponent ist:
Wie gesagt er added sowohl Mouse als auch den KeyListener ... bloss nur der MouseListener funktioniert und ich weiß beim besten Willen nicht warum.
letztes Jahr um diese Zeit, hatte ich als Tutor an der Uni die ehrenvolle Aufgabe, den "neuen" Studenten mit einfachen Aufgaben die Lust am Programmieren zu wecken. Unter anderem hatte ich TutorVolley als Aufgabe gestaltet. Das kam unter den Studenten sehr gut an, sodass die Uni wieder auf mich zugekommen ist und gefragt hat, ob ich nicht Lust habe dieses Semester (obwohl ich bei IBM grad im Praktikum bin), wieder einige Aufgaben zu stellen.
Lange Rede "kurzer" Sinn. Natürlich wollte ich und habe mir auch dieses Jahr etwas schönes einfallen lassen.
Es geht wieder darum eine KI zu schreiben und einen bestimmten vorgegebenen Spieler zu schlagen.
Der Download und weitere Hinweise für ApoIcejump findet ihr hier!
Jetzt meine Frage bzw Bitte an euch. Hat jemand Zeit und Lust es schon einmal zu versuchen. Damit ich gegebenenfalls noch Änderungen vollziehen kann, bevor ich es auf die Studenten loslasse.
Ich danke euch
Eine kleine Frage habe ich aber auch noch ...
Im Applet kann ich irgendwie kein KeyListener hinzufügen. Er meckert nicht oder sonstwasirgendwas. Er ruft auch addKeyListener(this); auf ABER er reagiert trotzdem nicht auf die Tastenkommandos. Die Maus funktioniert wiederbar. Bloss hilft das nicht so richtig, wenn man den Spieler mit der eigentlich Tastatur steuert.
Ich habe das gleiche Prinzip wie bei meinem Spiel ApoHarry gemacht. Dort funktionert es wunderbar (falls es jemand probieren möchte, einfach auf den Link gehen und dann "7" drücken). Aber jetzt hier nicht. Und dadurch verstehe ich es nicht.
Ich habe mir mir folgende 2 kleine Klassen geschrieben, um das Applet zu starten:
Code:
public class ApoApplet extends JApplet {
private static final long serialVersionUID = 1L;
private JComponent currentComponent;
private ApoComponent component;
public static ApoApplet main;
private int width, height;
public ApoApplet( int width, int height ) {
super();
this.width = width;
this.height = height;
}
public void init() {
main = this;
ApoConstants.B_APPLET = true;
this.setSize( this.width, this.height );
}
public void destroy() {
this.component = null;
this.currentComponent = null;
System.gc();
}
/**
* entfernt die jetztige JComponent und schaltet auf das übergebene JComponent Objekt
*/
public void setComponent( ApoComponent component )
{
if ( this.component != null ) {
this.component.stop();
}
this.currentComponent = (JComponent)this.getContentPane();
this.currentComponent.setPreferredSize(new Dimension(component.getWidth(),component.getHeight()));
this.component = component;
this.currentComponent.add( this.component );
this.component.init();
this.component.start();
System.gc();
}
}
Code:
public class ApoIcejumpApplet extends ApoApplet {
private static final long serialVersionUID = 1L;
private ApoIcejumpGame game;
public ApoIcejumpApplet() {
this( ApoIcejumpConstants.GAME_WIDTH, ApoIcejumpConstants.GAME_HEIGHT );
}
public ApoIcejumpApplet(int width, int height) {
super(width, height);
}
public static void main( String[] args ) {
new ApoIcejumpApplet();
}
public void init() {
this.game = new ApoIcejumpGame( true, true );
this.game.setSize( ApoIcejumpConstants.GAME_WIDTH, ApoIcejumpConstants.GAME_HEIGHT );
super.init();
super.setComponent( this.game );
}
}
Der dazu interessant Teil der ApoComponent ist:
Code:
public void start()
{
if ( ( this.timer == null ) && ( this.bTimer ) )
{
this.setBThink( true );
this.timer = new ApoTimer( this, WAIT_TIME );
this.timer.start();
}
if ( this.bMouse ) {
this.addMouseListener( this );
this.addMouseMotionListener( this );
this.addMouseWheelListener( this );
}
if ( this.bKey ) {
if ( !ApoConstants.B_APPLET ) {
ApoMain.main.addKeyListener( this );
} else {
ApoApplet.main.addKeyListener( this );
}
}
}
Wie gesagt er added sowohl Mouse als auch den KeyListener ... bloss nur der MouseListener funktioniert und ich weiß beim besten Willen nicht warum.