DotComVersenken -Spiel im Schiffeversenken-Stil - erstellen- Komm jetzt nicht weiter.

Status
Nicht offen für weitere Antworten.

p.tryfle

Mitglied
So, das Spielfeld wird nun durch die Benutzer-Angabe aufgebaut.
Das Spielfeld kann maximal 10 x 10 felder haben muss aber nicht quadratisch sein.
Bis hier hin sieht alles gut aus.:toll:

ABER NUN KOMME ICH NICHT WEITER:
in diesem Spiel werden anstatt Schiffe folgende dotcom-Adressen versenkt:
"amazon", "moodle", "uni-due", "google","youtube", "studivz", "facebook"

Diese dotComs sollen sich nun beim Aufbau des Spielfeldes zufällig per Random-Methode verteilen,
Sie sollten sich entweder vertikal, horizontal oder diagonal anordnen.
Wie bekomme ich diese Dotcoms nun in mein Spielfeld?
Ich habe einen zweidimensionalen Array [][] für das Spielfeld genommen und
wollte nun noch einen für die DotComs nehmen. Doch ich habe da echt ne blockade, wie muss ich das in mein Schleifen-konstrukt einbauen.

Die andere Frage ist die, wie ich mir die Random-Methode zu nutzen mache um die Dotcoms dann tatsächlich zufällig setzen zu lassen.

Hier mein code! Soweit sieht es gut aus:

Code:
import java.util.Random;
import java.util.Scanner;

public class DotComVersenken {

	


	
		static String [][] dotComs = new String [][]{{"amazon"}, {"moodle"}, {"uni-due"}, {"google"}, {"youtube"}, {"studivz"}, {"facebook"}};
		static int xKoordinate;
		static int yKoordinate;
	  
 	
	    
       public static void spielEinrichten(){
	 
    	   Scanner sc = new Scanner(System.in);
   	
   	   System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
      	
      	  xKoordinate = sc.nextInt();   											
         
    
      	 while  (xKoordinate > 10){
      		System.out.println("OOOOOHPS - Die Eingabe war falsch!");
        	  System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
        	  System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
        	  System.out.println("Bitte Probieren Sie es gleich nochmal.");
              System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
              
          	  xKoordinate = sc.nextInt();   
      	 	}
    
       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
      	
   	      yKoordinate = sc.nextInt();   											   //
   	   
   	    
   	 	 while  (yKoordinate > 10){
   	 		System.out.println("OOOOOHPS - Die Eingabe war wiedermal falsch!");
      	   System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
      	   System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
      	   System.out.println("Probieren Sie vorher auf die Tasten zu schauen");
   	       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
      	
	        yKoordinate = sc.nextInt();   
   	 	 }

      
   	 	 char [][] fieldUser = new char [xKoordinate][yKoordinate];
   
   	 	System.out.print("   ");
		    
		for (xKoordinate = 0; xKoordinate< fieldUser.length; xKoordinate++ ){

			System.out.printf(" %2d ", xKoordinate+1);  
		}
		
      	   System.out.println();
		
			for (int yKoordinate = 0; yKoordinate < fieldUser[0].length; yKoordinate++){
				
				 System.out.print("  +");	
				 
	             for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++){
					 System.out.print("---+");
				 }
		
				 System.out.println();
				 
					System.out.printf("%2d|", yKoordinate+1);
					
					for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++) {
						
						fieldUser [xKoordinate][yKoordinate] = '@';
						
						System.out.print(" " + fieldUser[xKoordinate][yKoordinate]+ " |");
					 }//
						System.out.println();
				}//
			}//
       
		
       private int randomInt(int max){
    	   Random rand = new Random();
    	   return rand.nextInt(max);
    	   }


	 


public static void main ( String [] args){
	spielEinrichten();


}


}

Hier die Ausgabe
 

Anhänge

  • Ausgabe.jpg
    Ausgabe.jpg
    98,5 KB · Aufrufe: 60
S

Spacerat

Gast
Mit dem Problem müsste ich mich erst mal vertraut machen. Ist aber ne nette Spiel-Idee, solange die am Spiel-Ende übrig gebliebene dotCom nicht gleich 'nen DDoS-Virus (Distributed Denial of Service) auf die realen Pendants der im Spiel versenkten feuert.
 

