Hi Leute !
Ich bin grade in der Anfangsphase meines Programmes Schiffe versenken. Computer setzt Schiffe auf Feld und ich muss versuchen sie zu treffen. Allerdings hindert mich ein Problem:
Über die Konsole lese ich sowohl den x-Wert ein, als auch den y-Wert. Beide Werte wollte ich in einem Array speichern um dieses dann mit Spielfeld zu vergleichen.
Ich fülle das Komplette Feld mit Nullen. Die Schiffe füllen die besetzten Felder mit "1". Die nun von mir eingelesen Koordinaten werden in ein anderes Array gespeichert und gleich "1" gesetzt. Jetzt soll geprüft werden ob beide Arrays(Position des Schiffes und eingegebene Koordinaten) den Inahlt 1 haben.
Das kann ich nicht umsetzen.
Was ich mich Frage. Wenn der Compiler beide Array inhaltlich vergleicht, achtet er darauf dass auch x und y werte übereinstimmen? Oder nimmt er nur den Inhalt ??
Hatte auch schon gedacht, dass ich das 2. Array shot[][] weglasse und die eingelesenen Koordinaten in das Array field[][] reinschreibe( Wo ich vorher schon alle Koordinaten mit "0" gefüllt habe. Wenn es dieses field gibt mit Verweis auf ein Schiff, dann Treffer.
Was denkt ihr ??
Programm funzt einfach net. Fehlermeldung bei diesem Quelltext: NullPointerExcpetion Line86, Line30 !!
Danke für eure Hilfe
Ich bin grade in der Anfangsphase meines Programmes Schiffe versenken. Computer setzt Schiffe auf Feld und ich muss versuchen sie zu treffen. Allerdings hindert mich ein Problem:
Über die Konsole lese ich sowohl den x-Wert ein, als auch den y-Wert. Beide Werte wollte ich in einem Array speichern um dieses dann mit Spielfeld zu vergleichen.
Ich fülle das Komplette Feld mit Nullen. Die Schiffe füllen die besetzten Felder mit "1". Die nun von mir eingelesen Koordinaten werden in ein anderes Array gespeichert und gleich "1" gesetzt. Jetzt soll geprüft werden ob beide Arrays(Position des Schiffes und eingegebene Koordinaten) den Inahlt 1 haben.
Das kann ich nicht umsetzen.
Code:
import java.lang.String.*;
import java.io.*;
import java.util.*;
public class SchiffeVersenken
{
static int field[][];
static int runde, x, y;
static int posX, posY;
static int schiff1 = 1;
static int schiff2 = 2;
static int schiff3 = 3;
static int schiff4 = 4;
static SchiffeVersenken o;
static BufferedReader eingabe;
static int xx, yy;
static int shot[][];
public static void main(String[] args)
{
o = new SchiffeVersenken();
o.createField();
o.setShips();
o.startGame();
} //main()
static void createField()
{
field = new int[10][10];
for (int x=0; x<field.length; x++) //fills Field with "0"
{
for (int y=0; y<field.length; y++ )
{
field[x][y]= 0;
//System.out.println(x+" "+y+" "+field[x][y]);
}
}
} //createField()
static void setShips()
{
field[0][0] = schiff1;
} //setShips()
static void startGame()
{
try
{
eingabe = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Bitte geben Sie die X-Koordinate an: ");
posX = Integer.parseInt(eingabe.readLine());
System.out.print("Bitte geben Sie die Y-Koordinate an: ");
posY = Integer.parseInt(eingabe.readLine());
shot[posX][posY]= 1; // Array mit eingelesenen Koordinaten
if(Arrays.equals(shot, field)) // prüft ob Schifffeld und mein Ratefeld identisch sind und
System.out.print("Treffer"); // somit Treffer
}//try
catch(IOException e){}
}
} //class
Was ich mich Frage. Wenn der Compiler beide Array inhaltlich vergleicht, achtet er darauf dass auch x und y werte übereinstimmen? Oder nimmt er nur den Inhalt ??
Hatte auch schon gedacht, dass ich das 2. Array shot[][] weglasse und die eingelesenen Koordinaten in das Array field[][] reinschreibe( Wo ich vorher schon alle Koordinaten mit "0" gefüllt habe. Wenn es dieses field gibt mit Verweis auf ein Schiff, dann Treffer.
Was denkt ihr ??
Programm funzt einfach net. Fehlermeldung bei diesem Quelltext: NullPointerExcpetion Line86, Line30 !!
Danke für eure Hilfe