2 superyu1992 superyu1992 于 2013.06.05 14:52 提问

java小游戏设计问题(有些冗长,麻烦耐心看完!)

该小游戏是为了实现电脑随机出石头,剪刀,或布,然后玩家根据电脑的要求(赢电脑,输电脑,打平),大致思路是客户端发出指令开始游戏,服务器端接收后随机选择,然后发回给客户端,玩家选择后,服务器做出判断对错。现将游戏的服务器端与客户端贴出,现在的问题是当玩家输入自己的判断后,服务器返回的值一直是“回答错误”,求解!

这是 服务器端 的程序
import java.io.*;
import java.net.*;
import java.util.*;

public class gameServer {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ServerSocket server = null;
    DataOutputStream out=null;
    DataInputStream in=null;
    Socket you =null;
    String s=null,s1=null;
    int w=0,l=0,d=0,b=0;
    int sum=0;
    while(true){
        try{server = new ServerSocket(4351);}
        catch(IOException e1){
            System.out.println("ERRO:"+e1);
            }
        try{
            you=server.accept();
            in=new DataInputStream(you.getInputStream());
            out=new DataOutputStream(you.getOutputStream());
            while(true){
                 int c =0;
                 c=in.readInt();


                 if(c==-1){
                     b=(int)(Math. random()*8);
                     d=b;
                     if(b==0){

                         s="电脑出布,要打平";



                     }
                     else if(b==1){
                         s="电脑出布,要输电脑";

                     }
                     else if(b==2){
                         s="电脑出布,要赢电脑";

                     }
                     else if(b==3){
                         s="电脑出石头,要打平";

                     }
                     else if(b==4){
                         s="电脑出石头,要输电脑";

                     }
                     else if(b==5){
                         s="电脑出石头,要赢电脑";

                     }
                     else if(b==6){
                         s="电脑出剪刀,要打平";

                     }
                     else if(b==7){
                         s="电脑出剪刀,要输电脑";

                     }
                     else {
                         s="电脑出剪刀,要赢电脑";

                     }
                 }
                 System.out.println(s);


            if(c==1){
              if(d==0&&d==5&&d==7&&d==8)
                  s="回答正确!";

              else
                  s="回答错误";




            }
            if(c==0){
              if(d==2&&d==6&&d==4)
                  s="回答正确!";


              else
                  s="回答错误";


            }
           if(c==2){
              if(d==1&&d==3)
                  s="回答正确!";

              else
                  s="回答错误";
       }

           System.out.println(s);   



              out.writeUTF(s);
              //sum=w*3+d;
                       //out.writeUTF(s);
                       //out.writeInt(sum);

        }
        }catch(IOException e){}

    }
}

}

下面是 客户端 的程序

import java.io.*;
import java.net.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.Random;

public class gameClient extends JFrame implements ActionListener{
JButton butj ,buts,butb,butl,butstart;

JPanel panel1,panel2,panel3;
JLabel label,label2;
JTextArea showText;
String s1=null;
int a=0;
int sum1=0;

Socket socket=null;
DataInputStream in=null;
DataOutputStream out=null;


public gameClient() {

    setTitle("郁龑");                 
    setLocation(250, 250);             
    setSize(500, 300);                

    showText=new JTextArea();
    socket=new Socket();

    panel1 =  new JPanel();         
    panel1.setBackground(Color.yellow);     
    butj = new JButton("剪刀"); 
    butb=new JButton("布");
    buts = new JButton("石头");

    butl=new JButton("清除");
    butstart=new JButton("开始游戏");

    butj.addActionListener(this);    
    buts.addActionListener(this);
    butb.addActionListener(this);
    butl.addActionListener(this);
    butstart.addActionListener(this);

    panel1.add(butj);                      
    panel1.add(butb);
    panel1.add(buts);                    

    panel1.add(butl);
    panel1.add(butstart);

    panel2 =  new JPanel();         
    panel2.setBackground(Color.green);     
    label = new JLabel("");
    label2= new JLabel("");
    panel2.add(label);                      
    panel2.add(label2); 

    panel3 =  new JPanel();
    panel3.setBackground(Color.blue);

    panel3.add(showText);


    add(panel1,BorderLayout.SOUTH);       
    add(panel2,BorderLayout.CENTER);                 
    add(panel3,BorderLayout.NORTH);

     try{socket=new Socket("localhost",4351);
     in=new DataInputStream(socket.getInputStream());
     out=new DataOutputStream(socket.getOutputStream());}
     catch(IOException ee){
         System.out.println("无法连接");
     }


}
 public void actionPerformed(ActionEvent e){

     if(e.getSource()==butstart){

         a=-1;



 }
     if(e.getSource()==butj){

         a=0;



 }


     if(e.getSource()==butb){

         a=1;


     }
     if(e.getSource()==buts){


         a=2;



         }
     if(e.getSource()==butl){


        a=3;



         }

    try{ 
     out.writeInt(a);

     s1=in.readUTF();
     //sum1=in.readInt();



    }
 catch(IOException ee){
     System.out.println("无法连接");

 }
    label.setText(s1); 

 }





public static void main(String[] args) {

    gameClient  frame  = new gameClient();   
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true);  


}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!