p.tryfle

Mitglied
danke fürs antworten,
ja das wäre wenn du etwas zeit hast wirklich nett. ein paar denkanstöße, tipps, schnipsel wären wirklich hilfreich.
Ja die SpielIdee macht auf jeden Fall sinn.... Wenn ich dann irgendwann gui behersche packe ich sie auf das nächste level, aber das ist erstmal noch wie nach den sternen greifen.

gruß
 

p.tryfle

Mitglied
Hallo,
das ist eine Übung für die UNI !
Wie gesagt für tipps wäre ich dankbar.

Habe es schon weiter probiert, aber immernoch keine Lösung die läuft,
Ich habe nun ein Char Array [][] mit den DotComs erstellt.
und es am ende der ganzen Schleifen bei der Spielfeld erstellung gepackt.
Eine Zusatzzahl bis 9 habe ich mir auch mit hilfe von random eingerichtet.
Lässt sich compilieren, aber nun bekomme ich die fehlermeldung

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at DotComVersenken.spielEinrichten(DotComVersenken.java:87)
at DotComVersenken.main(DotComVersenken.java:101)

Das war ja anzunehmen, nun hoffe ich das ich damit richtig liege und werde versuchen es mit if-anweisungen irgendwie einzugrenzen, aber einen genauen Plan habe ich noch nicht. eher ratlosigkeit.

Hier der neue code!
Code:
import java.util.Random;
import java.util.Scanner;

public class DotComVersenken {

	


	
		private static char amazon;
		private static char moodle;
		private static char unidue;
		private static char google;
		private static char youtube;
		private static char studivz;
		private static char facebook;
		
		static char [][] dotComs = new char [][]{{amazon}, {moodle}, {unidue}, {google}, {youtube}, {studivz}, {facebook}};
		
		static int xKoordinate;
		static int yKoordinate;
	  
 	
	    
       public static void spielEinrichten(){
	 
    	   Scanner sc = new Scanner(System.in);
   	
   	   System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
      	
      	  xKoordinate = sc.nextInt();   											
         
    
      	 while  (xKoordinate > 10){
      		System.out.println("OOOOOHPS - Die Eingabe war falsch!");
        	  System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
        	  System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
        	  System.out.println("Bitte Probieren Sie es gleich nochmal.");
              System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
              
          	  xKoordinate = sc.nextInt();   
      	 	}
    
       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
      	
   	      yKoordinate = sc.nextInt();   											   //
   	   
   	    
   	 	 while  (yKoordinate > 10){
   	 		System.out.println("OOOOOHPS - Die Eingabe war wiedermal falsch!");
      	   System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
      	   System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
      	   System.out.println("Probieren Sie vorher auf die Tasten zu schauen");
   	       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
      	
	        yKoordinate = sc.nextInt();   
   	 	 }

   	 	 Random randomGenerator = new Random();
   	 	 char [][] fieldUser = new char [xKoordinate][yKoordinate];
   	 	  
   	 	System.out.print("   ");
		    
		for (xKoordinate = 0; xKoordinate< fieldUser.length; xKoordinate++ ){

			System.out.printf(" %2d ", xKoordinate+1);  
		}
		
      	   System.out.println();
		
			for (int yKoordinate = 0; yKoordinate < fieldUser[0].length; yKoordinate++){
				
				 System.out.print("  +");	
				 
	             for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++){
					 System.out.print("---+");
				 }
		
				 System.out.println();
				 
					System.out.printf("%2d|", yKoordinate+1);
					
					for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++) {
						
						fieldUser [xKoordinate][yKoordinate] = '@';
						
						dotComs [xKoordinate][yKoordinate] = (char) (randomGenerator.nextInt(9));

						System.out.print(" " + fieldUser[xKoordinate][yKoordinate]+ " |");
					 }//
						System.out.println();
				}//
			}//
       
		
   
	 


public static void main ( String [] args){
	spielEinrichten();


}


}
 

Michael...

Top Contributor
Java:
static char [][] dotComs = new char [][]{{amazon}, {moodle}, {unidue}, {google}, {youtube}, {studivz}, {facebook}};

dotComs [xKoordinate][yKoordinate] = (char) (randomGenerator.nextInt(9));
Zeile 3 muss ja zwangsläufig auf einen Fehler laufen wenn der Anwender für Werte für x>7 und y>1 eingibt, da das ja ein [7][1] Array ist.

