mercoledì 24 marzo 2010

Primo post del anno....
Certo che sto blog lo seguo molto, ed è pure mio....
Oggi 23 marzo 2010 abbiamo svolto la verifica riguardante il gioco del oca tramite server, con tanto di chat interna, e tutto in java.
In pratica una fila di codice senza apparente senso logico, ammetto di non essere stato molto attento, e di aver preso alcuni riferimenti esterni, resta il fatto che il programma non da errori nella compilazione, ma ne da invece nella parte di esecuzione, in quanto non sono riuscito a compilare la classe Main, per errori di scrittura del programma o altro non lo so, io posto tutto e lascio a lei la correzione, e visto che si tratta di un programma abbastanza lungo si prenda il tempo necessario, io lo metto qui, mi dica le correzioni e gli errori, e in qualche modo mi arrangerò.

Programma ServerOca

import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class ServerOca{
PrintWriter[] clienti=new PrintWriter[20];
public class ElaboraCliente implements Runnable{
BufferedReader lettore=null;
Socket sock=null;
public ElaboraCliente(Socket c){
try{
sock=c;
lettore=new BufferedReader(new InputStreamReader(sock.getInputStream()));
}
catch(Exception ex){
ex.printStackTrace();
}
}
@Override public void run(){
String messaggio;
try{
while((messaggio=lettore.readLine())!=null){
System.out.println("ho letto: "+messaggio);
InetAddress indirizzo=sock.getInetAddress();
String ind=indirizzo.toString();
String m=ind+" "+messaggio;
chiacchierone(m);
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
public void go(){
try{
ServerSocket portone=new ServerSocket(4242);
int i=0;
while(true){
Socket portina=portone.accept();
PrintWriter scrittore=new PrintWriter(portina.getOutputStream());
clienti[i]=scrittore;
i++;
Thread t=new Thread(new ElaboraCliente(portina));
t.start();
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
public void chiacchierone(String messaggio){
for(int i=0;i<20;i++){
if(clienti[i]!=null){
try{
clienti[i].println(messaggio);
clienti[i].flush();
System.out.println("Ho spedito il messaggio");
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
}
public class TestaDueCerchi{
int y;
BufferedReader lettore;
Socket sock;
PrintWriter scrittore;
JFrame f1=new JFrame("disegno1");
DueCerchi d1=new DueCerchi();
JButton b=new JButton("Ricevi");
public TestaDueCerchi(){
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f1.add(BorderLayout.CENTER,d1);
d1.setColore1(Color.YELLOW);
d1.setColore2(Color.BLUE);
f1.add(BorderLayout.SOUTH,b);
b.addActionListener(new Bottone());
f1.setSize(400,600);
f1.setVisible(true);
}
public class Bottone implements ActionListener{
public void actionPerformed(ActionEvent e){
go();
f1.repaint();
}
}
public void go(){
try{
for(int i=0;i<1;i++){
Socket s=new Socket("localhost",12);
InputStreamReader r=new InputStreamReader(s.getInputStream());
BufferedReader reader=new BufferedReader(r);
String suggerimento=reader.readLine();
System.out.println("Suggerimento: "+suggerimento);
y=Integer.parseInt(suggerimento);
d1.getY(y);
reader.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
}
public class DueCerchi extends JPanel{
Color colore1=Color.YELLOW;
Color colore2=Color.RED;
String numero="";
String n="";
int y;
int[][]coord={{210, 180},{250, 200},{270, 230},{270, 270},{250, 310},{215, 330},{180, 330},{140, 310},{110, 270},{110, 230},{130, 200},{170,180}};
public void setColore1(Color c1){
colore1=c1;
}
public void setColore2(Color c2){
colore2= c2;
}
public void paintComponent(Graphics g){
g.setColor(colore1);
g.fillOval(100,150,200,200);
g.setColor(colore2);
g.fillOval(150,200,100,100);
g.drawLine(200,350,200,150);
g.drawLine(100,250,300,250);
g.drawLine(110,300,290,200);
g.drawLine(110,200,290,300);
g.drawLine(150,160,250,340);
g.drawLine(150,340,250,160);
int j;
for(int i=0;i<12;i++){
j=i+1;
n=numero+j;
g.drawString(n,coord[i][0],coord[i][1]);
if(i==y){
g.fillOval(coord[i][0]+5,coord[i][1],10,10);
System.out.println("La mia y e:"+y);
}
}
g.setColor(colore2);
g.fillOval(150,200,100,100);
}
public int getY(int a){
y=a;
System.out.print(a);
return y;
}
}
public class ServerO {
public void go(){
try{
ServerSocket s1=new ServerSocket(12);
while(true){
Socket presa=s1.accept();
PrintWriter scrivi=new PrintWriter(presa.getOutputStream());
int s=getSuggerimenti();
scrivi.println(s);
scrivi.close();
System.out.println(s);
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
private int getSuggerimenti(){
double r1=Math.random()*12;
int r=(int)r1;
return r;
}
}
}

Programma di esecusione TestaServerOca

import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class TestaServerOca{
public static void main(String args[]){
ServerOca serv=new ServerOca();
serv.go();
TestaDueCerchi d=new TestaDueCerchi();
}
}

1 commento:

  1. Va bene, sarà mia cura studiare bene gli errori da te fatti e di spiegarteli.

    RispondiElimina