Hausübung 9

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Re: Hausübung 9

Beitrag von ChRiZz88 » 14. Jan 2008 18:01

Hmm, ich hab' mal ne grundsätzliche Verständnisfrage:
Sind die Trennstriche, die Zeilen und Spalten usw. voneinander abtrennen, im Array drin?
D.h. ist nur jede zweite Zeile u. Spalte mit einem x oder o zu füllen oder werden die Striche einfach durch toString bei der Ausgabe dazugefügt und können, was den Array angeht, ignoriert werden??
Sonst müsste man nämlich jede Schleife immer zweimal erhöhen und die Aufgabe wird generell verwirrender oO

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Hausübung 9

Beitrag von Stumpf.Alex » 14. Jan 2008 18:04

Nein nur die x und o sind im Array drin. Für die korrekte Ausgabe mit den Linien sorgt dann schon die vorimplementierte toString() Methode.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Hausübung 9

Beitrag von Krümelmonster » 14. Jan 2008 18:15

Hier nochmal iterativ:

Code: Alles auswählen

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Exception {
	public static void main(String[] args) {
		Exception e = new Exception();
		int r=-1;
		boolean validInput = false;

		do {
			while (!validInput) {
				try {
					r = e.getPlayerMove('d');
					validInput = true;
				} catch (NumberFormatException ex) {
					System.err.append("\nInvalid input.");
				}
			}
		} while (r == -1);
	}

	public int getPlayerMove(char player) throws NumberFormatException {
		int col = -1;
		try {
			BufferedReader buf = new BufferedReader(new InputStreamReader(
					System.in));
			String s = buf.readLine();
			col = Integer.parseInt(s);
		} catch (IOException e) {
			System.err.append("\nUnknown Error. Please try again.");
			getPlayerMove(player);
		}
		return col;
	}
}
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Re: Hausübung 9

Beitrag von ChRiZz88 » 16. Jan 2008 18:05

Hm, was ist euer System Diagonal zu checken, ob 4 gleiche in Folge liegen? Ich bin bisher nur bei 'checke vom letzten Stein nach links unten und nach rechts oben jeweils mit Counter und addiere' und das gleiche nochmal mit links oben und rechts unten... Scheint mir aber nicht sooo sinnvoll zu sein....

S. Oelmann
Mausschubser
Mausschubser
Beiträge: 57
Registriert: 7. Okt 2007 14:25
Wohnort: Dieburg
Kontaktdaten:

Re: Hausübung 9

Beitrag von S. Oelmann » 16. Jan 2008 18:41

Ich habs genauso gelöst, scheint auch zu funkionieren.

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Hausübung 9

Beitrag von s!mon » 16. Jan 2008 18:43

So mache ich das auch in etwa..

Ich bekomme hier gleich einen Tobsuchtsanfall. Ich bin fester Überzeugung, dass mein Eclipse spinnt.

Mein Programm hat die ganze Zeit wunderbar funktioniert. Dann habe ich eine Kleinigkeit verändert (nichts was das Programm irgendwie zerschießen könnte) und bekomme nun folgende Meldung:

Code: Alles auswählen

java.lang.ClassFormatError: Extra bytes at the end of class file ConnectFour
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main" 
Was soll das bitte heißen?! Es geht dann noch ein Fenster in Eclipse auf, das mir meldet, dass er die Main-Methode nicht finden konnte..

edit: irgendwie scheint Eclipse oder Java wirklich kaputt zu sein. Wenn ich es starte, erhalte ich die Meldung, dass die Workbench nicht richtig geladen werden konnte. Wenn ich dann in ConnectFour.java reinschaue, hat er mir ans Ende meines Codes folgendes gehängt:

Bild

Wenn ich den letzten Teil weg mache und speichere sieht die Datei allerdings danach genauso wieder aus :evil:. Kennt jemand das Problem?

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Hausübung 9

Beitrag von Demmi » 16. Jan 2008 22:55

Schon sehr komisch. Hatte ich bisher noch nicht, solche Probleme. Aber ich würde mir mal die .java-Dateien mit nem einfachen Text-Editor angucken und mal schauen, ob da der gleiche Käse drinsteht und dann ggf. manuell das doppelte rausschmeißen.
Dann könnte vielleicht helfen ein neues Projekt anzulegen und nur den src-Ordner ausm Alten zu kopieren und nochmal neu zu compilen.

