用Java写一个简易猜数游戏

用Java写一个简易猜数游戏

游戏规则:猜数字的游戏,由系统随机生成一个不同的四个数(0—9),例如(1234), 然后由用户输入四个不同的数字,如果输入的数字 与系统生成的数字相同并且位置相同 用 A 表示,
如果数字相同位置不同用B表示,例如输入(1245)结果显示: 2A1B 给用户10次输入的机会。

在这里插入图片描述
代码如下:

package com.guess;

import java.util.Scanner;

/**
 * 
 * @author 小zz
 *创建时间2019年5月8日下午5:09:35
 *@version  1.0
 *猜数游戏
 *系统生成4个不同随机数
 *用户输入四个不同数字
 */
public class Guess {
public static void main(String[] args) {
	/**注:computer用于装电脑生成的数据,
	 * user用于装用户输入的数据
	 * contA,contB分别用于装A和B的个数
	 * panduan用于判断用户输入的是否为4个单个数字,若是则可以进行下一步操作
	 * panduan2用于,若所有的条件满足则进行下一步
	 * time为用户的游戏次数
	 * */
	Scanner scanner = new  Scanner(System.in);
	int[] computer=new int[4];
	int[] user=new int[4];
	int contA=0;int contB=0;
	int panduan=10;
	int panduan2=10;
	int time=3;
	/**电脑随机生成*/
		for(int i=0;i<computer.length;i++) {
			computer[i]=(int) Math.floor(Math.random()*10);
		}
//	排序
		for(int i=0;i<computer.length-1;i++) {
			for(int j=0;j<computer.length;j++) {
				if(computer[i]>computer[j]) {
					int stemp=computer[i];
					computer[i]=computer[j];
					computer[j]=stemp;
				}
			}
		}
//		去重
		for(int i=0;i<computer.length;i++) {
			for(int j=computer.length-1;j>=0;j--) {
				if(computer[i]==computer[j]&&i!=j) {
					computer[j]=(int) Math.floor(Math.random()*10);
				}
			}
		}		
		/**用于打印电脑生成的随机数*/
		/*for(int i=0;i<computer.length;i++) {
		System.out.print(computer[i]);
		}*/
		System.out.println("---------------------------游戏开始!---------------------------");
	
			while(time>0) {
						panduan=10;
						panduan2=10;
							/**用户输入*/
							for(int i=0;i<user.length;i++) {
								System.out.println("请输入第"+(i+1)+"个数:");
								user[i]=scanner.nextInt();
							}
							/**判断输入是否正确*/
							
							
							/**判断是否为4个单个数字*/
							for(int i=0;i<user.length;i++) {
								if(user[i]>=10) {
									System.out.println("大哥!!填写错误,四个单个数字");
									panduan=5;
									panduan2=5;
									break;
								}
							}
							/**判断输入的四个数字是否相同*/
							if(panduan==10) {
					//			去重
								for(int i=0;i<user.length;i++) {
									for(int j=user.length-1;j>=0;j--) {
										if(user[i]==user[j]&&i!=j) {
											System.out.println("请输入四个不同的数字!!");
											panduan2=5;
											break;
										}
									}
								}
							}
							/**若所有的条件满足则判断结果*/
							if(panduan2==10) {
								time--;
								for(int i=0;i<computer.length;i++) {
									for(int j=0;j<computer.length;j++) {
										/**位置不同*/
										if(computer[i]==user[j]&&i!=j) {
											contB++;
											break;
										}
										/**位置相同*/
										if(computer[i]==user[j]&&i==j){
											contA++;
											break;
										}
									}
								}
									if(contA==4) {
										System.out.println("恭喜您全部猜对,奖励一点巴巴掌");
										time=0;
									}else {
											System.out.println(contA+"A"+contB+"B");
											System.out.println("您还有"+time+"此机会");
											System.out.println("您上次的输入为:");
											for(int t=0;t<user.length;t++) {
												System.out.print(user[t]);												
											}
											System.out.println();
									}						
					}
}}
}

本章要点:流程语句,数组排序,及数组去重

猜你喜欢

转载自blog.csdn.net/z1783883121/article/details/89963601