如题:刚学到面向对象,有个猜数字小游戏,改进了一下
一、每次游戏结束询问是否开始下一次
import java.util.Scanner;
class GuessMathGame {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int start = 1; //游戏开始的标记,1为开始,非1为结束
int count = 0; //猜数字的次数
for(int i=1; i==start; ) {
int key = (int)(Math.random()*1000)+1; //先确定要猜的随机数字
System.out.println(key);
System.out.println("请输入你猜的数字0--1000:");
while(true) {
if(count>=15) {
count = 0;
break ;
}
int guess = sc.nextInt(); //输入你猜的数字
if(guess<key) {
count++; //每输入一次,不管对错,都计数一次
System.out.println("你猜的数字小了,再猜!");
}else if(guess>key) {
count++;
System.out.println("你猜的数字大了,再猜!");
}else {
count++;
if(count<=5) {
System.out.println("你用了 "+count+" 次就猜对了!太厉害了!");
}else {
System.out.println("你用了 "+count+" 次才猜对!加油啊!");
}
count = 0; //猜对之后,计数器清零
start = 0; //标记重置为零
break;
}
}
System.out.println("本次游戏结束!再来一次!");
System.out.println("重来请按‘1’,离开请按任意数字");
start = sc.nextInt(); //重新输入标记,决定是否再来一次
}
}
}
二、开始3条命,少于6步奖一条,多于9步罚一条
import java.util.Scanner;
class GuessMathGame2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int life = 3; //生命数,可以玩的次数,等于0时结束
int count = 0; //猜数字的次数
f:for(int i=0; i<life; ) {
int key = (int)(Math.random()*1000)+1; //先确定要猜的随机数字
System.out.println("key="+key);
w:while(true) {
if(count>=9) {
life--;
System.out.println("Loser!! 惩罚 life -1");
System.out.println("life = "+life);
count = 0; //count清零
continue f;
}
int guess = sc.nextInt(); //输入你猜的数字
if(guess<key) {
count++;
System.out.println("你猜的数字小了,再猜!");
}else if(guess>key) {
count++;
System.out.println("你猜的数字大了,再猜!");
}else {
count++; //每输入一次,不管对错,都计数一次
if(count<=5) {
System.out.println("你用了 "+count+" 次就猜对了!太厉害了!奖励 life +1");
life++;
System.out.println("life = "+life);
}else {
System.out.println("你用了 "+count+" 次才猜对!太low了!不奖不罚。life = "+life);
}
count = 0; //猜对之后,计数器清零
System.out.println("再来一次,加油!");
continue f;
}
}
}
System.out.println("GAME OVER! 重来请投币!");
}
}
|
|