Guden,
bin neu hier, also erst mal Hallo an alle.
Ich komme ja eher aus der C/C++ richtung, und konnte davon bis jetzt auch viel
in Java benutzen, und komme auch mit der Java Programmierung im eigentlichen sinne klar.
Nur wenns nun um Client und Server zeugs gehts, da komme ich noch nicht so zurecht.
Nun zum Programm:
[JAVA=42]
import javax.swing.JOptionPane;
public class SSPvsPlayer {
public static void main(String[] args)
{
int player_one;
int player_two;
int gewinner;
String eingabe;
// String x = null; // Umwandlung der Auswahl von Spieler (1)
// String y = null; // Umwandlung des Auswahl von Spieler (2)
// Display
eingabe=JOptionPane.showInputDialog(null, "Stein, Schere, Papier! \n\nSpieler (1)\n\n Chose " +
"(0) for Quit. \n Chose (1) " + "for 'Stein',\n Chose (2) for 'Schere',\n Chose (3) for 'Papier'.\n\n");
player_one = Integer.parseInt(eingabe);
while(player_one != 0)
{
// Spieler (2)
eingabe=JOptionPane.showInputDialog(null, "Stein, Schere, Papier! \n\n Spieler (2)\n\n Chose " +
"(0) for Quit. \n Chose (1) " + "for 'Stein',\n Chose (2) for 'Schere',\n Chose (3) for 'Papier'.\n\n");
player_two = Integer.parseInt(eingabe);
// Gewinner Reset!
gewinner = 0;
// Spiel
if(player_one == 1 && player_two == 2) {gewinner = 1;} // Stein vs. Schere = Spieler Gewinnt
if(player_one == 1 && player_two == 3) {gewinner = 2;} // Stein vs. Papier = Computer Gewinnt
if(player_one == 2 && player_two == 3) {gewinner = 1;} // Schere vs. Papier = Spieler Gewinnt
if(player_one == 2 && player_two == 1) {gewinner = 2;} // Schere vs. Stein = Computer Gewinnt
if(player_one == 3 && player_two == 1) {gewinner = 1;} // Papier vs. Stein = Spieler Gewinnt
if(player_one == 3 && player_two == 2) {gewinner = 2;} // Papier vs. Schere = Computer Gewinnt
///////////////////////////////////////////////////////////////////////////////////////
String x = null; // Umwandlung der Auswahl von Spieler (1)
String y = null; // Umwandlung des Auswahl von Spieler (2)
// Spieler (1)
if (player_one == 1) {x = " 'Stein'";}
if (player_one == 2) {x = " 'Schere'";}
if (player_one == 3) {x = " 'Papier'";}
if (player_one > 3) {x = " Falsche Eingabe!";}
// Spieler (2)
if (player_two == 1) {y = " 'Stein'";}
if (player_two == 2) {y = " 'Schere'";}
if (player_two == 3) {y = " 'Papier'";}
if (player_two > 3) {y = " Falsche Eingabe!";}
///////////////////////////////////////////////////////////////////////////////////////
if (player_one > 3) // Falsche Eingabe, Eingabe > 3
{
JOptionPane.showMessageDialog(null, "Sie haben eine Falsche Zahl eingegeben!\n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Fehlermeldung!", JOptionPane.ERROR_MESSAGE);
}
if (gewinner == 0) // Draw!
{
if (player_one == player_two) // Damit 'Draw!' nur kommt wenn WIRKLICH 'Draw!' ist!
{
JOptionPane.showMessageDialog(null,"DRAW!\n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Ausgabe", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{ if (gewinner == 1) // Spieler (1) Gewinnt
{
JOptionPane.showMessageDialog(null,"SPIELER (1) hat gewonnen! \n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Ausgabe", JOptionPane.INFORMATION_MESSAGE);
}
else // Spieler (2) Gewinnt
{
JOptionPane.showMessageDialog(null,"SPIELER (2) hat gewonnen! \n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Ausgabe", JOptionPane.INFORMATION_MESSAGE);
}
}
// Display - Eingabe bis Auswahl (0) für Quit!
eingabe = JOptionPane.showInputDialog(null, "Stein, Schere, Papier! \n\nSpieler (1)\n\n Chose " +
"(0) for Quit. \n Chose (1) " + "for 'Stein',\n Chose (2) for 'Schere',\n Chose (3) for 'Papier'.\n\n");
player_one = Integer.parseInt(eingabe);
}
System.exit(0); // Quit!
}
}
[/code]
Das Läuft bereits, ist auch nicht wirklich Schwer gewesen, wenn man mal drauf gekommen ist,
wie man es am besten umsetzt, aber das ist auch nicht mein Problem.
Ich möchte die fenster für die benutzereingabe in den client und die Spielelogik in den server einbauen. Der client nimmt ja die Eingaben vom Benutzer entgegen und gibt Sie an den server weiter. Der Server wartet bis beide clients die Eingaben an ihn übermittelt haben und wertet dann aus, wer gewonnen hat.
und das ergebnis wird dann vom server an die clients zurückgesendet. zu guter letzt soll der client die Ergebnisse entgegen nehmen und dann halt ausgeben, so wie oben im programm,
wobei mir die graphische darstellung erst mal egal ist, geht erst mal ums prinzip, verständniss.
Das ist mein Multiserver bis jetzt.
[JAVA=42]
import java.net.*;
import java.util.Observable;
import java.util.Observer;
import java.io.*;
public class MultiServerThread extends Thread implements Observer{
private Socket socket = null;
PrintWriter out;
ThreadCom threadCommunication;
public MultiServerThread(Socket socket,ThreadCom threadCommunication) {
//super("MultiServerThread");
this.socket = socket;
this.threadCommunication= threadCommunication;
threadCommunication.addObserver(this);
}
public void run() {
try {
out = new PrintWriter(
socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
boolean quit=false;
while(!quit){
inputLine = in.readLine();
if (inputLine.equalsIgnoreCase("quit")){
quit = true;
System.out.println(this.getName()+" id "+this.getId() + " Server-Thread wird beendet!");
out.println("Serververbindung wird beendet!");
}else{
System.out.println("MultiServer: "+this.getName()+": "+inputLine);
threadCommunication.sendChatString(this.getName()+": "+inputLine);
}
}
threadCommunication.deleteObserver(this);
out.close();
in.close();
socket.close();
}catch (IOException e) {
e.printStackTrace();
}
}
// @Override
public void update(Observable arg0, Object chatString) {
out.println(chatString);
}
}
[/code]
Und das mein Client:
[JAVA=42]
import java.io.*;
import java.net.*;
public class EchoClientErzeuger extends Thread{
BufferedReader in;
EchoClientErzeuger(BufferedReader in){
this.in=in;
}
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("127.0.0.1", 5444);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(
new InputStreamReader(echoSocket.getInputStream()));
}catch (UnknownHostException e) {
System.err.println("Don't know host: localhost");
System.exit(1);
}catch (IOException e) {
System.err.println("Couldn't get I/O for connection to: localhost");
System.exit(1);
}
new EchoClientErzeuger(in).start();
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
public void run() {
String incoming;
try{
while(true){
incoming = in.readLine();
if(incoming==null){
break;
}
System.out.println(incoming);
}
System.out.println("Chat wird beendet");
in.close();
}catch(SocketException se){
System.out.println("Verbindung zum Server unterbrochen");
} catch (IOException e) {
System.out.println("Verbindung zum Server unterbrochen");
}
System.exit(0);
}
}
[/code]
Das die können schon miteinandern Kommunizieren, aber ich weiss einfach nicht wie ich
das umsetzen soll, ihr soll es mir nicht lösen, davon hab ich nichts, ich brauch einfach
mal jemand der mit ein wenig hilft, oder tipps gibt, denn für irgendwas ist so ein forum ja schließlich da.
Werde in der Zeit mal weitermachen und dann entsprechende Updates Posen.
Vielen Dank schon mal allein fürs ansehen
bin neu hier, also erst mal Hallo an alle.
Ich komme ja eher aus der C/C++ richtung, und konnte davon bis jetzt auch viel
in Java benutzen, und komme auch mit der Java Programmierung im eigentlichen sinne klar.
Nur wenns nun um Client und Server zeugs gehts, da komme ich noch nicht so zurecht.
Nun zum Programm:
[JAVA=42]
import javax.swing.JOptionPane;
public class SSPvsPlayer {
public static void main(String[] args)
{
int player_one;
int player_two;
int gewinner;
String eingabe;
// String x = null; // Umwandlung der Auswahl von Spieler (1)
// String y = null; // Umwandlung des Auswahl von Spieler (2)
// Display
eingabe=JOptionPane.showInputDialog(null, "Stein, Schere, Papier! \n\nSpieler (1)\n\n Chose " +
"(0) for Quit. \n Chose (1) " + "for 'Stein',\n Chose (2) for 'Schere',\n Chose (3) for 'Papier'.\n\n");
player_one = Integer.parseInt(eingabe);
while(player_one != 0)
{
// Spieler (2)
eingabe=JOptionPane.showInputDialog(null, "Stein, Schere, Papier! \n\n Spieler (2)\n\n Chose " +
"(0) for Quit. \n Chose (1) " + "for 'Stein',\n Chose (2) for 'Schere',\n Chose (3) for 'Papier'.\n\n");
player_two = Integer.parseInt(eingabe);
// Gewinner Reset!
gewinner = 0;
// Spiel
if(player_one == 1 && player_two == 2) {gewinner = 1;} // Stein vs. Schere = Spieler Gewinnt
if(player_one == 1 && player_two == 3) {gewinner = 2;} // Stein vs. Papier = Computer Gewinnt
if(player_one == 2 && player_two == 3) {gewinner = 1;} // Schere vs. Papier = Spieler Gewinnt
if(player_one == 2 && player_two == 1) {gewinner = 2;} // Schere vs. Stein = Computer Gewinnt
if(player_one == 3 && player_two == 1) {gewinner = 1;} // Papier vs. Stein = Spieler Gewinnt
if(player_one == 3 && player_two == 2) {gewinner = 2;} // Papier vs. Schere = Computer Gewinnt
///////////////////////////////////////////////////////////////////////////////////////
String x = null; // Umwandlung der Auswahl von Spieler (1)
String y = null; // Umwandlung des Auswahl von Spieler (2)
// Spieler (1)
if (player_one == 1) {x = " 'Stein'";}
if (player_one == 2) {x = " 'Schere'";}
if (player_one == 3) {x = " 'Papier'";}
if (player_one > 3) {x = " Falsche Eingabe!";}
// Spieler (2)
if (player_two == 1) {y = " 'Stein'";}
if (player_two == 2) {y = " 'Schere'";}
if (player_two == 3) {y = " 'Papier'";}
if (player_two > 3) {y = " Falsche Eingabe!";}
///////////////////////////////////////////////////////////////////////////////////////
if (player_one > 3) // Falsche Eingabe, Eingabe > 3
{
JOptionPane.showMessageDialog(null, "Sie haben eine Falsche Zahl eingegeben!\n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Fehlermeldung!", JOptionPane.ERROR_MESSAGE);
}
if (gewinner == 0) // Draw!
{
if (player_one == player_two) // Damit 'Draw!' nur kommt wenn WIRKLICH 'Draw!' ist!
{
JOptionPane.showMessageDialog(null,"DRAW!\n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Ausgabe", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{ if (gewinner == 1) // Spieler (1) Gewinnt
{
JOptionPane.showMessageDialog(null,"SPIELER (1) hat gewonnen! \n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Ausgabe", JOptionPane.INFORMATION_MESSAGE);
}
else // Spieler (2) Gewinnt
{
JOptionPane.showMessageDialog(null,"SPIELER (2) hat gewonnen! \n"
+ "\nSpieler (1) : " + player_one + x + "\nSpieler (2) : " + player_two + y,
"Ausgabe", JOptionPane.INFORMATION_MESSAGE);
}
}
// Display - Eingabe bis Auswahl (0) für Quit!
eingabe = JOptionPane.showInputDialog(null, "Stein, Schere, Papier! \n\nSpieler (1)\n\n Chose " +
"(0) for Quit. \n Chose (1) " + "for 'Stein',\n Chose (2) for 'Schere',\n Chose (3) for 'Papier'.\n\n");
player_one = Integer.parseInt(eingabe);
}
System.exit(0); // Quit!
}
}
[/code]
Das Läuft bereits, ist auch nicht wirklich Schwer gewesen, wenn man mal drauf gekommen ist,
wie man es am besten umsetzt, aber das ist auch nicht mein Problem.
Ich möchte die fenster für die benutzereingabe in den client und die Spielelogik in den server einbauen. Der client nimmt ja die Eingaben vom Benutzer entgegen und gibt Sie an den server weiter. Der Server wartet bis beide clients die Eingaben an ihn übermittelt haben und wertet dann aus, wer gewonnen hat.
und das ergebnis wird dann vom server an die clients zurückgesendet. zu guter letzt soll der client die Ergebnisse entgegen nehmen und dann halt ausgeben, so wie oben im programm,
wobei mir die graphische darstellung erst mal egal ist, geht erst mal ums prinzip, verständniss.
Das ist mein Multiserver bis jetzt.
[JAVA=42]
import java.net.*;
import java.util.Observable;
import java.util.Observer;
import java.io.*;
public class MultiServerThread extends Thread implements Observer{
private Socket socket = null;
PrintWriter out;
ThreadCom threadCommunication;
public MultiServerThread(Socket socket,ThreadCom threadCommunication) {
//super("MultiServerThread");
this.socket = socket;
this.threadCommunication= threadCommunication;
threadCommunication.addObserver(this);
}
public void run() {
try {
out = new PrintWriter(
socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
boolean quit=false;
while(!quit){
inputLine = in.readLine();
if (inputLine.equalsIgnoreCase("quit")){
quit = true;
System.out.println(this.getName()+" id "+this.getId() + " Server-Thread wird beendet!");
out.println("Serververbindung wird beendet!");
}else{
System.out.println("MultiServer: "+this.getName()+": "+inputLine);
threadCommunication.sendChatString(this.getName()+": "+inputLine);
}
}
threadCommunication.deleteObserver(this);
out.close();
in.close();
socket.close();
}catch (IOException e) {
e.printStackTrace();
}
}
// @Override
public void update(Observable arg0, Object chatString) {
out.println(chatString);
}
}
[/code]
Und das mein Client:
[JAVA=42]
import java.io.*;
import java.net.*;
public class EchoClientErzeuger extends Thread{
BufferedReader in;
EchoClientErzeuger(BufferedReader in){
this.in=in;
}
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("127.0.0.1", 5444);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(
new InputStreamReader(echoSocket.getInputStream()));
}catch (UnknownHostException e) {
System.err.println("Don't know host: localhost");
System.exit(1);
}catch (IOException e) {
System.err.println("Couldn't get I/O for connection to: localhost");
System.exit(1);
}
new EchoClientErzeuger(in).start();
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
public void run() {
String incoming;
try{
while(true){
incoming = in.readLine();
if(incoming==null){
break;
}
System.out.println(incoming);
}
System.out.println("Chat wird beendet");
in.close();
}catch(SocketException se){
System.out.println("Verbindung zum Server unterbrochen");
} catch (IOException e) {
System.out.println("Verbindung zum Server unterbrochen");
}
System.exit(0);
}
}
[/code]
Das die können schon miteinandern Kommunizieren, aber ich weiss einfach nicht wie ich
das umsetzen soll, ihr soll es mir nicht lösen, davon hab ich nichts, ich brauch einfach
mal jemand der mit ein wenig hilft, oder tipps gibt, denn für irgendwas ist so ein forum ja schließlich da.
Werde in der Zeit mal weitermachen und dann entsprechende Updates Posen.
Vielen Dank schon mal allein fürs ansehen