Hallo Leute, ich hab' grad' so 'n kleines 2D-Game angefangen, bei dem man, ihr kennt das bestimmt, mit seinem Spieler Felsen oder Sonstiges rollen lässt, bis sie irgendwo-gegen landen. ...
Das Problem ist, dass wenn man den Spieler ( mit WASD oder den Pfeiltasten ) bewegt, er verschwindet.
Könnt ihr mir da vielleicht weiterhelfen? Hier die Quelltexte ( meiner 4 Klassen ):
Schieberätsel:
Level:
Tile:
Listener:
Danke im Voraus!
Das Problem ist, dass wenn man den Spieler ( mit WASD oder den Pfeiltasten ) bewegt, er verschwindet.
Könnt ihr mir da vielleicht weiterhelfen? Hier die Quelltexte ( meiner 4 Klassen ):
Schieberätsel:
Java:
// Imports
import java.awt.*;
import javax.swing.*;
import java.applet.*;
public class Schieberätsel extends Applet implements Runnable {
// Deklarationen
private static final long serialVersionUID = 1L;
public static boolean isRunning = false;
public static JFrame frame;
public static Graphics g;
public static int size = 500;
// Konstruktoren
public Schieberätsel() {
// Frame vorbereiten
frame = new JFrame( "Schieberätsel" );
frame.setSize( size - 22, size );
frame.setResizable( false );
frame.setLocationRelativeTo( null );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
frame.addKeyListener( new Listener() );
g = frame.getGraphics();
}
// Methoden
public void start() {
isRunning = true;
Level.level = new Level( 1 );
new Thread( this ).start();
}
public void stop() {
isRunning = false;
}
public void run() {
while ( isRunning ) {
try {
Thread.sleep( 5 );
} catch ( Exception e ) { }
}
}
public static void main( String[] args ) {
Schieberätsel schieberätsel = new Schieberätsel();
schieberätsel.start();
}
}
Level:
Java:
public class Level {
// Deklarationen
public static int LevelNummer = 0;
public static Level level;
public int[] solve = new int[ 2 ];
public static Tile[][] Spielfeld = new Tile[ 10 ][ 10 ];
public static int[] Spieler = new int[ 2 ];
// Konstruktoren
public Level( int LevelNummer ) {
for ( int x = 0; x < Spielfeld.length; x++ ) {
for ( int y = 0; y < Spielfeld[ 0 ].length; y++ ) {
setFieldByID( x, y, 0);
}
}
switch ( LevelNummer ) {
case 1 :
setFieldByID( 1, 1, 1 );
solve[ 0 ] = 5;
solve[ 1 ] = 5;
break;
case 2 :
break;
case 3 :
break;
}
}
// Methoden
public static void setFieldByID( int x, int y, int id ) {
Spielfeld[ x ][ y ] = new Tile( Tile.size * x + 10, Tile.size * y + 30, id );
if ( id == 1 ) {
Spieler[ 0 ] = x;
Spieler[ 1 ] = y;
}
}
public static void solved() {
level = new Level( LevelNummer + 1 );
}
}
Tile:
Java:
// Imports
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
public class Tile {
// Deklarationen
public static BufferedImage tiles;
public static int size = ( Schieberätsel.size - 40 ) / 10;
public static int TileSize = 20;
public int Pos1, Pos2, id;
// Konstruktoren
public Tile( int Pos1, int Pos2, int id ) {
try {
tiles = ImageIO.read( new File( "res/tiles.png" ) );
} catch ( Exception e ) { }
Schieberätsel.g.drawImage( tiles, Pos1, Pos2, Pos1 + size, Pos2 + size, id * TileSize, 0, id * TileSize + TileSize, TileSize, null );
}
// Methoden
public static void move( int Px, int Py, int Mx, int My ) {
if ( Level.Spielfeld[ Px - Mx ][ Py - My ].id == 0 ) {
Level.setFieldByID( Px - Mx, Py - My, Level.Spielfeld[ Px ][ Py ].id );
Level.setFieldByID( Px, Py, 0 );
}
if ( ( Px - Mx ) == Level.level.solve[ 0 ] && ( Py - My ) == Level.level.solve[ 1 ] ) {
Level.solved();
}
}
}
Listener:
Java:
// Imports
import java.awt.event.*;
public class Listener implements KeyListener {
// Deklarationen
public static int[] dir = new int[ 2 ];
// Methoden
public void keyPressed( KeyEvent e ) { }
public void keyReleased( KeyEvent e ) { }
public void keyTyped( KeyEvent e ) {
switch ( e.getKeyCode() ) {
case KeyEvent.VK_W :
dir[ 0 ] = 0;
dir[ 1 ] = 1;
break;
case KeyEvent.VK_A :
dir[ 0 ] = -1;
dir[ 1 ] = 0;
break;
case KeyEvent.VK_S :
dir[ 0 ] = 0;
dir[ 1 ] = -1;
break;
case KeyEvent.VK_D :
dir[ 0 ] = 1;
dir[ 1 ] = 0;
break;
case KeyEvent.VK_UP :
dir[ 0 ] = 0;
dir[ 1 ] = 1;
break;
case KeyEvent.VK_LEFT :
dir[ 0 ] = -1;
dir[ 1 ] = 0;
break;
case KeyEvent.VK_DOWN :
dir[ 0 ] = 0;
dir[ 1 ] = -1;
break;
case KeyEvent.VK_RIGHT :
dir[ 0 ] = 1;
dir[ 1 ] = 0;
break;
}
Tile.move( Level.Spieler[ 0 ], Level.Spieler[ 1 ], dir[ 0 ], dir[ 1 ] );
}
}
Danke im Voraus!