用java实现猜数字小游戏

        猜数字游戏,给定4个随机不重复数字,然后玩家去猜,每次只能看见两个数字结果,一个A表示正确位置上的数字数量,另一个B表示存在但不在正确位置上的数字数量,玩家根据这两个值去猜,直到猜对为止。

        比如给定‘1234’,猜1256,则得:A2B0,猜:5612,则得:A0B2,猜2143,则得:A0B4,以此类推,直到4个数字正确。

        以下,介绍如何在java下实现基本原理。

        首先,我们需要生成4位不重复的数字,并把它存入有序列表中:

public List getNums() {// 生成随机数字
		List li = new ArrayList();//用有序列表存储数字
		Random rr = new Random();
		while (li.size() < 4) {
			int num = rr.nextInt(10);
			if (!li.contains(num)) {//判断数字是否已存在于列表中
				//System.out.println(num);
				li.add(num);
			} else {
				num = rr.nextInt(10);//已存在的话,重新赋值
			}
		}
		//System.out.println(li);

		return li;

	}

        接着,录入玩家输入的4位数字,并与生成的数字比较:

public int caishuzi(List list) {
		Scanner ss = new Scanner(System.in);
		System.out.println("请输入数字");
		String srnum = ss.next();
		//System.out.println(alist);
		String a[] = srnum.split("");
		ArrayList  b = new ArrayList();
		for(int i=0;i<a.length;i++){
		   b.add(Integer.valueOf(a[i]));//将输入的数字转为integer方便比较
		}
		int A = 0;//A用来判断有几个数字位置对
		int B = 0;//B用来判断有几个数字存在但位置不对
		for(int j=0;j<list.size();j++) {
			if(list.get(j)==b.get(j)) {
				A++;
			}
			if(list.contains(b.get(j))) {
				B++;
			}
			
			
		}
		B = B-A;
		if(A!=4) {
				System.out.println("A"+A+"B"+B);
		}
		return A;//返回值A,用来判断是否猜正确
	}

        最后,执行,使用循环来进行重复判断:

public static void main(String[] args) {
		caishuzi cc = new caishuzi();
		List list = cc.getNums();
		while(true) {
			int flag = cc.caishuzi(list);
			if(flag ==4){
			System.out.println("恭喜");
				break;				
			}
		}						
	}


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Socket 实现猜数字小游戏 本文介绍如何使用 Java Socket 编写简单的猜数字小游戏实现多人在线游戏。 1. 服务器端实现 服务器端实现主要包括以下几个步骤: 1.1 建立 ServerSocket ```java ServerSocket serverSocket = new ServerSocket(port); ``` 1.2 等待客户端连接 ```java Socket socket = serverSocket.accept(); ``` 1.3 获取输入输出流 ```java InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); ``` 1.4 生成随机并发送给客户端 ```java int number = (int) (Math.random() * 100); outputStream.write(number); ``` 1.5 接收客户端猜测的字并判断是否正确 ```java int guess = inputStream.read(); if (guess == number) { outputStream.write(1); // 猜测正确 } else { outputStream.write(0); // 猜测错误 } ``` 完整代码如下: ```java public class GuessNumberServer { public static void main(String[] args) throws IOException { int port = 8888; ServerSocket serverSocket = new ServerSocket(port); System.out.println("服务器已启动,等待客户端连接..."); while (true) { Socket socket = serverSocket.accept(); System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress()); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); int number = (int) (Math.random() * 100); outputStream.write(number); int guess = inputStream.read(); if (guess == number) { outputStream.write(1); // 猜测正确 } else { outputStream.write(0); // 猜测错误 } socket.close(); } } } ``` 2. 客户端实现 客户端实现主要包括以下几个步骤: 2.1 建立 Socket 连接 ```java Socket socket = new Socket(serverIp, port); ``` 2.2 获取输入输出流 ```java InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); ``` 2.3 接收服务器发送的随机并猜测 ```java int number = inputStream.read(); System.out.println("服务器生成的随机是:" + number); Scanner scanner = new Scanner(System.in); System.out.print("请输入猜测的字(0-99):"); int guess = scanner.nextInt(); outputStream.write(guess); ``` 2.4 接收服务器返回的猜测结果并输出 ```java int result = inputStream.read(); if (result == 1) { System.out.println("恭喜猜测正确!"); } else { System.out.println("很遗憾猜测错误!"); } ``` 完整代码如下: ```java public class GuessNumberClient { public static void main(String[] args) throws IOException { String serverIp = "127.0.0.1"; int port = 8888; Socket socket = new Socket(serverIp, port); System.out.println("已连接服务器:" + serverIp); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); int number = inputStream.read(); System.out.println("服务器生成的随机是:" + number); Scanner scanner = new Scanner(System.in); System.out.print("请输入猜测的字(0-99):"); int guess = scanner.nextInt(); outputStream.write(guess); int result = inputStream.read(); if (result == 1) { System.out.println("恭喜猜测正确!"); } else { System.out.println("很遗憾猜测错误!"); } socket.close(); } } ``` 3. 运行效果 启动服务器端后,等待客户端连接: ``` 服务器已启动,等待客户端连接... ``` 启动客户端后,输入猜测的字: ``` 已连接服务器:127.0.0.1 服务器生成的随机是:14 请输入猜测的字(0-99):50 很遗憾猜测错误! ``` 再次运行客户端,输入猜测的字: ``` 已连接服务器:127.0.0.1 服务器生成的随机是:92 请输入猜测的字(0-99):92 恭喜猜测正确! ``` 以上就是使用 Java Socket 实现猜数字小游戏的详细步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值