kleine Anmerkung: Verwende doch anstelle der Code-Tags die Java Tags da sieht man dann auch gleich die Zeilennummer auf die sich die Fehlermeldung bezieht.
 

p.tryfle

Mitglied
verstehe nicht ganz was du meinst,

Ich versuche irgendwie die dotComs

{amazon}, {moodle}, {unidue}, {google}, {youtube}, {studivz}, {facebook}

durch Zufall in das Spielfeld zu setzen..bislang ohne erfolg.. :bahnhof:

ich poste mal screenshots von den fehlermeldungen.




komischerweise wird bei der Eingabe 7 x 1 nur das Spielfeld ausgegeben. Ohne Fehlermeldung.
 

p.tryfle

Mitglied
So sieht es jetzt aus:

Die fragen stehen im code, falls hier noch jemand lebt;)

Java:
import java.util.Random;
import java.util.Scanner;


public class dotcom {

    static int xKoordinate;
	static int yKoordinate;


	
	int anzahltreffer;
	int zielFelder;
	
	// Spielfeldgröße durch Benutzereingabe holen
	public static void spielFeldGroeße () {
		
		//Spielfeld größe über die User-Eingabe mittels der Scanner-Class bestimmen
		
		  Scanner sc = new Scanner(System.in);  
		  
		   	// Zeilenangabe
		  
	   	   System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
	      	
	      	  xKoordinate = sc.nextInt();   											
	         
	    //falls die eingegebenen koordinaten größer 10 sind müssen sie erneut eingegeben werden
	      	  
	      	 while  (xKoordinate > 10){
	      		System.out.println("OOOOOHPS - Die Eingabe war falsch!");
	        	  System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
	        	  System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
	        	  System.out.println("Bitte Probieren Sie es gleich nochmal.");
	              System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
	              
	          	  xKoordinate = sc.nextInt();   
	      	 	}
	    
	      	 //Spaltenangabe 
	      	 
	       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
	      	
	   	      yKoordinate = sc.nextInt();   											   //
	   	   
	   	 //falls die eingegebenen koordinaten größer 10 sind müssen sie erneut eingegeben werden
	   	      
	   	 	 while  (yKoordinate > 10){
	   	 		System.out.println("OOOOOHPS - Die Eingabe war wiedermal falsch!");
	      	   System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
	      	   System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
	      	   System.out.println("Probieren Sie vorher auf die Tasten zu schauen");
	   	       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
	      	
		        yKoordinate = sc.nextInt();   
	   	 	 }

	}
	
	//Spielfeldausgabe : Das Design des Spielfeldes ausgeben
	
	public static void spielFeldDesign (){
		
		 char [][] fieldUser = new char [xKoordinate][yKoordinate];
		 
		 System.out.print("   ");
		 
			for (xKoordinate = 0; xKoordinate< fieldUser.length; xKoordinate++ ){

				System.out.printf(" %2d ", xKoordinate+1);  
			}
			
	      	   System.out.println();
			
				for (int yKoordinate = 0; yKoordinate < fieldUser[0].length; yKoordinate++){
					
					 System.out.print("  +");	
					 
		             for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++){
						 System.out.print("---+");
					 }
			
					 System.out.println();
					 
						System.out.printf("%2d|", yKoordinate+1);
						
						for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++) {
							
							fieldUser [xKoordinate][yKoordinate] = '@';
						
							System.out.print(" " + fieldUser[xKoordinate][yKoordinate]+ " |");
						 }//
							System.out.println();
					}//
				}//
	
	
	

	

	
	
	

	

		

	/*
	Wie bekomme ich es nun hin die DotComs per Zufall aufs 
	Spielfeld zu setzen ohne das diese über die Ränder des Arrays schießen?
	*/
	public static void setzeDotComs(){
        //Dotcoms in Array
      String [] dotComs = new String[6];
        dotComs[0]="moodle";
        dotComs[1]="amazon";
        dotComs[2]="uni-due";
        dotComs[3]="google";
        dotComs[4]="youtube";
        dotComs[5]="studivz";
        dotComs[6]="facebook";
        
        char[] word = dotComs[0].toCharArray(); // Den String in ein Char umgewandelt um ihn in der random-methode zu nutzen
   }	 
		
     // Zufallsbelegung auf dem feld

	// Wie übergebe ich nun der random-methode den Char Array?
	
      private static int randomInt(    ?   ) { // was muss hier deklariert damit die Random - Methode auf den Char zugreifen kann???
        Random rand = new Random();
        /* Vorschlag 
      
        if(Keine Ahnung))
        {
          int breite;
          int hoehe;
          breite= randomInt(xKoordinate-word.length);
          hoehe = randomInt(yKoordinate);
           
        }
        else
        {
          int breite;
          int hoehe;
          breite= randomInt(xKoordinate);
          hoehe = randomInt(yKoordinate-word.length);
          */
        }
     

	/*
	Wie soll das nur gehen die Zufallszahlen mit den
	 Dotcoms und dem Spielfeld so zu verknüpfen, dass 
	 diese zufällige und in ihrer Wortlänge gesetzt werden?
	*/
      public static void userSchuss(){
          int x = 0;
          int y = 0;
          Scanner sc = new Scanner(System.in);
          System.out.println ("Bitte geben Sie eine Spaltenkoordinate ein!");
          x = Integer.parseInt(sc.next());
          System.out.println ("Bitte geben Sie eine Zeilenkoordinate ein!");
          y = Integer.parseInt(sc.next());
        }
      
      
	public static void main ( String [] args){
		spielFeldGroeße();
		spielFeldDesign();
		setzeDotComs();
		userSchuss();
	}


	}

