Schiffe versenken

123123123

Erfahrenes Mitglied
Hallo!
Mal eine Frage:
Gibt es irgendwo ein Beispiel zu das Spiel 'Schiffe versenken' für NetBeans?
Es soll nicht graphisch dargestellt werden, sondern es geht einfach um Prinzip! Es kann mit Nullen und Kreuzen dargestellt werden!
Ich finde einfach keinen passendes und ich hab selber noch nie mit Java gearbeitet.
Dankeschön!:)
 
Hi,

eventuell hilft dir das weiter: klick.

Ansonsten: Nein, ich wüsste nicht wo man das sonst herunterladen kann. Ist eine Aufgabe, die nicht allzu schwer ist und somit auch für Anfänger geeignet ist.

Gruß,
BK
 
Dankeschön für die Seiten.
Hab mal selber was gebastelt aber ich kriege eine endlose Schleife, warum?
Code:
package Gebiet;

public class Gebiet
{
    /**
    * @param args
    */
    public static void main(String[] args)
    {
        int x=10;
        int y=10;
        int counter = 1;
        
        int [][] O = new int [x][y];
        
        for(int col = 0; col < y; col++)
        {
            for(int line = 0; line < x; line++)
            {
                O    [col][line] = -1;
            }
        }
        System.out.println("");
        while(counter < 11)
        {
            for(int k = 0; k < x; k++)
            {
                int a = (int) (Math.random()*x);
                int b = (int) (Math.random()*y);
                O[a][b] = 0;
            }
            System.out.println();
            
            for(int col = 0; col < y; col++)
            {
                for(int line = 0; line < x; line++)
                {
                    if(O[col][line] == -1)
                    {
                        System.out.print("0" + " ");
                    }
                    
                    if(O[col][line] == 0)
                    {
                        System.out.print("X" + " ");
                    }

                    if(O[col][line] == 1)
                    {
                        System.out.print("S" + " ");
                    }
                }
                System.out.println("");
            }
            
        
        }
        
    }
}

Also ich brauch nur 2 solche 10x10 Kästchen erstmal ohne die Schiffe! Ich bin ziemlich am Anfang mit Java deswegen bitte ich euch mir mit einfach Wörtern zu erklären! :)
Danke!
 
Hi,

Java:
while(counter < 11)

Du erhöhst den Counter nie.

Würde dir ausserdem empfehlen das ganze etwas abstrakter zu machen. Somit kannst du dich auch etwas genauer mit Vererbung auseinander setzen.

Zum Beispiel:
Eine abstrakte Klasse Feld. Davon erben dann die Klassen Schiff und Wasser. In jeder von Feld abgeleiteten Klasse kannst du die toString() Methode überschreiben, die bei Aufruf den entsprechenden Buchstaben zurückgibt die das Feld darstellt.

Gruß,
BK
 
Zuletzt bearbeitet:
Ok, was du mir vogeschlagen hast verwirrt mich! :)
Hab jetzt so gelöst:

Code:
package Schiffeversenken;

public class Schiffeversenken {

	    /**
	    * @param args
	    */
	public static void main(String[] args) {
	        int x=8;
	        int y=8;
	        	        
	        int [][] Schiff = new int [x][y];
	        
	        for(int spalte = 0; spalte < y; spalte++)
	        {
	            for(int row = 0; row < x; row++)
	            {
	            	Schiff   [spalte][row] = -1;
	            }
	        }
	        System.out.println("");
	        
	            for(int c = 0; c < x; c++)
	            {
	                int a = (int) (Math.random()*x);
	                int b = (int) (Math.random()*y);
	                Schiff[a][b] = 0;
	            }
	            System.out.println();
	            
	            for(int spalte = 0; spalte < y; spalte++)
	            {
	                for(int row = 0; row < x; row++)
	                {
	                    if(Schiff[spalte][row] == -1)
	                    {
	                        System.out.print("0" + " ");
	                    }
	                    
	                    if(Schiff[spalte][row] == 0)
	                    {
	                        System.out.print("X" + " ");
	                    }

	                }
	                System.out.println("");
	            }
	            
	            System.out.println("<---------Gegner---------->");
	            int x1=8;
		        int y1=8;
		     
		        int [][] Feind = new int [x1][y1];
		        
		        for(int spalte = 0; spalte < y1; spalte++)
		        {
		            for(int row = 0; row < x1; row++)
		            {
		            	Feind   [spalte][row] = -1;
		            }
		        }
		        System.out.println("");
		        
		            for(int k = 0; k < x1; k++)
		            {
		                int a = (int) (Math.random()*x1);
		                int b = (int) (Math.random()*y1);
		                Feind[a][b] = 0;
		            }
		            System.out.println();
		            
		            for(int spalte = 0; spalte < y1; spalte++)
		            {
		                for(int row = 0; row < x1; row++)
		                {
		                    if(Feind[spalte][row] == -1)
		                    {
		                        System.out.print("0" + " ");
		                    }
		                    
		                    if(Feind[spalte][row] == 0)
		                    {
		                        System.out.print("X" + " ");
		                    }

		                }
		                System.out.println("");
		            }
	        }
	        
	    }


Kann man das meinem Lehrer zeigen? Ich musste nur das Grundgerüst aufbauen, ohne graphische Tricks ;)!
 
Zuletzt bearbeitet:
Hi,

ich würde da noch ein paar Änderungen vorschlagen:

1. Du hast alles in der Main-Methode. Das sieht nicht schick aus, und wird so normal auch nicht gemacht. Lagere die einzelnen Teile in sinnvollen Schritten in Methoden aus.

2. Die static main() ist eigentlich nur dazu da, eine Instanz von dem Objekt zu erstellen, in der sie steht. Das heißt die komplette Funktionalität wird über Methoden des Objektes durchgeführt.

3. Du hast viel redundanten Code drin und das Ding lässt sich schlecht erweitern. Wieder ein Grund die einzelnen Schritte in Methoden auszulagern.

4. Du hast keine Kommentare drin. Lediglich die Standard-JavaDoc Kommentare, diese sagen aber auch nichts aus.

Gruß
BK
 
Zurück