Hallo,
Ich lerne zur zeit noch java und bin noch am anfang. Jedoch konnte ich schon ein Zahlen Ratespiel machen, und würde mich freuen wenn mir jemand Verbesserungsvorschläge für meinen Code geben kann. Falls jemand das Spiel spielen will habe ich noch einen Cheat eingebaut, der euch die richtige zahl anzeigt der Befehl dafür ist INEEDHELP.
MFG
xWerter
Ich lerne zur zeit noch java und bin noch am anfang. Jedoch konnte ich schon ein Zahlen Ratespiel machen, und würde mich freuen wenn mir jemand Verbesserungsvorschläge für meinen Code geben kann. Falls jemand das Spiel spielen will habe ich noch einen Cheat eingebaut, der euch die richtige zahl anzeigt der Befehl dafür ist INEEDHELP.
Java:
import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.time.*;
public class Spiel4
{
//Einleitung
public static void main(String[] args)
{
Menü();
}
private static void Menü()
{
System.out.printf("%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n");
System.out.printf("================================================================================");
String eingabe;
char[] Auswahl = {'x'};
Scanner lesen = new Scanner(System.in);
System.out.printf("Das lustige Zahlenraten:%n%nMenue:%n%n");
System.out.printf(" [S]tart%n [H]ighscores%n [C]redits%n [B]eenden");
System.out.printf("%n%nWas Willst du tun: ");
eingabe = lesen.nextLine();
Auswahl = eingabe.toCharArray();
switch(Auswahl[0])
{
case 'S':
case 's':
Schwierigkeit();
break;
case 'H':
case 'h':
Highscores();
break;
case 'C':
case 'c':
Credits();
break;
case 'B':
case 'b':
Ende();
break;
default:
System.out.println("Diese Option ist leider nicht verfügbar");
Schlafen(3);
Menü();
}
lesen.close();
}
private static void Schwierigkeit() //Schwierigkeit auswählen
{
Scanner lesen = new Scanner(System.in);
String eingabe;
char[] Auswahl;
System.out.printf("%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n");
System.out.printf("[L]eicht%n[M]ittel%n[S]chwer%n%n");
System.out.print("Wähle bitte Deine Schwierigkeit: ");
eingabe = lesen.nextLine();
Auswahl = eingabe.toCharArray();
switch(Auswahl[0]) //wähle aus einer List von optionen
{
case 'L':
case 'l':
Start(1);
break;
case 'M':
case 'm':
Start(2);
break;
case 's':
case 'S':
Start(3);
break;
default:
System.out.println("Diese Schwierigkeit gibt es noch nicht.");
Schlafen(3);
Schwierigkeit();
}
lesen.close();
}
private static void Start(int Schwer) //Startet das Spiel mit ausgwählten Schwierigkeitsgrad
{
int Zahl = 0;
int Versuche = 1;
Random zufall = new Random();
Scanner lesen = new Scanner(System.in);
String Eingabe = "";
int deineZahl = 999999;
boolean Fehler;
System.out.print("errate meine Zahl zwischen ");
switch(Schwer) //generiert die Zahlen
{
case 1:
Zahl = zufall.nextInt(11);
System.out.print(" 0 und 10: ");
break;
case 2:
Zahl = zufall.nextInt(26);
System.out.print(" 0 und 25: ");
break;
case 3:
Zahl = zufall.nextInt(51);
System.out.print(" 0 und 50: ");
break;
}
do //Vorgang solange wiederholen bis deine Zahl richtig ist
{
do //Vorgang solange wiederholen bis kein Fehler bei der Eingabe auftritt
{
try
{
Eingabe = lesen.nextLine();
if(Eingabe.equals("INEEDHELP")) //Cheat
System.out.println(Zahl);
deineZahl = Integer.parseInt(Eingabe);
Fehler = false;
}
catch(Exception ex)
{
Fehler = true;
System.out.println("Da hat sich leider ein kleiner Fehler eingeschlichen: " + ex.getMessage());
}
}while(Fehler);
if(deineZahl != Zahl)
{
System.out.println("Das ist leider nicht die gesuchte Zahl");
Versuche++;
}
}while(deineZahl != Zahl);
System.out.printf("Super, das ist die richtige Zahl. Benötigte Versuche: %d", Versuche);
Schreiben(Versuche, Schwer);
Eingabe = lesen.nextLine();
Menü();
lesen.close();
}
private static void Credits() //SpieleEntwickler
{
System.out.printf("Dieses Spiel wurde gemacht:%n");
Schlafen(2);
System.out.println("von: Timmy");
Schlafen(2);
System.out.println("mit: Java");
Schlafen(4);
Menü();
}
private static void Schlafen(int Zeit) //Funktion zum pausieren
{
try
{
Zeit = Zeit * 1000;
Thread.sleep(Zeit);
}
catch(Exception ex)
{
System.out.println("Fehlercode: " + ex.getMessage());
}
}
private static void Ende() //ende
{
System.out.printf("Ich wünsche dir noch einen schönen Tag bis zum nächsten Mal%n%n");
Schlafen(4);
System.exit(0);
}
private static void Schreiben(int Anlaeufe, int Schwierigkeitsgrad) //Schreibt den letzten versuch in Datei
{
String Home = System.getProperty("user.home"); //ermittelt home pfad
Path Verzeichnis = Paths.get(Home, "Highscores.csv"); //setzt den zielpfad zusammen
String beschreibung = "";
StandardOpenOption option;
if(Files.exists(Verzeichnis))
option = StandardOpenOption.APPEND;
else
option = StandardOpenOption.CREATE;
switch(Schwierigkeitsgrad) //'erstellt' die beschreibung
{
case 1:
beschreibung = "Leicht";
break;
case 2:
beschreibung = "Mittel";
break;
case 3:
beschreibung = "Schwer";
break;
}
try(BufferedWriter schreiben = Files.newBufferedWriter(Verzeichnis, option))
{
LocalDateTime zeit = LocalDateTime.now();
String Datum = String.format("%td.%tm.%tY %tH:%tM:%tS", zeit, zeit, zeit, zeit, zeit, zeit);
String zeile = String.format("%s;%d;%s", beschreibung, Anlaeufe, Datum);
schreiben.write(zeile);
schreiben.newLine();
}
catch(Exception ex)
{
System.out.println("Fehlercode: " + ex.getMessage());
}
}
private static void Highscores()
{
System.out.printf("%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n%n");
String Home = System.getProperty("user.home");
Path Verzeichnis = Paths.get(Home, "Highscores.csv");
Scanner eingaben = new Scanner(System.in);
String eingabeUser = "";
try(BufferedReader lesen = Files.newBufferedReader(Verzeichnis))
{
String Zeile = lesen.readLine();
System.out.println("Schwierigkeit Versuche Datum");
while(Zeile != null)
{
for(int i = 0; i<1; i++)
{
String[] teile = Zeile.split(";");
String Schwer = teile[0];
String Versuche = teile[1];
String Datum = teile[2];
System.out.println(Schwer + " " + Versuche + " " + Datum);
}
Zeile = lesen.readLine();
}
}
catch(Exception ex)
{
}
System.out.print("Fertig? ");
eingabeUser = eingaben.nextLine();
Menü();
}
}
MFG
xWerter