Hey, I have a little school projekt and we have to build a 2D Dungeon Crawler
At this time I created an Array and included all pictures:
http://s1.directupload.net/images/130517/g4oh8qck.jpg
Now I just want to add a Key input, so that Array field 1 changes to 2 etc.
Here is my Map:
package game;
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* erstellt die Spielfelder
* @author Denise
*
*/
public class Spielfeld {
static String direction = System.getProperty("user.dir");
static Icon iconRasen = new ImageIcon(direction+"/src/game/Images/Rasen.jpg");
static Icon iconGrenze = new ImageIcon(direction+"/src/game/Images/Grenze.jpg");
static Icon iconPudel = new ImageIcon(direction+"/src/game/Images/Pudel.jpg");
static Icon iconGegner = new ImageIcon(direction+"/src/game/Images/Gegner.jpg");
static Icon iconZiel = new ImageIcon(direction+"/src/game/Images/Ziel.jpg");
/* erstellt das Array; 0: freies Feld, 1: Baum, 2: Pudel, 3: Gegner */
public static void level1() {
int [][] feld1 = {{1,1,1,1,1,1,1,1},
{1,2,0,1,0,0,0,1},
{1,0,0,1,0,0,0,4},
{1,0,0,0,0,0,0,1},
{1,0,0,1,0,0,0,1},
{1,1,1,1,1,1,1,1}};
JPanel panel = new JPanel();
panel.setLayout(null);
/*erstellt verschiedene Icons für jedes Bild*/
JLabel[] labels=new JLabel[48];
for (int i = 0; i < feld1.length; i++) {
for (int j = 0; j < feld1[i].length; j++) {
/*Versuch die Bilder an die passenden Stellen zu setzen*/
if (feld1[i][j]==0){
labels[i]=new JLabel(iconRasen);
panel.add(labels[i]);
labels[i].setBounds(j*100,i*100,100,100);
}
else if (feld1[i][j]==1){
labels[i]=new JLabel(iconGrenze);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld1[i][j]==2){
labels[i]=new JLabel(iconPudel);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld1[i][j]==4){
labels[i]=new JLabel(iconRasen);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
Frame.f.setContentPane(panel);
}
}
}
public static void level2() {
int [][] feld2 = {{1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,1},
{2,0,1,0,1,1,1,1},
{1,1,1,0,0,0,0,1},
{1,0,0,0,1,0,0,4},
{1,1,1,1,1,1,1,1}};
JPanel panel = new JPanel();
panel.setLayout(null);
/*erstellt verschiedene Icons für jedes Bild*/
JLabel[] labels=new JLabel[48];
for (int i = 0; i < feld2.length; i++) {
for (int j = 0; j < feld2[i].length; j++) {
/*Versuch die Bilder an die passenden Stellen zu setzen*/
if (feld2[i][j]==0){
labels[i]=new JLabel(iconRasen);
panel.add(labels[i]);
labels[i].setBounds(j*100,i*100,100,100);
}
else if (feld2[i][j]==1){
labels[i]=new JLabel(iconGrenze);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld2[i][j]==2){
labels[i]=new JLabel(iconPudel);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld2[i][j]==3){
labels[i]=new JLabel(iconGegner);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld2[i][j]==4){
labels[i]=new JLabel(iconRasen);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
Frame.f.setContentPane(panel);
}
}
}
public static void level3() {
int [][] feld3 = {{1,1,1,1,1,1,1,1},
{1,0,3,0,0,0,0,1},
{1,0,0,0,1,0,0,5},
{1,1,1,0,1,0,0,1},
{2,0,0,0,1,0,3,1},
{1,1,1,1,1,1,1,1}};
JPanel panel = new JPanel();
panel.setLayout(null);
/*erstellt verschiedene Icons für jedes Bild*/
JLabel[] labels=new JLabel[48];
for (int i = 0; i < feld3.length; i++) {
for (int j = 0; j < feld3[i].length; j++) {
/*Versuch die Bilder an die passenden Stellen zu setzen*/
if (feld3[i][j]==0){
labels[i]=new JLabel(iconRasen);
panel.add(labels[i]);
labels[i].setBounds(j*100,i*100,100,100);
}
else if (feld3[i][j]==1){
labels[i]=new JLabel(iconGrenze);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld3[i][j]==2){
labels[i]=new JLabel(iconPudel);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld3[i][j]==3){
labels[i]=new JLabel(iconGegner);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld3[i][j]==4){
labels[i]=new JLabel(iconRasen);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
else if (feld3[i][j]==5){
labels[i]=new JLabel(iconZiel);
labels[i].setBounds(j*100,i*100,100,100);
panel.add(labels[i]);
}
Frame.f.setContentPane(panel);
}
}
}
}
And my Frame:
package game;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
/** diese Klasse erzeugt sowohl das Menüfenster,
* als auch das Spielfenster. Die Buttons im Menüfenster
* sind anklickbar und bewirken das Schließen des Fensters,
* oder das Öffnen des Spielfensters.
*/
public class Frame extends JFrame {
public static JButton start;
public static JButton ende;
public static Frame f = new Frame();
public static Frame F = new Frame();
/* ruft das Menüfenster auf*/
public static void main(String[] args) {
Menufenster();
}
/*erzeugt das Menüfenster mit zwei Buttons und einem Label*/
public static void Menufenster() {
String direction = System.getProperty("user.dir");
/*setzt das Hintergrundbild. Wenn es nicht gefunden wird erscheint ein Text*/
try{
F.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File(direction+"/src/game/Images/Startscreen.jpg")))));
}
catch(IOException a) {
System.out.println("das Bild kann nicht gefunden werden");
}
/*Eigenschaften des Menüfensters (Größe, Schließbar, mittig setzen,..)*/
F.setResizable(false);
F.setTitle("Menu");
F.setSize(800,600);
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F.setLocationRelativeTo(null);
F.setVisible(true);
F.setLayout(null);
/*erstellt Label mit Text, setzt seine Position fest und setzt es auf das Menüfenster*/
JLabel label = new JLabel ("Made by Pinky and the Gang");
label.setBounds(500,550,200,40);
F.add(label);
start = new JButton("Spiel starten");
start.setBounds(400,350,200,40);
F.add(start);
ende = new JButton("Beenden");
ende.setBounds(400,400,200,40);
F.add(ende);
/*registriert Mausklick auf Button start und öffnet das Spielfenster*/
ActionListener alstart = new ActionListener() {
public void actionPerformed( ActionEvent e ) {
Spielfenster();
}
};
ActionListener alende = new ActionListener() {
public void actionPerformed( ActionEvent e ) {
System.exit(0);
}
};
start.addActionListener(alstart);
ende.addActionListener(alende);
}
/* public void keyTyped(java.awt.event.KeyEvent e) {
// do nothing
}
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) feld1[i][j] = feld1[i-1][j];
if (e.getKeyCode() == KeyEvent.VK_RIGHT) feld1[i][j] = feld1[i+1][j];
if (e.getKeyCode() == KeyEvent.VK_UP) feld1[i][j] = feld1[i][j-1];
if (e.getKeyCode() == KeyEvent.VK_DOWN) feld1[i][j] = feld1[i][j+1];
}
public void keyReleased(java.awt.event.KeyEvent e) {
//do nothing
}*/
/* Eigenschaften des Spielfeldes*/
public static void Spielfenster() {
f.setResizable(false);
f.setTitle("Erna's Adventure");
f.setSize(805,630);
f.setLayout(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
Spielfeld.level1();
}
}
I have no idea how to make it work, i read something about boolean etc. but after several hours I still dont know how to include it.
I hope anyone of you could help me with that! ??? ??? ???
(I hope my english is good enough, I’m from Germany)