猜数字游戏

来源:互联网 发布:mac 将wma转换成mp3 编辑:程序博客网 时间:2024/05/21 22:32

急不可耐做出来的游戏,没什么技术含量、代码非常简单、而且计算机生成不重复数字那里用了非常笨的做法,然而,代码通过编译并且游戏可以玩耍后,还是非常让人激动!

import java.util.*;class GuessNumGame {public static void main(String[] args) {//游戏规则提示print("\n*欢迎进入Rvin的猜数字游戏*\n\n");print("游戏规则\n");print("    计算机将随机到4个0~9的不重复数字,玩家亦输入四个0~9数字后按回车(数字间用空格隔开),以猜测计算机随机数字。");print("若玩家猜测的数字及位置都正确,则提示A;若仅数字正确,则提示B。当结果为4A0B时,玩家获胜!!!");//创建rn(计算机随机数字),pn(玩家猜测数字),game(游戏运行)3个对象RandomNum rn = new RandomNum();PlayerNum pn = new PlayerNum();Run game = new Run();//控制rn对象bornRN(生成数字),game对象start(输出启动提示),pn对象bornPN(生成玩家数字)rn.bornRN(RandomNum.r_n);game.start();pn.bornPN(PlayerNum.p_n, PlayerNum.in);//调用game中的compare(比较方法),比较rn和pn的数字后,//将比较结果输出,并将其中判断游戏结果的A(数字和位置都正确)赋给主函数中的A变量int A = game.compare(RandomNum.r_n, PlayerNum.p_n);//将A变量作为参数传给isGuessAgain,判断是否需要再次猜测,如符合获胜条件,则输出猜测次数game.isGuessAgain(A);}static void print(String tip) {System.out.print(tip);}}class Run {void start() {GuessNumGame.print("\n\n\n我猜...\n");}int compare(int[] r_n, int[]p_n) {int A = 0, B = 0;boolean[] temp1 = new boolean[r_n.length];boolean[] temp2 = new boolean[p_n.length];for(int x = 0; x < r_n.length; x++) {if (p_n[x] == r_n[x]) {A++;temp1[x] = true;}}for(int x = 0; x < r_n.length; x++) {if (temp1[x])continue;for(int y = 0; y < p_n.length; y++){if (temp2[y] || temp1[y])continue;if(r_n[x] == p_n[y]) {temp2[y] = true;B++;break;}}}GuessNumGame.print(" ========\n|  " + A + "A" + B + "B  |\n ========");return A;}void isGuessAgain(int A) {int time = 1;while(A != 4) {time++;GuessNumGame.print("\n\n\n我再猜...\n");PlayerNum pnAgain = new PlayerNum();pnAgain.bornPN(pnAgain.p_n, pnAgain.in);A = compare(RandomNum.r_n, pnAgain.p_n);}GuessNumGame.print("\n\n\n");GuessNumGame.print(" =======================================================\n");GuessNumGame.print("|                         BINGO                         |\n");GuessNumGame.print("|           ^_^聪明的你用了" + time + "次猜中正确数字!            |\n");GuessNumGame.print(" =======================================================\n");GuessNumGame.print("\n\n\n");}}class RandomNum {static int[] r_n = new int[4];void bornRN(int[] r_n) {r_n[0] = (int)(Math.random() * 10);r_n[1] = (int)(Math.random() * 10);r_n[2] = (int)(Math.random() * 10);r_n[3] = (int)(Math.random() * 10);while (r_n[1] == r_n[0]) {r_n[1] = (int)(Math.random() * 10);}while (r_n[2] == r_n[0] || r_n[2] == r_n[1]) {r_n[2] = (int)(Math.random() * 10);}while (r_n[3] == r_n[0] || r_n[3] == r_n[1] || r_n[3] == r_n[2]) {r_n[3] = (int)(Math.random() * 10);}//用于显示电脑随机到的数,可做调试用//for (int x = 0; x < r_n.length; x++) {//GuessNumGame.print(r_n[x] + " ");//}}}class PlayerNum {static int[] p_n = new int[4];static Scanner in = new Scanner(System.in);void bornPN(int[] p_n, Scanner in) {for (int x = 0; x < p_n.length; x++) {p_n[x] = in.nextInt();}}}


0 0