please help..
 
S

Spacerat

Gast
Also mit deinen Arrays stimmt wirklich etwas nicht. Und zwar:
1. Wie es aussieht iterierst du zwei mal über die X-Koordinate (fieldUser.length). zumindest in einer der beiden For-Schleifen (eigentlich meine ich die innere) muss irgendwann mal "fieldUser[yKoordinate].length" auftauchen.
2. Die Arrays der "DotComs" müssen vom "fieldUser" getrennt behandelt werden. Vllt. empfiehlt sich sogar eine eigene Klasse (mit Interface "DotCom") für jedes DotCom. Darin kann dann auch die Richtung, in welche es plaziert werden soll, unter gebracht werden.
3. Die Richtung kann im übrigen recht einfach als "enum" im Interface implementiert werden.
4. Vor dem eigentlichen Platzieren der DotComs müssen deren Positionen und Richtungen festgelegt werden. Dabei muss festgestellt werden, dass sich die einzelnen DotComs weder kreuzen noch das Spielfeld verlassen. Hilfreich könnte hier das Polynom 1. Grades sein (hoffe du weissen: "t+(1-t)=1" :)). Erst dann können die DotComs in das Spielfeld eingetragen werden. Eine genaue Codestruktur interessiert mich nun natürlich auch (hast mich irgendwie neugierig gemacht). Ich werd mir darüber mal 'nen Kopf machen.
@Edit: Man hat ja sonst nichts zu tun...[highlight=java]import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class DotComNME
{
public static void main(String ... args)
{
PlayField pf = new PlayField(15, 15);
pf.placeDotComs(createDotComs(pf, "amazon", "moodle", "uni-due", "google","youtube", "studivz", "facebook"));
int posX = (int) (Math.random() * pf.width);
int posY = (int) (Math.random() * pf.height);
pf.bombOut(posX, posY);
System.out.println(pf);
}

private enum Direction {
HORIZONTAL,
VERTICAL,
DIAGONAL,
}

private static final List<DotCom> createDotComs(PlayField playfield, String ... names)
{
ArrayList<DotCom> rc = new ArrayList<DotCom>(names.length);
int dir, posX, posY;
Direction direction;
DotCom add;
do {
dir = (int) (Math.random() * 3.0);
direction = Direction.values()[dir];
posX = (int) (Math.random() * (playfield.width - names[rc.size()].length()));
posY = (int) (Math.random() * (playfield.height - names[rc.size()].length()));
boolean intersects = false;
add = new DotCom(names[rc.size()], posX, posY, direction);
Iterator<DotCom> i = rc.iterator();
while(!intersects && i.hasNext()) {
intersects |= add.intersects(i.next());
}
if(!intersects) rc.add(add);
} while(rc.size() < names.length);
return rc;
}

private static final class DotCom
{
private final int posX, posY;
private final Direction direction;
private final char[] name;

private DotCom(String name, int posX, int posY, Direction direction)
{
this.name = name.toCharArray();
this.direction = direction;
this.posX = posX;
this.posY = posY;
}

private boolean intersects(DotCom other)
{
Rectangle a = new Rectangle(posX, posY, 1, 1);
Rectangle b = new Rectangle(other.posX, other.posY, 1, 1);
switch(direction) {
case HORIZONTAL:
a.width = name.length;
break;
case DIAGONAL:
a.width = name.length;
case VERTICAL:
a.height = name.length;
}
switch(other.direction) {
case HORIZONTAL:
b.width = name.length;
break;
case DIAGONAL:
b.width = name.length;
case VERTICAL:
b.height = name.length;
}
return a.intersects(b);
}
}

private static final class PlayField
{
private final char[][] field;
private final int width, height;

private PlayField(int width, int height)
{
if(width < 15 || height < 15) throw new IllegalArgumentException("width and/or height have to be larger than or equal to 15");
field = new char[height][width];
this.width = width;
this.height = height;
for(height = 0; height < field.length; height++) {
for(width = 0; width < field[height].length; width++) {
field[height][width] = '\u0020';
}
}
}

private void placeDotComs(List<DotCom> dotcoms)
{
Iterator<DotCom> i = dotcoms.iterator();
DotCom dotcom = null;
while(i.hasNext()) {
dotcom = i.next();
int n, x = 0, y = 0;
for(n = 0; n < dotcom.name.length; n++) {
field[y + dotcom.posY][x + dotcom.posX] = dotcom.name[n];
switch(dotcom.direction) {
case HORIZONTAL:
x++;
break;
case DIAGONAL:
x++;
case VERTICAL:
y++;
}
}
}
}

private boolean bombOut(int x, int y)
{
try {
boolean rc = field[y][x] != '\u0020' && field[y][x] != '\u00ff';
field[y][x] = '\u00ff';
return rc;
} catch(ArrayIndexOutOfBoundsException e) {
return false;
}
}

@Override
public String toString()
{
StringBuffer rc = new StringBuffer();
for(int n = 0; n < field.length; n++) {
rc.append(field[n]);
rc.append('\n');
}
return rc.toString();
}
}
}[/highlight]Ausgabe:
Code:
      uni-due  
               
               
 m             
