ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
992
992
EMPFEHLEN
-
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:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
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; }
-
28.04.11 10:05 #2Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Danke!!
Euer Forum hat mir schon öfters weiter geholfen....
Und nochmal danke für deine Antwort!!
Hab die Schleife jetzt eingebaut, und entdeckt dass mein Fehler daran lag, dass ich ein Array ausgegeben hab, obwohl ich gar keins wollte.
Jetzt ist aber mein Problem, dass ich von der main-Methode irgendwie nich auf die Klasse Spielstand zugreifen kann, zumindest wird nichts auf der Konsole ausgegeben.
-
Am besten aus der Main heraus das Objekt SchiffeVersenken erstellen mit new und von dort aus dann alle anderen Klassen erstellen und Methoden aufrufen.
Ansonsten versteh ich nicht was du meinst mit du kannst nich darauf zugreifen? Du erstellst am Ende der Main
Solange du dort keine Methode aufrufst, kann ja auch nix angezeigt werden?Code java:1
Spielstand display = new Spielstand();
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
oh, ja.... da hab ich vergessen die letzten Zeilen rein zu kopieren.
Eigentlich gehts so weiter:
Code java:
ich hab meine Methoden noch einmal ein bisschen umgeschrieben, deswegen taucht auf einmal ein"wandleUm" auf, aber eigentlich sollte es doch nicht daran liegen oder?
Danke nochmal!!
-
Nuetzlich bei sowas ist immer debuggen. Zur Not mit einigen System outs, um zu sehen bis wohin er kommt und ob ueberhaupt irgendwo eine Ausgabe ist.
Kann es momentan hier auch nicht testen. Daher genaue Angabe was er nicht mach tund ob er ueberhaupt in die Methode kommt bzw ob dein wandleUm das macht was es soll
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
Ähnliche Themen
-
Schiffe versenken für Einsteiger?
Von Marimi im Forum C/C++Antworten: 4Letzter Beitrag: 14.11.10, 12:45 -
[Perl] Schiffe versenken...
Von Coldfist im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 21.01.07, 16:13 -
Schiffe versenken
Von Victim De Ace im Forum JavaAntworten: 1Letzter Beitrag: 12.04.06, 18:21 -
Brauche hilfe bei Schiffe versenken in c++
Von Bone_Spirit im Forum C/C++Antworten: 5Letzter Beitrag: 27.12.04, 16:31





Zitieren
Login





