Servus miteinander,
Ich arbeite derzeit das Buch „Java ist auch eine Insel“ durch und habe nun das erste Projekt aus dem Buch in Angriff genommen. Programmiert sollte eine Art Snake in der CMD werden. Bis jetzt funktioniert das Programm auch, wie es soll. Die Aufgaben, die ich hinzufügen sollte, waren folgende:
1. Eine zweite Schlange hinzufügen.
2. Einen zweiten Goldtopf hinzufügen.
3. Der Spieler darf 5 Züge tätigen, bevor die Schlangen sich anfangen zu bewegen.
4. Der Spieler und die anderen Objekte(Npcs) sollen auf zufälligen Koordinaten spawnen.
5. Den Code noch in verschiedene Methoden aufteilen. Diese Aufgabe ist aber nur für fortgeschrittene Personen. Ich hab’s auch leider nicht hinbekommen :/ was nicht ist, kann noch werden.
Folgende Kapitel habe ich bereits im Buch durch:
Java ist auch eine Sprache, Imperative Sprachkonzepte und Klassen und Objekte.
Meine Frage an euch: Was denkt ihr von dem Aufbau? Oder habe ich mir etwas angeeignet, was ich schnell wieder stoppen sollte? Damit meine ich natürlich den Aufbau, ob’s leserlich ist, Kommentare etc.
Ich danke euch für eure Zeit und Unterstützung! Sollte alles entsprechend für einen Anfänger gut sein, werde ich mich an die nächsten Kapitel im Buch wagen. freu =)
Ich arbeite derzeit das Buch „Java ist auch eine Insel“ durch und habe nun das erste Projekt aus dem Buch in Angriff genommen. Programmiert sollte eine Art Snake in der CMD werden. Bis jetzt funktioniert das Programm auch, wie es soll. Die Aufgaben, die ich hinzufügen sollte, waren folgende:
1. Eine zweite Schlange hinzufügen.
2. Einen zweiten Goldtopf hinzufügen.
3. Der Spieler darf 5 Züge tätigen, bevor die Schlangen sich anfangen zu bewegen.
4. Der Spieler und die anderen Objekte(Npcs) sollen auf zufälligen Koordinaten spawnen.
5. Den Code noch in verschiedene Methoden aufteilen. Diese Aufgabe ist aber nur für fortgeschrittene Personen. Ich hab’s auch leider nicht hinbekommen :/ was nicht ist, kann noch werden.
Folgende Kapitel habe ich bereits im Buch durch:
Java ist auch eine Sprache, Imperative Sprachkonzepte und Klassen und Objekte.
Meine Frage an euch: Was denkt ihr von dem Aufbau? Oder habe ich mir etwas angeeignet, was ich schnell wieder stoppen sollte? Damit meine ich natürlich den Aufbau, ob’s leserlich ist, Kommentare etc.
Ich danke euch für eure Zeit und Unterstützung! Sollte alles entsprechend für einen Anfänger gut sein, werde ich mich an die nächsten Kapitel im Buch wagen. freu =)
Java:
import java.awt.Point;
import java.util.Scanner;
// DIES IST EIN ANFÄNGERPROJEKT AUS DEM BUCH "JAVA IST AUCH EINE INSEL". BITTE HABT VERSTÄNDNIS FÜR FEHLER!^^
// FALLS IHR ANFÄNGERFEHLER ERKENNT, DIE MAN SICH ABGEWÖHNEN SOLLTE, BITTE IN DIE KOMMENTARE SCHREIBEN :) DANKE!
public class Main {
// Die verschiedenen Instanzvariablen für die Nutzung verschiedener Methoden.
// Player(s)
Point player = new Point(randomX(), randomY());
// NPCs
Point snake = new Point(randomX(), randomY());
Point snake2 = new Point(randomX(), randomY());
// Objects
Point gold = new Point(randomX(), randomY());
Point gold2 = new Point(randomX(), randomY());
Point door = new Point(randomX(), randomY());
Point teleport1 = new Point(randomX(), randomY());
Point teleport2 = new Point(randomX(), randomY());
Point teleport3 = new Point(randomX(), randomY());
Point teleport4 = new Point(randomX(), randomY());
int counter = 0; // Ein Zähler zum Zählen der "Züge", die der Spieler bis zum Sieg oder der
// Niederlage benötigte.
boolean hatGold = false; // Sollte der Spieler einen Goldtopf einsammeln, wird der Wert auf True gesetzt
// wodurch der Spieler die Berechtigung erhält, die Tür zum Sieg zu nutzen.
public static void main(String[] args) {
Main main = new Main();
main.basicGame();
}
// Erstellt eine zufällige Nummer zwischen 1 und 10 der Y-Koordinate.
public int randomY() {
int y = (int) (Math.random() * 10);
return y;
}
// Erstellt eine zufällige Zahl zwischen 1 und 40 der X-Koordinate.
public int randomX() {
int x = (int) (Math.random() * 40);
return x;
}
// Die eigentliche Spielmechanik beginnt mit dieser Methode.
public void basicGame() {
Main main = new Main();
while (true) {
/* Die 2 For-Schleifen zum Aufbau des „Spielfelds“. Sollte der Point 'p' auf
* eine der Koordinaten von den Instanzvariablen treffen
* wird ein spezifisches Zeichen anstelle des Punktes auf dem Spielfeld ausgegeben/generiert.
*/
for (int y = 0; y < 10; y++) {
for (int x = 0; x < 40; x++) {
Point p = new Point(x, y);
if (main.player.equals(p))
System.out.print('&');
else if (main.snake.equals(p))
System.out.print('S');
else if (main.teleport1.equals(p))
System.out.print('T');
else if (main.teleport2.equals(p))
System.out.print('T');
else if (main.teleport3.equals(p))
System.out.print('T');
else if (main.teleport4.equals(p))
System.out.print('T');
else if (main.gold.equals(p))
System.out.print('$');
else if (main.door.equals(p))
System.out.print('#');
else if (main.snake2.equals(p))
System.out.print('S');
else if (main.gold2.equals(p))
System.out.print('$');
else
System.out.print(".");
}
System.out.println();
// Die Spielereingabe zur Bewegung des Spielecharakters via Switchcase.
}
switch (new Scanner(System.in).next()) {
case "w":
main.player.y = Math.max(0, main.player.y - 1);
break;
case "s":
main.player.y = Math.min(9, main.player.y + 1);
break;
case "a":
main.player.x = Math.max(0, main.player.x - 1);
break;
case "d":
main.player.x = Math.min(39, main.player.x + 1);
break;
}
/* Fragt ab, ob der Spieler und die Schlange(n) sich auf den gleichen Koordinaten befinden.
* Falls es der Fall sein, sollte wird der Spieler gebissen und verliert die Runde bzw. das Spiel.
*/
if (main.player.equals(main.snake) || main.player.equals(main.snake2)) {
System.out.println("Die Schlange hat dich gebissen! Das Spiel ist verloren...");
System.out.println("Du hast nach " + main.counter + " Zügen verloren.");
return;
}
// Sollte der Spieler das Gold eingesammelt haben und auf der Coordinate der Tür
// stehen, gewinnt der Spieler.
if (main.hatGold && main.player.equals(main.door)) {
System.out.println("Du hast diese Runde gewonnen! Benötigte Züge: " + main.counter + ".");
return;
}
// Abfrage, ob der Spieler auf einem der zwei Koordinate für die Goldtöpfe steht.
// Falls das der Fall sein sollte, hat der Spieler das Recht, die Tür zu nutzen.
// Der spezifische Goldtopf wird entfernt.
if (main.player.equals(main.gold)) {
main.hatGold = true;
main.gold.move(-1, -1);
System.out.println("Du hast den Topf voller Gold gefunden! Ab zur Tür!");
continue;
} else if (main.player.equals(main.gold2)) {
main.hatGold = true;
main.gold2.move(-2, -2);
System.out.println("Du hast den Topf voller Gold gefunden! Ab zur Tür!");
continue;
}
// Eine kleine Spielerei, die den Spieler zu zufälligen Koordinaten teleportiert.
if (main.player.equals(main.teleport1)) {
main.player.setLocation(main.randomX(), main.randomY());
System.out.println("Du wurdest teleportiert!");
} else if (main.player.equals(main.teleport2)) {
main.player.setLocation(main.randomX(), main.randomY());
System.out.println("Du wurdest teleportiert!");
} else if (main.player.equals(main.teleport3)) {
main.player.setLocation(main.randomX(), main.randomY());
System.out.println("Du wurdest teleportiert!");
} else if (main.player.equals(main.teleport4)) {
main.player.setLocation(main.randomX(), main.randomY());
System.out.println("Du wurdest teleportiert!");
}
// Der Zähler, um die Züge des Spielers zu zählen. Wird pro Durchlauf um 1 erhöht.
main.counter++;
// Die Abfrage der beiden Schlangen und ihre Bewegungen basierend auf die X und
// Y Coordianten des Spielers.
if (main.counter >= 5) {
if (main.player.x < main.snake.x) {
main.snake.x -= 1;
if (main.player.x < main.snake2.x) {
main.snake2.x -= 1;
} else if (main.player.x > main.snake2.x) {
main.snake2.x += 1;
}
} else if (main.player.x > main.snake.x) {
main.snake.x += 1;
}
if (main.player.y < main.snake.y) {
main.snake.y -= 1;
if (main.player.y < main.snake2.y) {
main.snake2.y -= 1;
} else if (main.player.y > main.snake2.y) {
main.snake2.y += 1;
}
} else if (main.player.y > main.snake.y) {
main.snake.y += 1;
}
}
}
}
}