Ansonsten Eclipse und Java neu drauf, wenn nix anderes hilft. (Dabei ggf. manuell den Workspace löschen oder drauf achten, dass da nix "gefährliches" übrig bleibt).

So würde ich an die Sache rangehen ;)
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Re: Hausübung 9

Beitrag von ChRiZz88 » 17. Jan 2008 14:54

Habt ihr ne Möglichkeit für größere Spielflächen gefunden? Wenn nämlich die Grenzen über 10 gehen, dann verrutscht logischerweise die Skala etwas und das ganze toString in riesige Ifs zu packen, hab ich keine Lust oO

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Hausübung 9

Beitrag von Jo(h)nny » 17. Jan 2008 16:31

wie soll das denn funktionieren, willst du bei den spalten ab 10, immer 2 leerzeicheneinfügen, dann hast du später aber 2 mal x oder o da stehen :)
ich glaub kaum, dass wir uns darüber gedanken machen sollten:)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Hausübung 9

Beitrag von marek » 17. Jan 2008 21:01

Ne ganz banale Frage:
Nach jedem Aufruf von makePlayerMove() (also als die Eingabeaufforderung erscheint) soll man doch im Ausgabetext die Nummer der Spalte eingeben, oder?
Wie spreche ich diese eingegebene Zahl an, wenn ich will, dass makeMove() sie als Parameter übergeben bekommt?

marek
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 18. Okt 2007 15:24
Wohnort: DA

Re: Hausübung 9

Beitrag von marek » 17. Jan 2008 21:09

Achso, hat sich eigentlich soweit erledigt... Die Eingabezahl ist anscheinend einfach die Ausgabe von getPlayerMove().
Da interessiert mich aber noch etwas: Soll nach jedem Zug der Spielzustand von der Ausgabefläche gelöscht werden, oder sollen die Züge so "dokumentiert" werden?

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Hausübung 9

Beitrag von Krümelmonster » 17. Jan 2008 21:13

Die Abfrage der Eingabe von der Eingabeaufforderung wird ja schon
von getPlayerMove() übernommen. Die Funktion gibt die eingegebene
Spalte zurück. Falls keine Zahl eingegeben wurde, muss eben die Funktion
nochmal aufgerufen werden.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Hausübung 9

Beitrag von Jo(h)nny » 17. Jan 2008 23:19

@marek, also ich hab dajetzt ma bisschen rumgeklickt, ich glaub es gibt kein befehl, mit dem man die konsole leeren kann
das einzige was ich fand, waren ANSI escape codes(ka wozu die gut sind :) )
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Hausübung 9

Beitrag von Krümelmonster » 17. Jan 2008 23:32

Die Escapezeichen haben nichts mit dem Löschen der Systemausgabe zu tun. Sie sind lediglich Steuerzeichen innerhalb eines Strings oder als einzelnes Char,
um etwa einen Zeilenumbruch zu erzeugen. (System.out.println("Hello\nWorld!"))

Die Systemausgabe zu leeren ist nicht Teil der Java Standard library,
da es wohl zu plattformspezifisch ist.

D.h. es ist auch nicht Teil der Aufgabe.

Gute Nacht.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Geek-O
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 16. Dez 2004 22:42

Re: Hausübung 9

Beitrag von Geek-O » 18. Jan 2008 00:09

Krümelmonster hat geschrieben:Die Escapezeichen haben nichts mit dem Löschen der Systemausgabe zu tun. Sie sind lediglich Steuerzeichen innerhalb eines Strings oder als einzelnes Char, um etwa einen Zeilenumbruch zu erzeugen.
Er meinte ja auch keine "\"-Escapes, sondern ANSI-Escapesequenzen. Damit konnte man früher tolle Sachen machen...

Es dürfte an sich nur systemabhängig sein, ob das Terminal, auf dem man ausgibt, überhaupt ANSI-fähig ist, aber wenn ja, funktioniert es erstaunlicherweise wirklich, wie ich grade festgestellt habe:

Code: Alles auswählen

final char ESC = 27;

System.out.println("Gleich bin ich weg.");
System.out.print(ESC + "[2J");
(Nein, schön ist das nicht, aber das hat ja auch keiner behauptet...)

G., sich als alter Sack outend

Antworten

Zurück zu „Archiv“