yo      google 
oo     aÿ      
ud f  s m      
tl a  t  a     
ue c  u   z    
b  e  d    o   
e  b  i     n  
   o  v        
   o  z        
   k
Dieses "üy" (oder wie auch immer) hinter dem a von amazon ist das Resultat der Methode "bombOut()". in diesem Fall gings wohl daneben. Das gilt aber nicht für den Code :). Kleiner Wermutstropfen: Ein 10*10 PlayField ist definitiv zu klein. Wie man sieht, sind Interfaces und Polynome, entgegen meiner Annahme, letztendlich auch nicht nötig gewesen.
 
Zuletzt bearbeitet von einem Moderator:

p.tryfle

Mitglied
Hallo,
erstmal riesen dank für deinen Lösungsvorschlag,
doch ich muss leider gestehen das der etwas zu hoch für mich ist. Ich verstehe nicht ganz wie du das gemacht hast.

Ich habe es nochmal auf einer einfacheren Ebene ausprobiert, bin aber bei einem wahrscheinlich für dich kleinem Fehler hängen geblieben:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
String cannot be resolved
Syntax error on token "dotCom", delete this token

at dotcom.main(dotcom.java:169)
Der compiler verlangt, das ich in der main-methode wo ich meine
dotComSetzen(String dotCom); methode aufrufe
dotCom löschen soll und sagt mir das der String nicht gefunden werden kann.
Die main - methode
Java:
	public static void main ( String [] args){
		spielFeldGroeße();
		spielFeldDesign();
		dotComSetzen(String dotCom);    // Hier kann er den String dotCom nicht finden??? Wieso nicht? Was muss ich hier in den Klammern den sonst eingeben?
		userSchuss();
	}


Doch meine Methode sieht so aus:

