Moin,
Ich versuche mich gerade an einem Strategiespiel, bekomm es aber nicht hin, dass wenn auf einem Feld ein Gebäude gesetzt wurde, man nicht nochmal ein Gebäude auf das Feld setzen kann.
Hier ist die Map:
Hier das Gebäude:
So hab ich's schon versucht:
Klappt aber nicht.
Was hab ich falsch gemacht?
Ich versuche mich gerade an einem Strategiespiel, bekomm es aber nicht hin, dass wenn auf einem Feld ein Gebäude gesetzt wurde, man nicht nochmal ein Gebäude auf das Feld setzen kann.
Hier ist die Map:
Java:
public class Map extends JPanel implements ActionListener{
Player p, pp;
Legion l;
Timer time, time2, time3;
char[][] array;
Gebäude geb;
int m, n, p1, p2, pp1, pp2, a, x, y, wahl, j, j2, holzhaus, steinb, haus, c, s, c2, wahl2;
static ArrayList legion, legion2, gebäude, gebäude2, wohnhaus1, holzfällerhütte1, steinbruch1, kaserne1;
String p1holz, p2holz;
boolean laufen;
String dateiname = "speichern";
ImageIcon i2 = new ImageIcon("Boden.png");
Image img2 = i2.getImage();
ImageIcon wand1 = new ImageIcon("Wand.png");
Image wand = wand1.getImage();
ImageIcon ff = new ImageIcon("Fahne4.png");
Image f2 = ff.getImage();
ImageIcon f = new ImageIcon("Fahne3.png");
Image f1 = f.getImage();
ImageIcon w1 = new ImageIcon("Wald.png");
Image w = w1.getImage();
ImageIcon u1 = new ImageIcon("Unten.png");
Image u = u1.getImage();
ImageIcon ka = new ImageIcon("Kaserne.png");
Image kas = ka.getImage();
ImageIcon ha = new ImageIcon("Haus.png");
Image haus1 = ha.getImage();
ImageIcon hohü = new ImageIcon("Holzh.png");
Image holzhütte = hohü.getImage();
ImageIcon stein1 = new ImageIcon("Steinbruch.png");
Image steinbruch = stein1.getImage();
ImageIcon wa = new ImageIcon("wahl.png");
Image wahlimg = wa.getImage();
ImageIcon wak = new ImageIcon("wahlk.png");
Image wahlkimg = wak.getImage();
public Map(){
time = new Timer(10, this);
time.start();
p = new Player();
pp = new Player();
addKeyListener(new AL());
addKeyListener(new AL2());
setFocusable(true);
holzfällerhütte1 = new ArrayList();
wohnhaus1 = new ArrayList();
steinbruch1 = new ArrayList();
kaserne1 = new ArrayList();
laufen = false;
wahl = 1;
wahl2 = 1;
p1 = 2;
p2 = 5;
pp1 = 14;
pp2 = 5;
a = 50;
j = 100;
j2 = 100;
c = 252;
c2 = 672;
Timer time2 = new Timer(8000, new actionListener());
time2.setInitialDelay(5000);
time2.start();
Timer time3 = new Timer(300, new actionListener2());
time3.start();
}
public char[][] initArray(){
char[][] ch = new char[17][17];
ch[0][0] = '-';ch[1][0] = '-';ch[2][0] = '-';ch[3][0] = '-';ch[4][0] = '-';ch[5][0] = '-';ch[6][0] = '-';ch[7][0] = '-';ch[8][0] = '-';ch[9][0] = '-';ch[10][0] = '-';ch[11][0] = '-';ch[12][0] = '-';ch[13][0] = '-';ch[14][0] = '-';ch[15][0] = '-';ch[16][0] = '-';
ch[0][1] = '-';ch[1][1] = '-';ch[2][1] = '-';ch[3][1] = ' ';ch[4][1] = ' ';ch[5][1] = ' ';ch[6][1] = '-';ch[7][1] = '-';ch[8][1] = '-';ch[9][1] = ' ';ch[10][1] = ' ';ch[11][1] = ' ';ch[12][1] = ' ';ch[13][1] = '-';ch[14][1] = '-';ch[15][1] = '-';ch[16][1] = '-';
ch[0][2] = '-';ch[1][2] = '-';ch[2][2] = ' ';ch[3][2] = ' ';ch[4][2] = ' ';ch[5][2] = ' ';ch[6][2] = ' ';ch[7][2] = '-';ch[8][2] = ' ';ch[9][2] = ' ';ch[10][2] = ' ';ch[11][2] = ' ';ch[12][2] = ' ';ch[13][2] = ' ';ch[14][2] = '-';ch[15][2] = '-';ch[16][2] = '-';
ch[0][3] = '-';ch[1][3] = ' ';ch[2][3] = ' ';ch[3][3] = ' ';ch[4][3] = ' ';ch[5][3] = ' ';ch[6][3] = ' ';ch[7][3] = ' ';ch[8][3] = ' ';ch[9][3] = ' ';ch[10][3] = ' ';ch[11][3] = ' ';ch[12][3] = ' ';ch[13][3] = ' ';ch[14][3] = ' ';ch[15][3] = '-';ch[16][3] = '-';
ch[0][4] = '-';ch[1][4] = 'b';ch[2][4] = ' ';ch[3][4] = ' ';ch[4][4] = ' ';ch[5][4] = ' ';ch[6][4] = ' ';ch[7][4] = ' ';ch[8][4] = 'w';ch[9][4] = 'w';ch[10][4] = ' ';ch[11][4] = ' ';ch[12][4] = ' ';ch[13][4] = ' ';ch[14][4] = ' ';ch[15][4] = ' ';ch[16][4] = '-';
ch[0][5] = '-';ch[1][5] = ' ';ch[2][5] = ' ';ch[3][5] = ' ';ch[4][5] = ' ';ch[5][5] = ' ';ch[6][5] = 'w';ch[7][5] = 'w';ch[8][5] = 'w';ch[9][5] = 'w';ch[10][5] = 'w';ch[11][5] = ' ';ch[12][5] = ' ';ch[13][5] = ' ';ch[14][5] = ' ';ch[15][5] = ' ';ch[16][5] = '-';
ch[0][6] = '-';ch[1][6] = ' ';ch[2][6] = ' ';ch[3][6] = ' ';ch[4][6] = ' ';ch[5][6] = ' ';ch[6][6] = ' ';ch[7][6] = 'w';ch[8][6] = 'w';ch[9][6] = ' ';ch[10][6] = ' ';ch[11][6] = ' ';ch[12][6] = ' ';ch[13][6] = ' ';ch[14][6] = ' ';ch[15][6] = 'a';ch[16][6] = '-';
ch[0][7] = '-';ch[1][7] = '-';ch[2][7] = ' ';ch[3][7] = ' ';ch[4][7] = ' ';ch[5][7] = ' ';ch[6][7] = ' ';ch[7][7] = ' ';ch[8][7] = ' ';ch[9][7] = ' ';ch[10][7] = ' ';ch[11][7] = ' ';ch[12][7] = ' ';ch[13][7] = ' ';ch[14][7] = ' ';ch[15][7] = ' ';ch[16][7] = '-';
ch[0][8] = '-';ch[1][8] = '-';ch[2][8] = '-';ch[3][8] = ' ';ch[4][8] = ' ';ch[5][8] = ' ';ch[6][8] = ' ';ch[7][8] = ' ';ch[8][8] = ' ';ch[9][8] = '-';ch[10][8] = ' ';ch[11][8] = ' ';ch[12][8] = ' ';ch[13][8] = ' ';ch[14][8] = ' ';ch[15][8] = '-';ch[16][8] = '-';
ch[0][9] = '-';ch[1][9] = '-';ch[2][9] = '-';ch[3][9] = '-';ch[4][9] = ' ';ch[5][9] = ' ';ch[6][9] = ' ';ch[7][9] = ' ';ch[8][9] = '-';ch[9][9] = '-';ch[10][9] = '-';ch[11][9] = ' ';ch[12][9] = ' ';ch[13][9] = ' ';ch[14][9] = '-';ch[15][9] = '-';ch[16][9] = '-';
ch[0][10] = '-';ch[1][10] = '-';ch[2][10] = '-';ch[3][10] = '-';ch[4][10] = '-';ch[5][10] = '-';ch[6][10] = '-';ch[7][10] = '-';ch[8][10] = '-';ch[9][10] = '-';ch[10][10] = '-';ch[11][10] = '-';ch[12][10] = '-';ch[13][10] = '-';ch[14][10] = '-';ch[15][10] = '-';ch[16][10] = '-';
return ch;
}
public void actionPerformed(ActionEvent e) {
repaint();
playerMove();
playerMove2();
checkCollisions();
}
public void playerMove(){
if(p.getRX() == -1 && array[p1 - 1][p2] != '-' && p.bewegen == true && array[p1 - 1][p2] != 'w'){
p1 = p1 - 1;
p.bewegen = false;
}
if(p.getRX() == +1 && array[p1 + 1][p2] != '-' && p.bewegen == true && array[p1 + 1][p2] != 'w'){
p1 = p1 + 1;
p.bewegen = false;
}
if(p.getRY() == -1 && array[p1][p2 - 1] != '-' && p.bewegen == true && array[p1][p2 - 1] != 'w'){
p2 = p2 - 1;
p.bewegen = false;
}
if(p.getRY() == +1 && array[p1][p2 + 1] != '-' && p.bewegen == true && array[p1][p2 + 1] != 'w'){
p2 = p2 + 1;
p.bewegen = false;
}
}
public void playerMove2(){
if(pp.getRX() == -1 && array[pp1 - 1][pp2] != '-' && pp.bewegen == true && array[pp1 - 1][pp2] != 'w'){
pp1 = pp1 - 1;
pp.bewegen = false;
}
if(pp.getRX() == +1 && array[pp1 + 1][pp2] != '-' && pp.bewegen == true && array[pp1 + 1][pp2] != 'w'){
pp1 = pp1 + 1;
pp.bewegen = false;
}
if(pp.getRY() == -1 && array[pp1][pp2 - 1] != '-' && pp.bewegen == true && array[pp1][pp2 - 1] != 'w'){
pp2 = pp2 - 1;
pp.bewegen = false;
}
if(pp.getRY() == +1 && array[pp1][pp2 + 1] != '-' && pp.bewegen == true && array[pp1][pp2 + 1] != 'w'){
pp2 = pp2 + 1;
pp.bewegen = false;
}
}
public void checkCollisions(){
Integer i = new Integer(j);
p1holz = i.toString();
Integer i2 = new Integer(j2);
p2holz = i2.toString();
if(p.bau == true){
if(wahl == 1 && j >= 20){
neueHolzfällerhütte1();
j = j - 20;
holzhaus = holzhaus + 1;
p.bau = false;
}
if(wahl == 2 && j >= 20){
neuesWohnhaus1();
j = j - 20;
haus = haus + 1;
p.bau = false;
}
if(wahl == 3 && j >= 20){
neuerSteinbruch1();
j = j - 20;
p.bau = false;
}
if(wahl == 4 && j >= 20){
neueKaserne1();
j = j - 20;
p.bau = false;
}
}
}
public void neueHolzfällerhütte1(){
Gebäude g = new Gebäude(p1, p2);
holzfällerhütte1.add(g);
}
public void neuesWohnhaus1(){
Gebäude g = new Gebäude(p1, p2);
wohnhaus1.add(g);
}
public void neuerSteinbruch1(){
Gebäude g = new Gebäude(p1, p2);
steinbruch1.add(g);
}
public void neueKaserne1(){
Gebäude g = new Gebäude(p1, p2);
kaserne1.add(g);
}
class actionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(holzhaus >= 1){
j = j + holzhaus;
}
if(steinb >= 1){
s = s + steinb;
}
}
}
class actionListener2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(laufen == true){
if(pp1 != p1){
if(pp1 > p1 && array[pp1 - 1][pp2] != 'w'){
pp1 = pp1 - 1;
}else if(pp1 < p1 && array[pp1 + 1][pp2] != 'w'){
pp1 = pp1 + 1;
}
}
if(pp2 != p2){
if(pp2 > p2){
pp2 = pp2 - 1;
}else if(pp2 < p2){
pp2 = pp2 + 1;
}
}
if(pp1 == p1 && pp2 == p2){
laufen = false;
}
}
}
}
public int getP1(){
return p1;
}
public int getP2(){
return p2;
}
public int getWahl(){
return wahl;
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
array = initArray();
for(int n=0 ; n < 17; n++){
for(int m=0; m < 17; m++){
if(array[m][n] == '-'){
g2d.drawImage(wand, a*m, a*n, null);
}
if(array[m][n] == ' '){
g2d.drawImage(img2, a*m, a*n, null);
}
if(array[m][n] == 'a'){
g2d.drawImage(f1, a*m, a*n, null);
}
if(array[m][n] == 'b'){
g2d.drawImage(f2, a*m, a*n, null);
}
if(array[m][n] == 'w'){
g2d.drawImage(w, a*m, a*n, null);
}
}
}
g2d.drawImage(p.getImage(), a*p1, a*p2, null);
g2d.drawImage(pp.getImage(), a*pp1, a*pp2, null);
for (int w = 0; w < holzfällerhütte1.size(); w++){
Gebäude g1 = (Gebäude) holzfällerhütte1.get(w);
g2d.drawImage(holzhütte, a*g1.getX(), a*g1.getY(), null);
}
for (int w = 0; w < wohnhaus1.size(); w++){
Gebäude g1 = (Gebäude) wohnhaus1.get(w);
g2d.drawImage(haus1, a*g1.getX(), a*g1.getY(), null);
}
for (int w = 0; w < steinbruch1.size(); w++){
Gebäude g1 = (Gebäude) steinbruch1.get(w);
g2d.drawImage(steinbruch, a*g1.getX(), a*g1.getY(), null);
}
for (int w = 0; w < kaserne1.size(); w++){
Gebäude g1 = (Gebäude) kaserne1.get(w);
g2d.drawImage(kas, a*g1.getX(), a*g1.getY(), null);
}
g2d.drawImage(u, 0, 550, null);
g2d.drawImage(wahlimg, 250, 555, null);
g2d.drawImage(wahlimg, 670, 555, null);
g2d.drawImage(wahlkimg, c, 555, null);
g2d.drawImage(wahlkimg, c2, 555, null);
Font font1 = new Font("serif", Font.PLAIN, 20);
g.setFont(font1);
g.setColor(Color.BLACK);
g.drawString(p1holz, 50, 580);
g.drawString(p2holz, 470, 580);
}
private class AL extends KeyAdapter{
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT){
p.richtungx = - 1;
p.richtungy = 0;
}
if (key == KeyEvent.VK_RIGHT){
p.richtungx = + 1;
p.richtungy = 0;
}
if (key == KeyEvent.VK_UP){
p.richtungx = 0;
p.richtungy = - 1;
}
if (key == KeyEvent.VK_DOWN){
p.richtungx = 0;
p.richtungy = + 1;
}
if (key == KeyEvent.VK_P){
p.bau = true;
}
if (key == KeyEvent.VK_O){
laufen = true;
}
if (key == KeyEvent.VK_I){
if(wahl == 1){
wahl = 2;
c = 291;
}else if(wahl == 2){
wahl = 3;
c = 330;
}else if(wahl == 3){
wahl = 4;
c = 370;
}else if(wahl == 4){
wahl = 1;
c = 252;
}
}
if (key == KeyEvent.VK_F8){
Speichern();
}
if (key == KeyEvent.VK_F7){
Laden();
}
}
public void keyReleased(KeyEvent e){
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT){
p.richtungx = 0;
p.richtungy = 0;
p.bewegen = true;
}
if (key == KeyEvent.VK_RIGHT){
p.richtungx = 0;
p.richtungy = 0;
p.bewegen = true;
}
if (key == KeyEvent.VK_UP){
p.richtungy = 0;
p.richtungx = 0;
p.bewegen = true;
}
if (key == KeyEvent.VK_DOWN){
p.richtungy = 0;
p.richtungx = 0;
p.bewegen = true;
}
if (key == KeyEvent.VK_P){
p.bau = false;
}
}
}
private class AL2 extends KeyAdapter{
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if (key == KeyEvent.VK_A){
pp.richtungx = - 1;
pp.richtungy = 0;
}
if (key == KeyEvent.VK_D){
pp.richtungx = + 1;
pp.richtungy = 0;
}
if (key == KeyEvent.VK_W){
pp.richtungx = 0;
pp.richtungy = - 1;
}
if (key == KeyEvent.VK_S){
pp.richtungx = 0;
pp.richtungy = + 1;
}
if (key == KeyEvent.VK_Q){
pp.bau = true;
}
if (key == KeyEvent.VK_1){
if(wahl2 == 1){
wahl2 = 2;
c2 = 711;
}else if(wahl2 == 2){
wahl2 = 3;
c2 = 750;
}else if(wahl2 == 3){
wahl2 = 4;
c2 = 790;
}else if(wahl2 == 4){
wahl2 = 1;
c2 = 672;
}
}
}
public void keyReleased(KeyEvent e){
int key = e.getKeyCode();
if (key == KeyEvent.VK_A){
pp.richtungx = 0;
pp.richtungy = 0;
pp.bewegen = true;
}
if (key == KeyEvent.VK_D){
pp.richtungx = 0;
pp.richtungy = 0;
pp.bewegen = true;
}
if (key == KeyEvent.VK_W){
pp.richtungy = 0;
pp.richtungx = 0;
pp.bewegen = true;
}
if (key == KeyEvent.VK_S){
pp.richtungy = 0;
pp.richtungx = 0;
pp.bewegen = true;
}
if (key == KeyEvent.VK_Q){
pp.bau = false;
}
}
}
}
Hier das Gebäude:
Java:
public class Gebäude{
int x, y;
public Gebäude(int startX, int startY){
x = startX;
y = startY;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
}
So hab ich's schon versucht:
Java:
if(p.bau == true && array[p1][p2] != array[Gebäude().getX()][Gebäude().getY()]){
if(wahl == 1 && j >= 20){
neueHolzfällerhütte1();
j = j - 20;
holzhaus = holzhaus + 1;
p.bau = false;
}
}
Was hab ich falsch gemacht?