Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person"

Diskutiere Probleme bei 2D Spielfeld, mit einzufügender "Person" im Java Basics - Anfänger-Themen Bereich.
R

rmoveD

Hi, ich bin ein absoluter Anfänger und komme leider bei folgender Aufgabe zu nichts, es geht darum, dass ich ein 6x6 Feld 2D erstellen soll, welches ähnlich eines Schachbrettmusters ist, also mit Kästen versehen, dazu soll ich eine "Person" erstellen, welche sich auf den Feldern bewegt. Ich habe mich ein wenig ausprobiert, kam allerdings noch nicht sehr weit und brauche dringed Hilfe.

Im Anhang habe ich meinen Anfang gezeigt, allerdings bin ich noch bei dem Spielfeld, um die "Person" habe ich mich noch garnicht gekümmert.

MFG
 

Anhänge

mihe7

mihe7

Hallo erstmal. Gibts dazu auch eine Frage oder wolltest Du nur einmal die Welt wissen lassen, was Du gerade so machst? ;)
 
T

temi

Es wäre gut, wenn du deinen Code als Text hier einstellen würdest. Nutze dazu die Code-Tags: Die drei Punkte, rechts vom Smiley →Code →Java.

Und versuche dir von Anfang an die üblichen Konventionen in Java anzugewöhnen. Klassennamen werden groß geschrieben, im sog. "UpperCamelCase" und Variablen- und Methodennamen werden klein geschrieben, im sog. "lowerCamelCase".
Auch sollten für Namen sinnvolle Bezeichnungen, welche die Aufgabe der Klasse/Variable/Methode deutlich machen, gewählt werden. Möglichst keine Abkürzungen.
Java:
class Hausarbeit {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String[][] board = new String[6][6]; // ist String hier wirklich der geeignetste Typ? Man weiß es nicht.

        // ...
      
    }
}
 
Zuletzt bearbeitet:
Kirby_Sike

Kirby_Sike

Muss es eine GUI sein oder sollt ihr es in der Command Line spielen? Wenn es die Command Line sein soll, könntest du einfach ein „x“ hin und her bewegen :)
 
J

JustNobody

Und bzgl des auskommentierten Cofes:
Bei einem Array der Größe 6 sind die Felder von 0 bis 5 Nummeriert. Deine Schleife mit <7 enthält auch die 6 was dann zu einer Exception führt.
 
B

BestGoalkeeper

es geht darum, dass ich ein 6x6 Feld 2D erstellen soll, welches ähnlich eines Schachbrettmusters ist, also mit Kästen versehen, dazu soll ich eine "Person" erstellen, welche sich auf den Feldern bewegt. Ich habe mich ein wenig ausprobiert, kam allerdings noch nicht sehr weit und brauche dringed Hilfe.
Einmal mit einem 3x3 zweidimensionalen Array damit die Ausgabe noch nachvollzogen werden kann:
Java:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Objects;

public class Board {
	private static final int n = 3;
	private int[][] array = new int[n][n];
	private int x = 0;
	private int y = 0;

	public Board() {
		array[0][0] = 1;
	}

	public Board(Board other) {
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				array[i][j] = other.array[i][j];
			}
		}
		x = other.x;
		y = other.y;
	}

	// up, down, left, right
	public Board up() {
		if (x - 1 >= 0) {
			Board o = new Board(this);
			o.up1();
			return o;
		}
		return null;
	}

	private void up1() {
		array[x][y] = 0;
		x--;
		array[x][y] = 1;
	}

	public Board down() {
		if (x + 1 < n) {
			Board o = new Board(this);
			o.down1();
			return o;
		}
		return null;
	}

	private void down1() {
		array[x][y] = 0;
		x++;
		array[x][y] = 1;
	}

	public Board left() {
		if (y - 1 >= 0) {
			Board o = new Board(this);
			o.left1();
			return o;
		}
		return null;
	}

	private void left1() {
		array[x][y] = 0;
		y--;
		array[x][y] = 1;
	}

	public Board right() {
		if (y + 1 < n) {
			Board o = new Board(this);
			o.right1();
			return o;
		}
		return null;
	}

	private void right1() {
		array[x][y] = 0;
		y++;
		array[x][y] = 1;
	}

	// print all
	public static void printAll(HashSet<Board> set, ArrayList<Board> list) {
		Board last = list.get(list.size() - 1);
		if (!set.contains(last)) {
			set.add(last);
			if (list.size() == n * n) {
				System.out.println(list);
			}
			Board o = last.up();
			if (o != null) {
				ArrayList<Board> list2 = new ArrayList<>(list);
				list2.add(o);
				printAll(set, list2);
			}
			o = last.down();
			if (o != null) {
				ArrayList<Board> list2 = new ArrayList<>(list);
				list2.add(o);
				printAll(set, list2);
			}
			o = last.left();
			if (o != null) {
				ArrayList<Board> list2 = new ArrayList<>(list);
				list2.add(o);
				printAll(set, list2);
			}
			o = last.right();
			if (o != null) {
				ArrayList<Board> list2 = new ArrayList<>(list);
				list2.add(o);
				printAll(set, list2);
			}
			set.remove(last);
		}
	}

	// equals, hashCode, toString
	@Override
	public int hashCode() {
		return Objects.hash(x, y);
	}

	@Override
	public boolean equals(Object obj) {
		Board other = (Board) obj;
		return x == other.x && y == other.y;
	}

	@Override
	public String toString() {
		return String.format("(%s, %s)", x, y);
	}

	// main
	public static void main(String[] args) {
		HashSet<Board> set = new HashSet<>();
		ArrayList<Board> list = new ArrayList<>();
		list.add(new Board());
		printAll(set, list);
	}
}
[[x=0, y=0], [x=1, y=0], [x=2, y=0], [x=2, y=1], [x=1, y=1], [x=0, y=1], [x=0, y=2], [x=1, y=2], [x=2, y=2]]
[[x=0, y=0], [x=1, y=0], [x=2, y=0], [x=2, y=1], [x=2, y=2], [x=1, y=2], [x=0, y=2], [x=0, y=1], [x=1, y=1]]
[[x=0, y=0], [x=1, y=0], [x=2, y=0], [x=2, y=1], [x=2, y=2], [x=1, y=2], [x=1, y=1], [x=0, y=1], [x=0, y=2]]
[[x=0, y=0], [x=1, y=0], [x=1, y=1], [x=0, y=1], [x=0, y=2], [x=1, y=2], [x=2, y=2], [x=2, y=1], [x=2, y=0]]
[[x=0, y=0], [x=0, y=1], [x=1, y=1], [x=1, y=0], [x=2, y=0], [x=2, y=1], [x=2, y=2], [x=1, y=2], [x=0, y=2]]
[[x=0, y=0], [x=0, y=1], [x=0, y=2], [x=1, y=2], [x=2, y=2], [x=2, y=1], [x=1, y=1], [x=1, y=0], [x=2, y=0]]
[[x=0, y=0], [x=0, y=1], [x=0, y=2], [x=1, y=2], [x=2, y=2], [x=2, y=1], [x=2, y=0], [x=1, y=0], [x=1, y=1]]
[[x=0, y=0], [x=0, y=1], [x=0, y=2], [x=1, y=2], [x=1, y=1], [x=1, y=0], [x=2, y=0], [x=2, y=1], [x=2, y=2]]
 
Thema: 

Probleme bei 2D Spielfeld, mit einzufügender "Person"

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben