java猜数字游戏应用程序_帮忙修改一个用java实现猜数字游戏的程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这个是题目:

服务器端:

在游戏开始的时候能够随机产生1个随机数0-19。并将这1个随机数打印在服务器端控制台。——主要为了测试,实际当中可以不打出来。

启动服务器,等待客户端进行连接,当客户连接到服务器后,显示连接成功。

以流的方式读取客户端出入的信息

根据客户端输入的数字,和服务器产生的随机数进行对比

服务器将游戏结果返回给客户端。

客户端:

客户端连接服务器,显示连接成功。

客户端接受用户键盘输入。

客户端将用户输入的值发送到服务器端

客户端接受服务器端返回的判断结果。如果猜的正确,就打印正确的提示信息。否则继续等待输入。

完善期进行实现//输入:exit退出,输入reset重新得到一个随机数,重新开始

请好心人帮我改下我写的程序。。急用。。谢谢勒

public class GuessClient {

Socket socket;

DataInputStream netIn;

DataOutputStream netOut;

String clientMsg ;

BufferedReader br;

public static void main(String[] args) {

GuessClient client=new GuessClient();

client.connectServer();

client.sendClientMsg();

client.clientGuess();

}

void connectServer(){

try {

System.out.println("客户端启动");

socket = new Socket(InetAddress.getLocalHost(),GuessServer.PORT);

System.out.println("连接服务器成功!");

} catch (IOException e) {

System.out.println("连接服务器失败!");

}

}//客户端连接服务器,如果能够连通则显示连接成功,否则将显示连接失败

客户端:

String getKeyBoardIn(){

System.out.println("请输入猜想的数字(0~20)");

br=new BufferedReader(new InputStreamReader(System.in));

try {

clientMsg = br.readLine();

} catch (IOException e) {

System.out.println("请输入正确的数字!");

}

return clientMsg;

}

private void sendServer(){

try {

netOut=new DataOutputStream(socket.getOutputStream());

netOut.writeUTF(getKeyBoardIn());

netOut.flush();

} catch (IOException e) {

}

}

private class clientThread1  implements Runnable{

public void run() {

while(true){

try {

Thread.sleep(GuessServer.SLEEP_TIME);

sendServer();

} catch (Exception e) {

}

}

}

}

void sendClientMsg(){

new Thread(new clientThread1()).start();

}//玩家输入所猜的数字,并传送到服务器

private void receiveServer() throws Exception{

netIn=new DataInputStream(socket.getInputStream());

while(clientMsg.equals("exit")){

System.out.println("成功退出游戏!");

return;

}

while(!clientMsg.equals("exit")){

String serverMsg=netIn.readUTF();

System.out.println("服务器端:"+serverMsg);

if(serverMsg=="恭喜您猜对了!"){

System.out.println("猜数字游戏结束!");

return;

}

System.out.print("请继续输入:");

clientMsg=br.readLine();

netOut.writeUTF(clientMsg);

}

}

private class clientThread2  implements Runnable{

public void run() {

while(true){

try {

Thread.sleep(GuessServer.SLEEP_TIME);

receiveServer();

} catch (Exception e) {

}

}

}

}

void clientGuess(){

new Thread(new clientThread2()).start();

}//接受服务器的反馈,并将结果显示给玩家

}

服务器端:

public class GuessServer {

public final static int MAX_NUM=20;

public final static int PORT=789;

public final static int SLEEP_TIME=100;

static int randomNum;

ServerSocket serverSocket;

Socket socket;

DataInputStream netIn;

DataOutputStream netOut;

String clientMsg;

static int getRandom(){

return randomNum=Math.abs(new Random().nextInt()%MAX_NUM);

}//产生一个0-19之间的随机数

public static void main(String[] args) throws Exception {

GuessServer server=new GuessServer();

server.connectClient();

server.guessProcess();

}

void connectClient() throws Exception{

System.out.println("服务器端启动");

serverSocket=new ServerSocket(PORT);

System.out.println("等待客户端连接……");

socket=serverSocket.accept();

System.out.println("与客户端连接成功");

}//与客户端进行连接

void guessProcess(){

new Thread(new ServerThread()).start();

}

private class ServerThread implements Runnable{

public void run() {

while(true){

try {

Thread.sleep(SLEEP_TIME);

compareMsg();

} catch (Exception e) {

}

}

}

}//初始化启动线程

private void getClientMsg(){

try {

netIn=new DataInputStream(socket.getInputStream());

netOut=new DataOutputStream(socket.getOutputStream());

clientMsg=netIn.readUTF();

} catch (IOException e) {

}

}//获得客户端的数据

private void compareMsg() throws Exception{

getClientMsg();

while(!clientMsg.equals("exit")){

String serverMsg=null;

getRandom();

System.out.println("客户端:"+clientMsg);

System.out.println("产生的随机数为:"+randomNum);

int clientNum=Integer.parseInt(clientMsg);

if(clientNum>=0&&clientNum<20){

if(clientNum==randomNum){

serverMsg="恭喜您猜对了!";

}else if(clientNum>randomNum){

serverMsg="您输入大了!";

}else{

serverMsg="您输入小了!";

}

}

else{

serverMsg="输入超过范围,请重新输入!";

}

netOut.writeUTF(serverMsg);

clientMsg=netIn.readUTF();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值