Java: Methode wird nicht erkannt?
Hallo, ich arbeite gerade an einem Text Adventure. Intellij erkennt meine Methoden nicht. Hat jemand Lösungsvorschläge?
Code:
public class main {
public static void main (String[] args){
player();
enemies();
cases();
}
public static void player() {
String name = "Shadow";
int health = 50;
int damage = 30;
}
public static void enemies() {
public static void dragon() {
String name = "Barbaton";
int health = 100;
int damage = 40;
}
public static void lion() {
String name = "Eon";
int health = 85;
int damage = 55;
}
public static void pig() {
String name = "Memba";
int health = 20;
int damage = 5;
}
public static void frog() {
String name = "Zee";
int health = 5;
int damage = 1;
}
public static void zebra() {
String name = "Zoy";
int health = 28;
int damage = 18;
}
public static void monkey() {
String name = "Bart";
int health = 45;
int damage = 38;
}
public static void fox() {
String name = "Foxie";
int health = 35;
int damage = 24;
}
}
}
public static void cases() {
int min = 1;
int max = 8;
int random_int = (int)Math.floor(Math.random()*(max-min+1)+min);
if(random_int == 1){
System.out.println("Du hast Barbaton(Drache) als Gegner bekommen.");
}
else if (random_int == 2){
System.out.println("Du hast Eon(Löwe) als Gegner bekommen.");
}
else if (random_int == 3){
System.out.println("Du hast Memba(Schwein) als Gegner bekommen.");
}
else if (random_int == 4){
System.out.println("Du hast Zee(Frosch) als Gegner bekommen.");
}
else if (random_int == 5){
System.out.println("Du hast Zoy(Zebra) als Gegner bekommen.");
}
else if (random_int == 6){
System.out.println("Du hast Bart(Affe) als Gegner bekommen.");
}
else if (random_int == 7){
System.out.println("Du hast Foxie(Fuchs) als Gegner bekommen.");
}
else {
System.out.println("");
}
}
}
3 Antworten
Damit Du mal siehst wie man mit Objekten arbeitet und einem Array
Hier mal zum lernen
https://www.delftstack.com/de/howto/java/java-array-of-objects/
und unten mal deine sache in paar Zeilen .
public class Spiel {
public static void main (String[] args){
Person player = new Person("Shadow",50,30,"Player");
/* Beispiel Objekte in Array https://www.delftstack.com/de/howto/java/java-array-of-objects/ */
Person[] enemys = new Person[2];
enemys[0] = new Person("Barbaton",100,40,"Dragon");
enemys[1] = new Person("Eon",85,55,"Lion");
player.displaySpieler();
cases(enemys);
}
public static void cases(Person[] enemys) {
int min = 1;
int max = 2;
int random_int = (int)Math.floor(Math.random()*(max-min+1)+min);
enemys[random_int-1].displayGegner();
}
}
class Person{
private String name;
private int health;
private int damage;
private String art;
Person(String name,int health,int damage,String art) {
this.name = name;
this.health = health;
this.damage = damage;
this.art = art;
}
public void displayGegner(){
System.out.println("Du hast " + name + " ("+art+") als Gegner bekommen");
}
public void displaySpieler(){
System.out.println("Hallo " + name + " Spieler");
}
}
Output
Hallo Shadow Spieler
Du hast Eon (Lion) als Gegner bekommen
mur damit du schon mal siehst wie einfach das mit Class und Objekten geht .
wirste leider so nix mit anfangen können , weil du halt irgendwo die daten festhalten musst . objekte können sich selber beschreiben mit einer objekt funktion . und im programm brauchst du ja spieler und gegner auch als variablen zum benutzen . wird komplex für den anfang , aber versuch gleich OOP Objekt Orientiert zu arbeiten . Der Versuch war ja schon nicht verkehrt . Aber das verkompliziert leider auch alles . Vielleicht hilft dir ja mein Beispiel .
Mein Beispiel ist jetzt auch nicht so gut , aber ich hab dabei darauf geachtet das du schon einiges lernst , wie man objekte an funktionen übergibt und damit arbeitet . praktisch solltest du dein cases umbennen in zufallsgegnererzeugen mit rückgabe wert int machen , und den wert speichern in int deingegener . dann kannst du einfach enemys[deingegner] benutzen für den gegner :)
Du kannst Methoden nicht in Methoden schreiben. Du kannst Klassen in Klassen schreiben und darin Methoden schreiben, aber eben nicht Methoden in Methoden.
Achja: Ich würde für die verschiedenen Tiere eine Klasse machen... so wie das jetzt ist... naja.
ja aber was schreibe ich dann in die void main Methode rein. Wie macht man das bei Klassen?
Ehmmm.... gut... ich glaube du solltest dich nochmals mit den Java-Grundlagen beschäftigen, jetzt, wo ich deinen Code nochmals angeschaut habe. Insbesondere OOP (Objektorientierte Programmierung) wird für dein Projekt hier wichtig sein. So wie du das aktuell machst, hast du davon noch nichts verstanden.
OOP sollte eigentlich in jedem Kurs nach den Basics kommen.
Mein Kommentar hat nichts mit Grafik oder nicht zu tun. Das hat damit zu tun, wie du deine Daten organisierst. Und dein Ansatz hier ist definitiv nicht optimal. Ehrlich gesagt, frage ich mich, wie das überhaupt funktionieren soll.
Trotzdem solltest du dafür Klassen und Objekte verwenden.
Beschäftige dich erst mit den folgenden Themen:
- Namenskonventionen
- Objektorientierte Programmierung (Das ist ein riesiger Bereich aber Java besteht praktisch nur daraus. Ich rede von Klassen, Abstrakten Klassen, Interfaces, Konstruktoren, Attributen, Methoden, Access modifiers, statisch vs nicht statisch, Vererbung, etc.)
- Switch-Statements
- java.util.Random
- evt. lesen von Daten aus Dateien
Das ist ja erst der Anfang. Später füge ich hinzu wenn zb der Drache den Spieler schlägt, wie viel von seinem Leben abgenommen wird.