Java Socket实现猜数字小游戏

 更新时间:2020年09月24日 11:48:25   作者:清潇和梨花  
这篇文章主要为大家详细介绍了Java Socket实现猜数字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java Socket实现猜数字游戏的具体代码,供大家参考,具体内容如下

运行截图

Server

Client

完整代码

Server

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
import java.util.Scanner;

public class ServerDemo {
 private int flag;

 public void server() throws IOException {
  //创建一个服务器
  System.out.println("服务端启动,等待客户端连接。。。");
  PrintWriter out = null;
  Scanner getClient = null;
  ServerSocket server = null;
  Socket client = null;
  this.setFlag();
  try {
   server = new ServerSocket(6666);
   //创建一个接收连接客户端的对象
   client = server.accept();
   System.out.println(client.getInetAddress() + " 已成功连接到此台服务器上。");
   //字符输出流
   out = new PrintWriter(client.getOutputStream()); //向客户端发送数据
   out.println("欢迎来到猜数字小游戏(1-100)!!!");
   out.flush();//将缓冲流中的数据全部输出
   getClient = new Scanner(client.getInputStream()); //接收客户端发送的数据
   //阻塞等待客户端发送消息过来
   while (getClient.hasNextLine()) {
    String returnMsg = null;
    String tmp = getClient.nextLine();
    if ("e".equals(tmp)) {
     break;
    } else if ("c".equals(tmp)) {
     returnMsg = "欢迎来到新一轮的猜数字小游戏(1-100)!!!";
     this.setFlag();
    } else {
     int clientInput = Integer.parseInt(tmp);

     if (clientInput > flag) {
      returnMsg = "你输入的数字大了!!!";
     } else if (clientInput < flag) {
      returnMsg = "你输入的数字小了!!!";
     } else {
      returnMsg = "恭喜你,猜中了!!!继续(输入c),退出(输入e)";
     }
    }
    out.println(returnMsg); //向客户端发送数据
    out.flush();
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   out.close();
   getClient.close();
   server.close();
  }
 }

 // 生成随机数字
 public void setFlag() {
  Random r = new Random();
  flag = r.nextInt(100);
  System.out.println("猜数字小游戏答案:flag = " + flag);
 }

 public static void main(String[] args) throws IOException {
  new ServerDemo().server();
 }
}

Client

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientDemo {

 public void client() throws IOException {
  System.out.println("正在向服务器请求连接。。。");
  Socket client = null;
  Scanner getKey = null;
  Scanner getServer = null;
  PrintWriter out = null;
  try {
   client = new Socket("127.0.0.1", 6666);
   getServer = new Scanner(client.getInputStream());
   System.out.println(getServer.nextLine());
   out = new PrintWriter(client.getOutputStream());
   System.out.print("请输入数字:");
   //先读取键盘录入方可向服务端发送消息
   getKey = new Scanner(System.in);
   while (getKey.hasNextLine()) {
    //写到服务端的的控制台
    out.println(getKey.nextLine());
    out.flush();
    try {
     System.out.println("提示消息:" + getServer.nextLine());
     System.out.print("请输入数字:");
    } catch (Exception e) {
     System.out.print("游戏结束!!!");
     break;
    }
    //阻塞等待接收服务端的消息
   }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   getKey.close();
   getServer.close();
   out.close();
   client.close();
  }

 }

 public static void main(String[] args) throws IOException {
  new ClientDemo().client();
 }
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • spring学习JdbcTemplate数据库事务管理

    spring学习JdbcTemplate数据库事务管理

    这篇文章主要为大家介绍了spring学习JdbcTemplate数据库事务管理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解如何在Java中使用阿里云对象存储OSS

    详解如何在Java中使用阿里云对象存储OSS

    Java是世界上最流行的编程语言之一,拥有着广泛的应用场景和强大的生态系统,阿里云对象存储 OSS 是一种企业级的云存储服务,本文将介绍如何在 Java 中使用阿里云对象存储 OSS,并写一点相应的代码示例供大家参考
    2023-06-06
  • 详解Java图形化编程中的鼠标事件设计

    详解Java图形化编程中的鼠标事件设计

    这篇文章主要介绍了Java图形化编程中的鼠标事件设计,是Java的GUI开发中的基础部分,需要的朋友可以参考下
    2015-10-10
  • Java实现简单的飞机大战游戏(控制主飞机篇)

    Java实现简单的飞机大战游戏(控制主飞机篇)

    这篇文章主要为大家详细介绍了Java实现简单的飞机大战游戏,控制主飞机,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Java正则表达式的基本用法和实例大全

    Java正则表达式的基本用法和实例大全

    这篇文章主要给大家介绍了关于Java正则表达式的基本用法和实例的相关资料,大家在使用Java正则表达式的时候可查阅这篇文章,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • Java开源诊断工具Arthas使用方法详解

    Java开源诊断工具Arthas使用方法详解

    这篇文章主要介绍了Java开源诊断工具Arthas使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • java中File类的构造函数及其方法

    java中File类的构造函数及其方法

    这篇文章主要介绍了java中File类的构造函数及其方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • Java日常练习题,每天进步一点点(42)

    Java日常练习题,每天进步一点点(42)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • Java实现常见排序算法的优化

    Java实现常见排序算法的优化

    今天给大家带来的是关于Java的相关知识,文章围绕着Java实现常见排序算法的优化展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-01-01
  • Mybatis-Plus分页的使用与注意事项

    Mybatis-Plus分页的使用与注意事项

    分页查询每个人程序猿几乎都使用过,下面这篇文章主要给大家介绍了关于Mybatis-Plus分页的使用与注意事项的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论