Hier ist ein Code aus dem Buch "Java von Kopf bis Fuß" aus dem Kapitel 5. Es geht um eine vereinfachte Version des Spiels "Schiffe versenken". Man hat hier ein Array mit drei aufeinanderfolgenden Zahlen (z.B. 3,4,5), die man hier auch noch selber festlegt. Dann muss man eine Zahl "tippen", und bekommt vom System die Antwort ausgespuckt, ob man jetzt "vorbei" geschossen hat, einen "Treffer" gelandet hat, oder das Schiff "versenkt" hat.
Das Problem ist Folgendes. Wenn ich jetzt eine 3 als Tipp eingebe, sagt mir das System "Treffer". Bei einer 4 genauso. Bei einer 5 aber auch - es heißt immer noch "Treffer", und nicht "versenkt". Anscheinend kann sich das Programm nach dem jeweiligen Ausführen nicht an den letzten Anlauf erinnern.
Im Code gibt es ja noch eine SpielHelfer-Klasse, die im Buch vorerst nicht näher beschrieben ist. Es hieß, man soll es erst einmal so hinnehmen, die Erläuterungen dieses und ähnlicher Codes kommen erst im Kapitel 14 (wie gesagt, ich bin im Kapitel 5). Ich dachte mir, dass dieser Code eben das bewirkt, was ich momentan vermisse - dass sich das Programm jedes Ergebnis einer Ausführung merkt, und dieses bei der nächsten Ausführung berücksichtigt. Tut es aber nicht.
Wenn ich diese SpielHelfer-Klasse gänzlich weglasse, habe ich am Ende genau dasselbe raus.
Der Code ist genauso, wie er im Buch steht. Auf meinem Rechner habe ich noch zusätzliche, abgespeckte Versionen erstellt, aber hier ist der Original-Code. Was sagt Ihr dazu? Wie bringe ich das Programm dazu, mir bei der dritten richtigen Zahl "versenkt" rauszugeben?
Das Problem ist Folgendes. Wenn ich jetzt eine 3 als Tipp eingebe, sagt mir das System "Treffer". Bei einer 4 genauso. Bei einer 5 aber auch - es heißt immer noch "Treffer", und nicht "versenkt". Anscheinend kann sich das Programm nach dem jeweiligen Ausführen nicht an den letzten Anlauf erinnern.
Im Code gibt es ja noch eine SpielHelfer-Klasse, die im Buch vorerst nicht näher beschrieben ist. Es hieß, man soll es erst einmal so hinnehmen, die Erläuterungen dieses und ähnlicher Codes kommen erst im Kapitel 14 (wie gesagt, ich bin im Kapitel 5). Ich dachte mir, dass dieser Code eben das bewirkt, was ich momentan vermisse - dass sich das Programm jedes Ergebnis einer Ausführung merkt, und dieses bei der nächsten Ausführung berücksichtigt. Tut es aber nicht.
Wenn ich diese SpielHelfer-Klasse gänzlich weglasse, habe ich am Ende genau dasselbe raus.
Der Code ist genauso, wie er im Buch steht. Auf meinem Rechner habe ich noch zusätzliche, abgespeckte Versionen erstellt, aber hier ist der Original-Code. Was sagt Ihr dazu? Wie bringe ich das Programm dazu, mir bei der dritten richtigen Zahl "versenkt" rauszugeben?
Java:
public class EinfachesDotCom {
int[] zellorte;
int anzahlTreffer;
public void setZellorte(int[] orte) { zellorte = orte;}
public String prüfDich(String stringTipp) {
int tipp = Integer.parseInt(stringTipp);
String ergebnis = "Vorbei";
for (int zelle : zellorte)
{if (tipp == zelle) {ergebnis = "Treffer"; anzahlTreffer++; break;}}
if (anzahlTreffer == zellorte.length) {
ergebnis = "Versenkt";
}
System.out.println(ergebnis);
return ergebnis;
}
}
Java:
public class EinfachesDotComTestlauf {
public static void main (String[] args) {
EinfachesDotCom dot = new EinfachesDotCom();
int[] orte = {2,3,4};
dot.setZellorte(orte);
String tipp = "4";
String ergebnis = dot.prüfDich(tipp);
}
}
Java:
import java.io.*;
public class SpielHelfer {
public String getBenutzereingabe(String prompt) {
String eingabeZeile = null;
System.out.print(prompt + " ");
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
eingabeZeile = is.readLine();
if (eingabeZeile.length() == 0) return null;
}
catch (IOException e) {System.out.println("IOException: " + e); }
return eingabeZeile;
}
}