运行效果截图
项目工程结构
代码
猜游戏总类
package Jobday07_练习猜字游戏;
import java.util.Scanner;
public abstract class GuessGame {
public void start(){
String r = suiji();
tiShi();
int times =1;
int mark = 100;
while(true){
System.out.println("猜:");
String c =new Scanner(System.in).nextLine();
if(c.equals("EXIT")){
System.out.println("下次来要坚持住呦!期待你的到来!");
break;
}
if(c.equals("秘诀")){
System.out.println(r);
continue;
}
String result = biJiao(c,r);
System.out.println(result);
if(caiDui(result)){
System.out.println("恭喜你打对了!,共用"+times+"次,成绩为"+mark+"分");
break;
}
times++;
mark -=10;
if(mark ==0){
System.out.println("分数用完了,下次在来吧!");
break;
}
}
}
public abstract String suiji();
public abstract void tiShi();
public abstract String biJiao(String c,String r);
public abstract boolean caiDui (String result);
}
字符类
package Jobday07_练习猜字游戏;
import java.util.Arrays;
import java.util.Random;
public class GuessLetterGame extends GuessGame{
@Override
public String suiji() {
char[] a = new char[26];
for(int i =0;i<a.length;i++){
a[i] =(char) ('A'+i);
}
for(int i = 0;i<5;i++){
int n = new Random().nextInt(26);
char b = a[i];
a[i] = a[n];
a[n] = b;
}
char[] c = Arrays.copyOf(a, 5);
String s = new String( c);
return s;
}
@Override
public void tiShi() {
System.out.println("以及随机生成不重复的五个大写字母");
System.out.println("请猜 字母为什么");
}
@Override
public String biJiao(String c, String r) {
int a =0,b = 0;
for(int i=0;i<c.length();i++){
for(int j=0;j<r.length();j++){
if(c.charAt(i)==r.charAt(j)){
if(i==j){
a++;
}else{
b++;
}
break;
}
}
}
return a+"A"+b+"B";
}
@Override
public boolean caiDui(String result) {
return result.equals("5A0B");
}
}
数字类
package Jobday07_练习猜字游戏;
import java.util.Random;
public class GuessNumberGame extends GuessGame {
@Override
public String suiji() {
int n = new Random().nextInt(1000) + 1;
return String.valueOf(n);
}
@Override
public void tiShi() {
System.out.println("已经随机生成1-1000的随机数");
System.out.println("请猜这个数为");
}
@Override
public String biJiao(String c, String r) {
int a = Integer.parseInt(c);
int b = Integer.parseInt(r);
if (a > b) {
return "大";
} else if (a < b) {
return "小";
} else {
return "对";
}
}
@Override
public boolean caiDui(String result) {
return result.equals("对");
}
}
测试类
package Jobday07_练习猜字游戏;
import java.util.Scanner;
import javax.swing.text.GapContent;
public class Test1 {
public static void main(String[] args) {
System.out.println("1 数字 2 字母");
System.out.println("请选择 >");
int n = new Scanner(System.in).nextInt();
GuessGame game;
if(n == 1){
game = new GuessNumberGame();
}else{
game = new GuessLetterGame();
}
game.start();
}
}