King Schroedinger

Hey Leute ich habe ein Problem: Ich verstehe es einfach nicht : Ich möchte ein Textadventure machen und wenn ich im folgenden Code 4x einen Casefall anwende möchte ich zum "Schatz" kommen. Wäre es möglich das mir mal zu zeigen wie das geht, bzw. auch wie das mit der Krone geht ^^ ich weiß nicht was im default geprüft wird das ist schwer:

Java:
public class schroedinger {

	public static void main(String[] args)throws IOException {
       
		System.out.println("Willkommen im Textadventure Spiel");
		System.out.println("Hier erstmal die Steuerung:"
				+ "(a)= links;(s)= nach unten; (d)= rechts;(w)=nach oben\n\n\n");
		
		System.out.println("Du bist ein frecher Kerl, der sich auf die Reise macht.");
		
		BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
		String p;
		
		while((p=ein.readLine())!=null) {
			switch(p.toLowerCase()){
				
			case "w":
				System.out.println("Du gehst nach Westen");
			case "s":
				System.out.println("Du gehst nach Süden");
			case "o":
				System.out.println("Du gehst nach Osten");
			case "n":
				System.out.println("Du gehst nach Norden");
				if() {                                                                            <=== 4mal nach norden dann haste die Krone aber wieeeeeeeeee kriege ich 
                                                                                                                              den fall in eine bedingung
					
				}
			default:
				System.out.println("Du hast eine falsche Eingabe getätigt!bitte versuche es nochmal");
			
			}
			
		}
		
 }
	public static void krone(){
		
		final int breite = 17;
		final int haelfte= (breite -1)/2;
		final int hohe = haelfte;
		final int lReihe= hohe-1;
		
		for(int i = 0;i<hohe;i++) {
			for(int j = 0;j<breite;j++) {
		        switch(i) {
				
				case 0:
				System.out.println((j==0||j==haelfte|| j<breite-1)? "*":"");
				
				case lReihe:
				System.out.println("8");
				
				default:
					System.out.println((j<i||(j>haelfte-1 && j<haelfte+i)||j>=breite-i)? 0:"");
				
					
				}
			}
			System.out.println();
		}
	}
}
 
Zuletzt bearbeitet von einem Moderator:
also ganz einfach wäre: Erstelle eine Variable als Zähler. Immer wenn er nach Norden geht, erhöhst Du um eins. Dann kannst du prüfen, ob er 4 Mal nach Norden gegangen ist.

Aber wenn man sich das etwas anschaut, dann willst Du evtl. eher sowas wie eine Position speichern, also x und y Koordinate und die veränderst Du dann immer. Und erst wenn die mit der Position der Krone überein stimmt, dann hat der Spieler die Krone.
 
also ganz einfach wäre: Erstelle eine Variable als Zähler. Immer wenn er nach Norden geht, erhöhst Du um eins. Dann kannst du prüfen, ob er 4 Mal nach Norden gegangen ist.

Aber wenn man sich das etwas anschaut, dann willst Du evtl. eher sowas wie eine Position speichern, also x und y Koordinate und die veränderst Du dann immer. Und erst wenn die mit der Position der Krone überein stimmt, dann hat der Spieler die Krone.
okay ja eine Forschleife ist gut nur wie setze ich sie um^^ ich bin im Fachbuch Schrödinger programmiert java. Ich möchte die Krone ausgeben nachdem ich 4x nach Norden gegangen bin ich dachte an etwas wie p.toLowerCase(n)==4; aber das geht nicht und ich habe auch eigentlich noch nicht so viele Möglichkeiten, weil ich gerade die Schleifen durchgearbeitet habe und weis wie Operatoren funktionieren bzw wie ich sie anwende aber wie hilft mir das jetzt weiter. Ich möchte ja streng genommen prüfen ob n 4x betätigt wurde. Da fällt mir nur toLowerCase ein weil hier spezielle Fälle überprüft werden und ich eigentlich noch nichts anderes kenne. Es ist frustrierend XD
 
Zuletzt bearbeitet:
Also direkt an den Anfang der main Methode (denn in der läuft derzeit alles ab, d.h. eine solche "lokale Variable" reicht) erstellst Du eine Variable northCount und setzt diese auf 0:
int northCount = 0;

Dein case Befehl änderst Du dann ab. Wenn "n", dann erhöhst Du northCount. Dann kannst Du abfragen, ob die Variable 4 ist.

Das sähe dann in etwa so aus:
Code:
case "n":
                System.out.println("Du gehst nach Norden");
                northCount++;
                if(northCount == 4) {
 
Also direkt an den Anfang der main Methode (denn in der läuft derzeit alles ab, d.h. eine solche "lokale Variable" reicht) erstellst Du eine Variable northCount und setzt diese auf 0:
int northCount = 0;

Dein case Befehl änderst Du dann ab. Wenn "n", dann erhöhst Du northCount. Dann kannst Du abfragen, ob die Variable 4 ist.

Das sähe dann in etwa so aus:
Code:
case "n":
                System.out.println("Du gehst nach Norden");
                northCount++;
                if(northCount == 4) {
Ein Erlöser danke : Ich möchte aber noch kurz verstehen: kann ich dass in eine Forschleife umwandeln indem ich sage:

for(int i = 0; i<4;i++){
if(i==4){
System.out.println(krone());
 
Das kannst Du natürlich machen, aber das ist ja nicht, was Du willst:
Wenn der Nutzer "n" eingibt, dann läuft eine Schleife, in der der Computer von 1 bis 3 zählt (i<4 bedeutet, dass er abbricht und nicht mehr durch die Schleife läuft, wenn i=4 ist.) In der Schleife prüft er dann, ob i 4 ist um dann etwas zu machen....

Aber dir geht es ja darum, dass der Benutzer vier mal "n" eingeben soll.

Wir können das auch einmal versuchen, es bildlich zu machen:

Ich bin der Benutzer und du bist die Routine/das Programm.
Ich sage Dir "n".
Willst Du dann bis 4 zählen oder so? Nein, Du willst doch zählen, wie oft ich "n" gesagt habe.
Also musst Du dir merken können, wie oft ich schon "n" gesagt habe ... daher brauchst Du einen Zettel auf den Du das schreiben kannst (Zettel = Variable. Programme brauchen Zettel um sich etwas zu merken!)
Wenn wir anfangen zu spielen nimmst Du Dir so einen Zettel und stellst sicher, dass da 0 drauf steht.
Immer wenn ich "n" sage, schaust Du auf den Zettel, liest die Zahl, addierst 1 und schreibst das Ergebnis wieder auf.
Und dann schaust du: Ist da eine 4 auf dem Zettel?

Hoffe das war jetzt mehr hilfreich als verwirrend.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben