Java:(游戏:猜字游戏)
题目描述:
编写一个猜字游戏。随机产生一个单词,提示用户一次猜测一个字母,如运行示例所示。单词中的每个字母显示为一个星号。当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并且询问用户是否继续对另外一个单词进行游戏。声明一个数组来存储单词,如下所示:
代码:
import java.util.Scanner; public class Test25 { public static void main(String[] args) { Scanner in = new Scanner(System.in); String[] words = { "write","happy","sun","love","study","cat"}; int[] words_guessed = new int[words.length]; //定义数组保存已经猜过的单词的下标 for(int i =0; i < words.length; i++) //初始化数组元素 words_guessed[i] = words.length; for(int i =0; i < words.length; i++) { int r = getRandom(words.length,words_guessed); words_guessed[i] = r; guessGame(words[r]); System.out.print("Do you want to guess another word?Enter y or n:"); while(true) { char option = new java.util.Scanner(System.in).next().charAt(0); if(option == n) { in.close(); return; } else if(option != y) System.out.println("Enter error!Re-enter:"); else break; } } System.out.println("No more words"); in.close(); } //游戏主体 public static void guessGame(String word) { String[] answer = new String[word.length()]; int miss_count = 0; char your_answer; int flag; //0:猜错 1:猜对 2:已经猜过 for(int i = 0; i < answer.length; i++) answer[i] = "*"; while(true) { flag = 0; System.out.print("(Guess) Enter a letter in word "); printArrays(answer); System.out.print(" > "); your_answer = new java.util.Scanner(System.in).next().charAt(0); for(int i = 0; i < word.length(); i++) { if(your_answer == word.charAt(i)) { if(your_answer != answer[i].charAt(0)) { answer[i] = String.valueOf(your_answer); flag = 1; } else { flag = 2; break; } } } if(overGuess(answer)) { System.out.print("The word is "); printArrays(answer); System.out.println(". You missed "+miss_count+" time"); return; } if(flag == 0) { System.out.println(your_answer+" is not in the word"); miss_count++; } else if(flag == 2) { System.out.println(your_answer+" is already in the word"); } } } //随机数选择:返回[0,upper_bound)的随机整数,不包括numbers public static int getRandom(int upper_bound,int... numbers) { int random = (int)(Math.random() * upper_bound); for (int i = 0;i < numbers.length;i++) { if (random == numbers[i]) { random = (int)(Math.random() * upper_bound); i = 0; } } return random; } //判断是否猜完 public static boolean overGuess(String[] answer) { for(int i = 0; i < answer.length; i++) { if(answer[i].charAt(0) == *) return false; } return true; } //输入数组元素 public static void printArrays(String[] array) { for(int i = 0; i < array.length; i++) System.out.print(array[i]); } }
运行截图:
上一篇:
IDEA上Java项目控制台中文乱码