Hallo Ihr!
Wie Ihr Euch wahrscheinlich schon denken könnt, geht es auch bei mir um eine Aufgabe für die Uni.
Wir sollen ein "einseitiges" Schiffe versenken programmieren. Soll heißen, der Computer setzt seine Schiffe auf ein 10x10 Spielfeld und ich schieße diese dann mit einer Eingabe a la "F5" ab.
Nun soll nach jedem Zug das Spielfeld eingeblendet werden und der aktuelle Spielstand durch die Symbole (x getroffen, - vorbei, o noch nicht beschossen) angezeigt werden.
Und genau da hänge ich nun.....
Nachdem ich meinen ersten Tipp abgegeben habe, kommt anstatt des Spielfelds nur eine komische Zahlenfolge (ich weiß, dass das daran liegt, dass ich auf diese Weise kein Array ausdrucken kann, aber ich komme einfach nicht auf die richtige Lösung)
Könntet ihr mir bitte helfen****
Hier ist mein bisheriger Code:
Wie Ihr Euch wahrscheinlich schon denken könnt, geht es auch bei mir um eine Aufgabe für die Uni.
Wir sollen ein "einseitiges" Schiffe versenken programmieren. Soll heißen, der Computer setzt seine Schiffe auf ein 10x10 Spielfeld und ich schieße diese dann mit einer Eingabe a la "F5" ab.
Nun soll nach jedem Zug das Spielfeld eingeblendet werden und der aktuelle Spielstand durch die Symbole (x getroffen, - vorbei, o noch nicht beschossen) angezeigt werden.
Und genau da hänge ich nun.....
Nachdem ich meinen ersten Tipp abgegeben habe, kommt anstatt des Spielfelds nur eine komische Zahlenfolge (ich weiß, dass das daran liegt, dass ich auf diese Weise kein Array ausdrucken kann, aber ich komme einfach nicht auf die richtige Lösung)
Könntet ihr mir bitte helfen****
Hier ist mein bisheriger Code:
Code:
public class SchiffeVersenken {
public static void main (String[] args)
{
System.out.println("Willkommen zu Schiffe versenken deluxe!");
//Spielfeld-Objekt anlegen
SpielHelfer meinSpielfeld = new SpielHelfer(10);
//Schiffe erstellen
Schiff [] computerSchiffe = {new Schlachtschiff(),new Kreuzer(),new Kreuzer(),new Zerstoerer(),new Zerstoerer(),new Uboot()};
int[] koordinaten;
for(int i =0; i< computerSchiffe.length; i++)
{
boolean platziert = false;
while(!platziert)
{
koordinaten =
meinSpielfeld.gibMirSchiff(computerSchiffe[i].getSchiffsLaenge());
platziert = meinSpielfeld.platziereSchiff(computerSchiffe[i],
koordinaten[0], koordinaten[1], koordinaten[2], koordinaten[3]);
}
}
System.out.println(meinSpielfeld.zeigeSpielfeld());
System.out.println("Schiffe sind gesetzt.");
System.out.println(meinSpielfeld.benutzerEingabe());
Spielstand display = new Spielstand();
Code:
public class Spielstand {
public SpielHelfer eingabe;
private int treffer = 0;
public Schiff [] [] feld;
public boolean zeigeSpielstand(int [] tipp)
{
boolean daneben= true;
for (int i =0; i<=feld[0].length; i++)
{
for (int j=0; j<=feld.length; j++)
{
if (feld[tipp[0]][tipp[1]]!= null)// getroffen
{
System.out.println("Getroffen");
daneben = false;
treffer++;
}
}
}
if (daneben)
{
for (int i =0; i<=feld[0].length; i++)
{
for (int j=0; j<=feld.length; j++)
{
System.out.println("Vorbei");
}
}
}
System.out.print(feld [tipp[0]][tipp[1]] == null ? "x " : "- ");
return daneben;
}
public int getTreffer()
{
return treffer;
}
}
Code:
public class SpielHelfer
{
public Schiff [][] feld;
public Schiff schiffsLaenge;
private int ausrichtung = (int)Math.random ();
public SpielHelfer(int groesse)
{
feld = new Schiff [groesse][groesse];
}
public String zeigeSpielfeld ()
{
String zeigeFeld = "Ihr Spielfeld:"+ "\n"+ "\n";
for (int spalte=0; spalte<feld[0].length; spalte++)
{
for (int zeile=0; zeile<feld.length; zeile++)
{
zeigeFeld += feld [zeile][spalte]== null ? "o " : "o ";
}
zeigeFeld += "\n";
}
return zeigeFeld;
}
public int [] gibMirSchiff (int schiffAusmaß)
{
int[] koordinaten = new int[4];
Random random = new Random();
int ebenenGroesse = feld.length;
int konkreteGroesse = ebenenGroesse - schiffAusmaß;
int xKoordinate = Math.abs(random.nextInt()%konkreteGroesse);
int yKoordinate = Math.abs(random.nextInt()%konkreteGroesse);
//richtung = true --> waagrecht
//richtung = false --> senkrecht
boolean richtung = random.nextBoolean();
koordinaten[0] = xKoordinate;
koordinaten[2] = yKoordinate;
if(richtung)
{
koordinaten[1] = xKoordinate + schiffAusmaß -1;
koordinaten[3] = yKoordinate;
}
else
{
koordinaten[1] = xKoordinate;
koordinaten[3] = yKoordinate+ schiffAusmaß - 1;
}
return koordinaten;
}
public boolean platziereSchiff(Schiff schiff, int startZeile, int endZeile, int startSpalte,
int endSpalte)
{
boolean frei = true;
for(int zeile = startZeile; zeile <= endZeile; zeile++)
{
for(int spalte = startSpalte; spalte<= endSpalte; spalte++)
{
if (feld[zeile][spalte]!=null)
{
frei = false;
}
}
}
if(frei)
{
for(int zeile = startZeile; zeile <= endZeile; zeile++)
{
for(int spalte = startSpalte; spalte<= endSpalte; spalte++)
{
feld[zeile][spalte] = schiff;
}
}
}
return frei;
}
public int [] benutzerEingabe()
{ Spielstand current = new Spielstand();
Scanner scan = new Scanner(System.in);
String tipp1 = scan.next();
char []tipp2 = tipp1.toCharArray();
int tippy = ((int)tipp2 [0])-58;
int tippx = (int)tipp2[1];
int [] tipp = new int [2];
tipp[0]= tippx;
tipp[1]= tippy;
return tipp;
}