Java:
	public static void dotComSetzen(String dotCom){// Hier habe ich das Argument String dotcom gesetzt.
		char[] buchstaben = zerlegen(dotCom);
		boolean frei = false;
		while (!frei){
		int x = randomInt(spielFeld.length-1);
		int y = randomInt(spielFeld.length-1);
		if (spielFeld[x][y] == '@'){
			spielFeld[x][y] = buchstaben[0];
			for(int i = 0; i < buchstaben.length; i++){
				spielFeld[x+1][y] = buchstaben[i+1];
			}
		}
		}
	}

Ich verstehe das nicht, wenn ich die methode so schreibe
dotComSetzen();
funtioniert es doch auch nicht, weil die argumente fehlen
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method dotComSetzen(String) in the type dotcom is not applicable for the arguments ()

at dotcom.main(dotcom.java:169)


Java:
import java.util.Random;
import java.util.Scanner;


public class dotcom {


	static int zeile;
	static int spalte;
    static int x;
    static int y;

    static char [][] spielFeld;
	int anzahltreffer;
	int zielFelder;
	
	
	// Spielfeldgröße durch Benutzereingabe holen
	   public static void spielFeldGroeße () {
		
		//Spielfeld größe über die User-Eingabe mittels der Scanner-Class bestimmen
		
		  Scanner sc = new Scanner(System.in);  
		  
		   	// Zeilenangabe
		  
	   	   System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
	      	
	      	  zeile = sc.nextInt();   											
	         
	    //falls die eingegebenen koordinaten größer 10 sind müssen sie erneut eingegeben werden
	      	  
	      	 while  (zeile > 10){
	      		System.out.println("OOOOOHPS - Die Eingabe war falsch!");
	        	  System.out.println("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
	        	  System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
	        	  System.out.println("Bitte Probieren Sie es gleich nochmal.");
	              System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an.  - Maximale Zeilenanzahl: 10");
	              
	          	  zeile = sc.nextInt();   
	      	 	}
	    
	      	 //Spaltenangabe 
	      	 
	       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
	      	
	   	      spalte = sc.nextInt();   											   //
	   	   
	   	 //falls die eingegebenen koordinaten größer 10 sind müssen sie erneut eingegeben werden
	   	      
	   	 	 while  (spalte > 10){
	   	 		System.out.println("OOOOOHPS - Die Eingabe war wiedermal falsch!");
	      	   System.out.println ("Bitte geben Sie jeweils eine Zahl zwischen 1 und 10 ein.");
	      	   System.out.println("Das Spielfeld soll maximal 10x10 Felder enthalten.");
	      	   System.out.println("Probieren Sie vorher auf die Tasten zu schauen");
	   	       System.out.println("Bitte geben Sie die Spaltenanzahl des Spielfeldes an. - Maximale Spaltennanzahl: 10");
	      	
		        spalte = sc.nextInt();   
	   	 	 }

	}
	
	//Spielfeldausgabe : Das Design des Spielfeldes ausgeben
	
	public static void spielFeldDesign (){
		
		 char [][] spielFeld = new char [zeile][spalte];
		 
		 System.out.print("   ");
		 
			for (zeile = 0; zeile< spielFeld.length; zeile++ ){

				System.out.printf(" %2d ", zeile+1);  
			}
			
	      	   System.out.println();
			
				for (int spalte = 0; spalte < spielFeld[0].length; spalte++){
					
					 System.out.print("  +");	
					 
		             for(int zeile = 0; zeile < spielFeld.length; zeile++){
						 System.out.print("---+");
					 }
			
					 System.out.println();
					 
						System.out.printf("%2d|", spalte+1);
						
						for(int zeile = 0; zeile < spielFeld.length; zeile++) {
							
							spielFeld [zeile][spalte] = '@';
						
							System.out.print(" " + spielFeld[zeile][spalte]+ " |");
						 }//
							System.out.println();
					}//
				}//

	
	private static void dotComsErstellen(){
        
      String [] dotComs = new String[7];
        dotComs[0]="moodle";
        dotComs[1]="amazon";
        dotComs[2]="uni-due";
        dotComs[3]="google";
        dotComs[4]="youtube";
        dotComs[5]="studivz";
        dotComs[6]="facebook";
	}

	// Methode zerlegt die Wörter/ Schiffe in einzelne Buchstaben
	private static char[] zerlegen(String string) {
		char[] buchstaben = string.toCharArray();
		return buchstaben;
	}
	
	// beinhaltet eine Methode, die die Schiffe per Zufallsgenerator im Spielfeld setzt
	public static void dotComSetzen(String dotCom){// Hier habe ich das argument String dotcom gesetzt.
		char[] buchstaben = zerlegen(dotCom);
		boolean frei = false;
		while (!frei){
		int x = randomInt(spielFeld.length-1);
		int y = randomInt(spielFeld.length-1);
		if (spielFeld[x][y] == '@'){
			spielFeld[x][y] = buchstaben[0];
			for(int i = 0; i < buchstaben.length; i++){
				spielFeld[x+1][y] = buchstaben[i+1];
			}
		}
		}
	}

      public static void userSchuss(){
          int x = 0;
          int y = 0;
          Scanner sc = new Scanner(System.in);
          System.out.println ("Bitte geben Sie eine Spaltenkoordinate ein!");
          x = Integer.parseInt(sc.next());
          System.out.println ("Bitte geben Sie eine Zeilenkoordinate ein!");
          y = Integer.parseInt(sc.next());
          
          for(x = 0; x< spielFeld.length; x++){
        	  
        	  System.out.print(" X ");
        	  
        	  for(y=0; y< spielFeld[0].length;y ++){
        		  System.out.println(" X ");
        	  }
          }
          
        }

// Zufallsbelegung auf dem feld

      private static int randomInt(int max) {
        Random rand = new Random();

        return rand.nextInt(max);
      }

	public static void main ( String [] args){
		spielFeldGroeße();
		spielFeldDesign();
		dotComSetzen(String dotCom);    // Hier kann er den String dotCom nicht finden??? Wieso nicht? Was muss ich hier in den Klammern den sonst eingeben?
		userSchuss();
	}


	}


Vielleicht kannst du mir ja nochmal helfen, das wäre jedenfalls sehr nett!
Danke nochmal für deine Mühe

schöne Pfingsten wünsche ich.
gruß
p.
 

ck2003

Mitglied
Hier definierst du, was der Methode übergeben werden muss.
Java:
	public static void dotComSetzen(String dotCom){// Hier habe ich das Argument String dotcom gesetzt.

Wenn du die Methode aufrufst musst du ihr doch einen konkreten Wert mitgeben bspw. "Google"
Java:
	public static void main ( String [] args){
		spielFeldGroeße();
		spielFeldDesign();
		dotComSetzen("Google"); 
		userSchuss();
	}
 
S

Spacerat

Gast
Hallo,
erstmal riesen dank für deinen Lösungsvorschlag,
doch ich muss leider gestehen das der etwas zu hoch für mich ist. Ich verstehe nicht ganz wie du das gemacht hast.
Was ist daran nicht zu verstehen? ???:L
Ich habe den "DotComs" und dem Playfield schlicht eigene Klassen gegönnt. Natürlich ist das mit "intersect" noch nicht ganz ausgereift. Davon ausgehend, das die "DotComs" horizontal eine Fläche "1*Anzahl der Zeichen", vertikal eine Fläche "Anzahl der Zeichen*1" und diagonal eine Fläche "Anzahl der Zeichen^2" belegen, hielt ich es für eine gute Idee, mit "<Rectange>.intersects()" festzustellen, ob sich zwei "Dotcoms" überschneiden. Die Idee ist aber längst nicht ausgereift. Diagonal funktioniert z.B. auch nur in eine Richtung.
Letztendlich muss ich auch gestehen, das ich mit deinem Code auch nicht Klar komme. Wie es aussieht, unterscheiden sich unsere Vorstellungen von Java grundlegend. Prinzipiell kann ich aber sagen, dass bei meiner Implementation nicht mehr allzuviel dazugehört, wenn man deren Mankos eliminieren will (eine weitere Enumeration in "Direction", entsprechende Änderung von "intersects()" in "DotCom" und Implementierung der neuen Direction in "placeDotCom()").
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T DotComVersenken Java Basics - Anfänger-Themen 18
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
M hangman spiel Java Basics - Anfänger-Themen 1
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Jagson Dotcom Spiel - Dots Random setzen Java Basics - Anfänger-Themen 8
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
J Programm(Spiel) neustarten Java Basics - Anfänger-Themen 8
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben