Spiel Roulette

Lenii

Mitglied
Hallo ihr Lieben :)

Am Montag muss unser Spiel programmiert sein..
Ich habe hier jetzt drei Codes, kann mir jemand erklären was da Zeile für Zeile passiert ??
Es geht ums bestehen oder nicht bestehen..
Ich wäre euch sehr sehr dankbar!

LG Lena


1. Client.java


Java:
import java.net.*;
import java.io.*;
import java.util.*;



public class Client {

	BufferedReader br;
	int status;


	/**
	 * @param args
	 */
	Client() throws IOException {
		Socket server = new Socket ("192.168.05.1", 4088);
		InputStream input = server.getInputStream();
		OutputStream output = server.getOutputStream();
		br = new BufferedReader( new InputStreamReader(System.in));
		status = 0;

		
		while (status == 0) {
			System.out.println("Geben Sie bitte 5 verschiedene Zahlen zwischen 0 und 36 ein.");
			
			int zahl1 = 100;
			while (!korrekteEingabe(zahl1)) {
				System.out.print("Zahl1: ");
				zahl1 = Integer.parseInt( br.readLine() );	
			}
			output.write( zahl1 );
			output.flush();

			int zahl2 = 100;
			while (!korrekteEingabe(zahl2)) {
				System.out.print("Zahl2: ");
				zahl2 = Integer.parseInt( br.readLine() );
			}
			output.write( zahl2 );
			output.flush();

			
			int zahl3 = 100;
			while (!korrekteEingabe(zahl3)) {
				System.out.print("Zahl3: ");
				zahl3 = Integer.parseInt( br.readLine() );
			}
			output.write( zahl3 );
			output.flush();

			
			int zahl4 = 100;
			while (!korrekteEingabe(zahl4)) {
				System.out.print("Zahl4: ");
				zahl4 = Integer.parseInt( br.readLine() );
			}
			output.write( zahl4 );
			output.flush();

			
			int zahl5 = 100;
			while (!korrekteEingabe(zahl5)) {
				System.out.print("Zahl5: ");
				zahl5 = Integer.parseInt( br.readLine() );
			}
			output.write( zahl5 );
			output.flush();

			
			status = input.read();
			if(status == 0)
				System.out.println("Nicht getroffen. Weiter gehts...");
			else
				System.out.println("Treffer. Sie haben gewonnen.");

			int zufall = input.read();
				System.out.println("Die Zahl ist: " + zufall);
		}

		
		
		server.close();
		input.close();
		output.close();
	}
	
	public boolean korrekteEingabe(int zahl) {
		for(int i = 0; i <= 36; i++) {
			if(zahl == i)
				return true;
		}
		return false;
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {	
			Client client = new Client ();
		} catch (IOException e){
			System.out.print(e);
		}
					
   
	}

}

2.DemoThread.java

Java:
import java.net.*;
import java.io.*;
import java.util.Random;


public class DemoThread extends Thread {
  
	Socket client;
	InputStream input;
	OutputStream output;
	int status;

    public DemoThread(Socket client){
    	this.client = client;
    }
	
    public void run() {
      		try{
      		
      			
			InputStream input = client.getInputStream();
			OutputStream output = client.getOutputStream();
			status = 0;
		
			while(status == 0) {
				int zahl1 = input.read();

						
				int zahl2 = input.read();
				int zahl3 = input.read();
				int zahl4 = input.read();
				int zahl5 = input.read();
				

				Random r = new Random();
				int zufall = r.nextInt(37);
				
				if(zahl1 == zufall || zahl2 == zufall || zahl3 == zufall || zahl4 == zufall || zahl5 == zufall){
					output.write(1);
					status = 1;
			
				}
				else{
					output.write(0);
					status = 0;
				}
				output.write(zufall);
				output.flush();
			}			
			
			input.close();
			output.close();
			client.close();
			
 		}

		catch(Exception e){}
    }
    

  
}

3. Server.java

Java:
import java.net.*;
import java.io.*;

public class Server {
	
	public static void main(String args[]) throws IOException {

		ServerSocket server = null;
		Socket client1 = null;
		
		try {
			server = new ServerSocket(4088);
		} catch(IOException e) {
			System.err.println("Could not listen on port: 4088.");
            		System.exit(-1);
		}

		while (true) {
			if (client1 == null) {
				client1 = server.accept();
			}


			if (client1 != null) {
				new DemoThread(client1).start();
				client1 = null;
			}
		} //end while
	} //end main
}
 

Wortraum

Bekanntes Mitglied
Du erwartest jetzt aber nicht, daß man Dir 200 Zeilen einzeln erklärt? Wenn Du gezielte Fragen zu einzelnen Stellen hast, kannst Du die natürlich gerne stellen. Was einzelne Klassen wie BufferedReader machen, kannst Du in der Java‐API nachlesen. Im zitierten Quelltext führt bereits ein Link zur richtigen Dokumentation.

Vielleicht als kleine Hilfe zum Client:
⑴ Startet man ein Programm, beginnt es in der main-Methode. Beim Client ist das Zeile 97.
⑵ In der main-Methode wird ein neues Objekt Client erzeugt. Das ist hier vielleicht etwas verwirrend, weil die main-Methode in der selben Klasse steht.
⑶ Eine Klasse hat einen Konstruktor, der automatisch ausgeführt wird, sobald ein Objekt von dieser Klasse erstellt wird. Der Konstruktor hat immer den gleichen Namen wie die Klasse, hier ist es also Client(). Dort wird eine Verbindung zum Server geöffnet; daraufhin muß der Benutzer Zahlen eingeben, die an den Server gesandt werden; am Ende wird das Ergebnis vom Server empfangen.
⑷ Für die Datenübermittelung werden Datenströme verwenden, von denen jeder Socket zwei hat: einen zum Schreiben, einen zum Lesen. Es ist ein wenig wie bei einer Rohrpost: am einen Ende steckt man etwas hinein, am anderen Ende kann es entnommen werden.

Und eine kleine Hilfe zum Server:
⑴ Ein Server bedient mehrere Clients, muß also mehrere Dinge gleichzeitig tun. Deswegen gibt es Threads, die man sich, sehr stark vereinfacht und technisch falsch, als eigenständige Programme vorstellen kann.
⑵ In Zeile 21 wartet der Server eine Verbindungsanfrage von einem Client, und wenn eine solche kommt, erstellt er in Zeile 26 einen neuen Thread, der den Client bedient. Daraufhin macht er weiter und wartet erneut in Zeile 21 wieder auf eine neue Client‐Verbindung.
⑶ Derweil läuft der neuerstellte Thread, der die Zahlen vom Client liest, das Ergebnis schreibt und dann beendet wird.
 
Zuletzt bearbeitet:

agentone

Bekanntes Mitglied
kann mir jemand erklären was da Zeile für Zeile passiert ??

Ich erklär dir allerhöchstens, was insgesamt passiert. Daraus kannst du dann dein SeqDiagramm machen.

Die Klasse Server wird vermutlich zuerst gestartet. Dort wird ein Server auf Port 4088 errichtet. Daraufhin wartet der Server in der while(true)-Schleife auf Clients, die sich mit ihm verbinden wollen. Für jeden Client wird dann ein extra Thread namens DemoThread eröffnet, der sich dann um den Client kümmert.

DemoThread bekommt die Socket übergeben und liest dann 5 Zahlen ein. Danach wird mithilfe von
Java:
Random r = new Random();
int zufall = r.nextInt(37);
eine Zufallszahl im Intervall [0;36] erzeugt. Zuletzt wird geprüft, ob eine der 5 Zahlen der generierten Zufallszahl entspricht, und es wird dann entweder 1 oder 0 zurückgegeben. Zu allerletzt wird die Zufallszahl übermittelt.

Der Client öffnet eine Verbindung zum Server, fordert dann 5 Zahlen vom Benutzer, und schreibt diese in die Socket. Der Client bekommt dann vom Server eine Rückmeldung in Form einer 0 oder einer 1 und gibt entsprechende Nachrichten aus. Zuletzt wird die Zufallszahl empfangen und angezeigt.

Das Programm ist letztlich also ein Ratespiel im Netzwerk. Der Programmierer kannte aber vermutlich noch nicht das ganz neue Feature, welches nämlich erst seit Juni 2010 in Java erschienen ist: Das ARRAY! Damit könnte man den Code dezimieren. Aber was solls: Sonst würden ja die Copy&Paste-Programmierer aussterben for(int i=0; i<5; i++){print("!");}

edit: Warum heißt das eig. Roulette? Irgendwie irreführend...
 

agentone

Bekanntes Mitglied
Die Threads haben den Namen Thread-n, wobei n bei jedem neuen Thread hochgezählt wird.

Ja, ich wollte eig. sagen, dass ein Objekt der Klasse DemoThread erstellt wird, welche selbst von Thread erbt. Daraufhin wird die start()-Methode aufgerufen und so der Thread gestartet.

Mit "namens" hab ich mich garnicht auf die name-Eigenschaft der Klasse Thread bezogen.
 

agentone

Bekanntes Mitglied
Heißt es "faul, fauler, Lenii" oder "bonzig, bonziger, Lenii"? Ich kann mich nicht entscheiden...

@Lenii: Tust du nur so, oder bist du wirklich so ****? Du weißt jetzt, wie das Programm funktioniert und du weißt, was ein SeqDiagramm ist, zumindest nachdem du dir Sequenzdiagramm ? Wikipedia durchgelesen hast. Warum hast du also jetzt noch Probleme?
 

agentone

Bekanntes Mitglied
Ich wusste vorher auch nicht was ein SequenzDiagramm sein soll, aber nach dem Durchlesen des Wiki-Eintrags war mir alles klar. Also wirst du es ja auch schaffen. Ich hab nämlich grad keine Lust, irgendwelche Bildchen mit Paint zu malen.

edit: Hier gibt es ein paar Programme, mit denen man solche Diagramme zeichnen könnte.
 
Zuletzt bearbeitet:

Lenii

Mitglied
Och bitte :)

Ich habe keine Ahnung, habe es mir auch durchgelesen, es würde halt echt niemals gut werden, und es muss einigermaßen gut werden.. :(
 

Ruzmanz

Top Contributor
OCH MAN..

Ich verstehe nicht was daran so schlimm ist ?

Ich habe keine Ahnung..

Ich weis nur, das du etwas programmieren musst. Ich kenne einige Lehrer, aber niemals ist mir ein so sadistisches ** über den weg gelaufen, der von mir etwas verlangt hat, was ich nichtmal ansatzweise können müsste. Und vorallem gehöhren Sequenzdiagramme nicht in einen Programmmier-Schnupperkurs in Jahrgangsstufe 10. Also wenn du nichts vorzubringen hast, außer einem "eigenen" Programmcode, den du erklärt haben möchtest, dann liegt meine Hilfsbereitschaft bei -100. Wenn du deine 5 Jährige Schwester oder sonst wen gefragt hättest einen viereckigen Kasten zu malen, bei dem ein sd links oben in der Ecke steht und noch ein paar Methodenaufrufe kreuz und quer gestanden wären, sähe die Sache schon ganz anderst aus.

Ich habe kein Problem damit, dass du sitzen bleibst oder von der Schule gehen musst, also ist für mich auch nichts schlimm, denn es wird ein Arbeitsplatz weniger blockiert, der meiner sein könnte. Auf die Gefahr, dass ich mich zum vierten Mal wiederhohle:

Ohne Lösungsansatz gibts nichts. Vorallem nicht umsonst.

Wer keine Fragen hat weis alles. Und du hast in diesem Thread keine Frage gestellt, außer willst du mir dies und das machen.

PS: Da investiere ich lieber 30min für einen Text, wie dumm ich so eine Einstellung finde als grade noch so viel zu machen, dass es für das bestehen der Prüfung o.ä. reicht.
 

ARadauer

Top Contributor
OCH MAN..

Ich verstehe nicht was daran so schlimm ist ?

Ich habe keine Ahnung..

Ich finde es interessant, dass du wirlich meinst, das dir hier jemand deine Hausübung macht, ohne dass du selber dazu was beiträgst... wahrscheinlich siehst du so gut aus, dass dir normalerweise alle klassenkameraden alles nachtragen...

Falls du ein Junge bist... musst du mich mit Bier bestechen... doch leider ist das Wetter zu schön... da steigt mein Preis ins astromomische...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K BlueJ - Fragen zu dem Spiel Pacman (Nachprogrammieren) Allgemeine Java-Themen 141
J Das Spiel 17und 4 Allgemeine Java-Themen 3
J Spieler aus der Spielerliste entfernen in dem Spiel 17und 4 Allgemeine Java-Themen 2
August Wave-Spiel Allgemeine Java-Themen 1
kev34 nim-Spiel problem Allgemeine Java-Themen 1
Kirby.exe Movement System für Spiel Allgemeine Java-Themen 13
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
E Kalaha Spiel Implementation Allgemeine Java-Themen 4
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
SkyScreamer Java Spiel nutzt wenig Arbeitsspeicher Allgemeine Java-Themen 4
F Interpreter-Fehler Spiel - Fehlfunktion??? Allgemeine Java-Themen 1
C Java programmiertes Spiel ruckelt(Nur auf Laptop) Allgemeine Java-Themen 7
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
S Java Spiel des Lebens Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
G Error Meldung bei Gomoku Spiel Allgemeine Java-Themen 9
K Interpreter-Fehler Java Zahl Raten Spiel- Fehlermeldung mir unbekannt Allgemeine Java-Themen 12
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Allgemeine Java-Themen 3
K OOP OOP Gui Spiel + Vererbungen Probleme durch Nichtwissen!! Allgemeine Java-Themen 1
F Java Spiel Sprung problem Allgemeine Java-Themen 5
K Java QUIZ-Spiel Fragen und Antworten generieren?! Allgemeine Java-Themen 5
F Spiel lässt sich nicht aus GUI starten Allgemeine Java-Themen 5
M Lichteffekte in einem Java-Spiel Allgemeine Java-Themen 4
T Takuzu Spiel programmieren Allgemeine Java-Themen 4
x22 OOP Spiel Allgemeine Java-Themen 2
M AudioClip in Spiel mehrfach in kurzer Zeit abspielen Allgemeine Java-Themen 3
X Neues Spiel/ Neustart Allgemeine Java-Themen 5
L Methode "Neues Spiel" für Memory Allgemeine Java-Themen 2
G java spiel (geschwindigkeit) Allgemeine Java-Themen 37
S Spiel - Ressourcen Allgemeine Java-Themen 10
B Spiel bleibt hängen Allgemeine Java-Themen 3
W Spiel für Handy, normale GUI und Web programmieren Allgemeine Java-Themen 2
M Ein Spiel vom Internet rippen Allgemeine Java-Themen 2
S KI für TicTacToe spiel Allgemeine Java-Themen 11
M [Threads / Spiel] Help! I need sombody.. Allgemeine Java-Themen 2
A Snake Spiel in Java Allgemeine Java-Themen 11
C Roulette Video Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben