package LernProgramm;

import java.util.Random;
import java.util.Scanner;

public class FunktionenAusgelagert {

//Funktionen, die von der main Funktion ausgelagert wurden, da sonts zu unüberscihtlich
//1
	public static void Karteikarten() {

		try (Scanner eingabeKK = new Scanner(System.in)) {

			String[][] karteikarten = { { "Was ist die Hauptstadt von Deutschland?", "Berlin" },
					{ "Welches ist der größtes Planet in unserem Sonnensystem?", "Jupiter" },
					{ "Wer hat die Mona Lisa gemalt?", "Leonardo da Vinci" },
					{ "Wer ist der Bundeskanzler von Deutschland?", "Olaf Scholz" },
					{ "Wer hat den Z1 entworfen?", "Zuse" },
					{ "W", "Olaf Scholz" },
					{ "Wer ist der Bundeskanzler von Deutschland?", "Olaf Scholz" },
					// Sonstige Fragen können hier eingefügt werden
			};

			int PunkteZähler = 0;
			for (String[] karteikarte : karteikarten) {
				System.out.println(karteikarte[0]);
				String answer = eingabeKK.nextLine();
				if (answer.equalsIgnoreCase(karteikarte[1])) {
					System.out.println("Korrekt!");
					PunkteZähler++;
				} else {
					System.out.println("Leider falsch. Die richtige Antwort wäre: " + karteikarte[1]);
				}
			}
			System.out.println("Dein Punktestand ist " + PunkteZähler + " von insgesamt " + karteikarten.length);
		}
	}

//2	
	public static void Fakultaet() {

		try (Scanner eingabeFK = new Scanner(System.in)) {
			String ein = eingabeFK.nextLine();
			int zahlFK = Integer.parseInt(ein);

			if (zahlFK <= 0) {
				System.out.println("1");
			}
			int ergebnis = 1;
			for (int i = 1; i <= zahlFK; i++) {
				ergebnis *= i;
			}
			System.out.println(ergebnis);
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}

	}

//3	
	public static void schaltjahr() {

		System.out.println("Welches Jahr möchtest du untersuchen?");

		try (Scanner einSJ = new Scanner(System.in)) {
			String jahr = einSJ.nextLine();
			int schaltjahr = Integer.parseInt(jahr);

			if (schaltjahr % 400 == 0)
				System.out.println("Schaltjahr!");
			else if (schaltjahr % 100 == 0)
				System.out.println("Kein Schaltjahr!");
			else if (schaltjahr % 4 == 0)
				System.out.println("Schaltjahr!");
			else
				System.out.println("Kein Schaltjahr!");
		} catch (NumberFormatException e) {
			e.printStackTrace();

		}
	}

//4
	public static void Quizz() {
		Random rand = new Random();
		try (Scanner einQ = new Scanner(System.in)) {
			String[][] fragen = {
					{ "Welche Farbe hat ein Bananen?", "A) Gelb", "B) Grün", "C) Blau", "D) Rot", "A" },
					{ "Wie viele Beine hat eine Spinne?", "A) 4", "B) 6", "C) 8", "D) 10", "C" },
					{ "Wer hat die Formel E=mc² entwickelt?", "A) Isaac Newton", "B) Albert Einstein",
							"C) Galileo Galilei", "D) Stephen Hawking", "B" },
					{ "Welches ist der größte Planet im Sonnensystem?", "A) Merkur", "B) Venus", "C) Erde",
							"D) Jupiter", "D" }
					// Sonstige Fragen
			};
			int questionIndex = rand.nextInt(fragen.length);
			String[] currentQuestion = fragen[questionIndex];

			System.out.println(currentQuestion[0]);
			System.out.println(currentQuestion[1]);
			System.out.println(currentQuestion[2]);
			System.out.println(currentQuestion[3]);
			System.out.println(currentQuestion[4]);
			String antwort = einQ.nextLine();

			if (antwort.equalsIgnoreCase(currentQuestion[5])) {
				System.out.println("Richtig!");
			} else {
				System.out.println("Falsch!");
			}

		}
	}

//5
	public static void Binaerrechner() {

		try (Scanner scannerBR = new Scanner(System.in)) {
			System.out.print("Gebe den ersten Binärcode ein: ");
			String binaerCode1 = scannerBR.nextLine();
			System.out.print("Gebe den zweiten Binärcode ein: ");
			String binaerCode2 = scannerBR.nextLine();
			System.out.print("Gebe die gewünschte Operation ein (+, -, *, /): ");
			char operation = scannerBR.next().charAt(0);

			int ergebnisBR = calculate(binaerCode1, binaerCode2, operation);
			System.out.println("Das Ergebnis ist: " + ergebnisBR);
		}
	}

	public static int calculate(String binaryCode1, String binaryCode2, char operation) {

		int decimal1 = binaryToDecimal(binaryCode1);
		int decimal2 = binaryToDecimal(binaryCode2);

		int result = 0;
		switch (operation) {
		case '+':
			result = decimal1 + decimal2;
			break;
		case '-':
			result = decimal1 - decimal2;
			break;
		case '*':
			result = decimal1 * decimal2;
			break;
		case '/':
			result = decimal1 / decimal2;
			break;
		default:
			System.out.println("Ungültige Operation! Bitte wähle +, -, * oder /.");
			return 0;
		}
		return decimalToBinary(result);
	}

	public static int binaryToDecimal(String binaryCode) {

		int decimal = 0;
		for (int i = binaryCode.length() - 1; i >= 0; i--) {
			char currentChar = binaryCode.charAt(i);
			if (currentChar == '1') {
				decimal += Math.pow(2, binaryCode.length() - i - 1);
			} else if (currentChar != '0') {
				System.out.println("Ungültiger Binärcode! Bitte gebe nur Nullen und Einsen ein.");
				return 0;
			}
		}
		return decimal;
	}

	public static int decimalToBinary(int decimal) {
		int binary = 0;
		int power = 0;
		while (decimal > 0) {
			binary += (decimal % 2) * (int) Math.pow(10, power);
			decimal /= 2;
			power++;
		}
		return binary;
	}

//6
	public static void PrimBis100() {
		for (int i = 2; i <= 100; i++) {
			boolean istPrimZahl = true;
			for (int j = 2; j < i; j++) {
				if (i % j == 0) {
					istPrimZahl = false;
					break;
				}
			}
			if (istPrimZahl) {
				System.out.print(i + " ");
			}
		}
	}

	public static void EasterEgg() {
		        System.out.println("          _______");
		        System.out.println("         /       \\");
		        System.out.println("        (   0   0  )");
		        System.out.println("         \\  ---  /");
		        System.out.println("          ------");
		    }

	public static void Timer() {
        try (Scanner input = new Scanner(System.in)) {
			int actualTime = (int) (Math.random() * 10 + 1);
			System.out.print("Schätzen Sie die Zeit, die in Sekunden verstreichen wird (1-10): ");
			int estimatedTime = input.nextInt();
			System.out.println("Tatsächliche Zeit: " + actualTime + " Sekunden");
			System.out.println("Geschätzte Zeit: " + estimatedTime + " Sekunden");
			int difference = Math.abs(actualTime - estimatedTime);
			System.out.println("Differenz: " + difference + " Sekunden");
			if (difference == 0) {
			    System.out.println("Perfekte Schätzung!");
			} else if (difference <= 2) {
			    System.out.println("Sehr gute Schätzung!");
			} else if (difference <= 4) {
			    System.out.println("Gute Schätzung.");
			} else {
			    System.out.println("Schlechte Schätzung.");
			}
		}
	}
	
	
	
	
}