Hallo,
ich bin momentan dabei, ein kleines Pokemon Spiel zu programmieren.
Es gibt bereits eine Figur, die man auf einer kleinen Map bewegen kann und die nicht über Hindernisse hinweggehen kann.
Allerdings habe ich das Problem, das die Figur immer über der Map gespawnt wird(Bild ist im Anhang).
Die Figur und die Map sind beide JPanels, die in einem größeren JPanel liegen.
ich bin momentan dabei, ein kleines Pokemon Spiel zu programmieren.
Es gibt bereits eine Figur, die man auf einer kleinen Map bewegen kann und die nicht über Hindernisse hinweggehen kann.
Allerdings habe ich das Problem, das die Figur immer über der Map gespawnt wird(Bild ist im Anhang).
Die Figur und die Map sind beide JPanels, die in einem größeren JPanel liegen.
Java:
package maps;
import java.awt.*;
import javax.swing.*;
import main.*;
import felder.*;
/*
* Erste Map im Spiel
*/
public class Goldania extends Map
{
//Aktueller Spieler
public Player player = new Player("Ash");
//Map im hintergrund
public JPanel hintergrund = new JPanel();
//Konstruktor, Layout setzen und die Methode setMap() aufrufen
public Goldania()
{
setBackground(Color.BLACK);
setLayout(new FlowLayout(0, 0, 0));
hintergrund.setLayout(new GridLayout(12, 12));
player.setOpaque(false);
add(player); //Spieler der Stadt hinzufügen
add(hintergrund); //Map der Stadt hinzufügen
//Die Zeichenreihenfolge der Komponenten festlegen
setComponentZOrder(hintergrund, 1);
setComponentZOrder(player, 0);
setMap(); //Map generieren
}
//Alle Elemente der Map erstellen und ihr hinzufügen
public void setMap()
{
felder = new Feld[12][12];
//Alle Felder mit Gras füllen, i = Zeile, j = Spalte
for (int i = 0; i < 12; i++)
{
for(int j = 0; j < 12; j++)
{
felder[i][j] = new Gras();
}
}
//Einen Weg zeichnen
for (int i = 0; i < 12; i++)
{
felder[i][5] = new Weg(0);
felder[i][6] = new Weg(1);
}
//Wegabbiegung nach rechts
felder[5][6] = new Weg(8);
felder[6][6] = new Weg(10);
for (int i = 7; i < 12; i++)
{
felder[5][i] = new Weg(2);
felder[6][i] = new Weg(3);
}
//Labor
felder[0][7] = new Labor(9);
felder[0][8] = new Labor(9);
felder[0][9] = new Labor(9);
felder[0][10] = new Labor(9);
felder[0][11] = new Labor(9);
felder[1][7] = new Labor(5);
felder[1][8] = new Labor(5);
felder[1][9] = new Labor(5);
felder[1][10] = new Labor(5);
felder[1][11] = new Labor(5);
felder[2][7] = new Labor(10);
felder[2][8] = new Labor(10);
felder[2][9] = new Labor(10);
felder[2][10] = new Labor(10);
felder[2][11] = new Labor(10);
felder[3][7] = new Labor(0);
felder[3][8] = new Labor(0);
felder[3][9] = new Labor(0);
felder[3][10] = new Labor(0);
felder[3][11] = new Labor(0);
felder[4][7] = new Labor(0);
felder[4][8] = new Labor(0);
felder[4][9] = new Labor(1);
felder[4][10] = new Labor(0);
felder[4][11] = new Labor(0);
//Alle Felder der Stadt hinzufügen
for (int i = 0; i < 12; i++)
{
for(int j = 0; j < 12; j++)
{
hintergrund.add(felder[i][j]);
}
}
}
}
Java:
package main;
import javax.swing.*;
import felder.Gras;
public class Player extends JPanel
{
int x = 0;
int y = 0;
boolean kannLaufen = true;
String name = "";
Icon icon = new ImageIcon(Player.class.getResource("../img/trainer/ash/ashoben.png"));
JLabel bild = new JLabel(icon);
//Konstruktor mit Name als Parameter
public Player(String name)
{
this.name = name;
add(bild);
}
/*
* 1 = oben
* 2 = unten
* 3 = links
* 4 = rechts
*/
public void laufen(int laufrichtung)
{
if(kannLaufen)
{
//Es kann kein weiterer Laufbefehl eingehen
kannLaufen = false;
//Player um 40 felder bewegen
PlayerThread laufThread = new PlayerThread(laufrichtung);
System.out.println(x + " " + y);
}
}
}
Java:
package maps;
import javax.swing.*;
import felder.*;
public class Map extends JPanel
{
public Feld[][] felder;
public void setMap(){};
}