猜数字游戏
猜数字扩展:用户与系统各拥有100积分,按以下规则计算得分,系统积分到0则用户获胜。
如果用户猜测数字与系统产生数字相同,则得10分,系统扣10分;
范围差在5以内,得5分,系统扣5分;
范围差在10以内,得0分,系统扣0分;
范围差在20以内,扣5分,系统加5分;
范围差在100以内,扣10分,系统加10分;
面向过程
代码如下
package es4;
import java.util.Random;
import java.util.Scanner;
public class guessnumextend {
public static void main(String args[])
{
int num;
System.out.println("开始猜数字吧!范围是1~100");
System.out.printf("游戏规则:\r\n"+
"如果您猜测的数字与系统产生数字相同,则得10分,系统扣10分;\r\n" +
"范围差在5以内,得5分,系统扣5分;\r\n" +
"范围差在10以内,得0分,系统扣0分;\r\n" +
"范围差在20以内,扣5分,系统加5分;\r\n" +
"范围差在100以内,扣10分,系统加10分;\r\n"+
"当系统0分时您获胜!\r\n");//游戏规则
int sys=100;//系统初始分数
int user=100;//用户初始分数
int i=0;
while(sys>0&user>0)
{
i++;
Random r=new Random();
num=r.nextInt(100)+1; //产生1~100的随机数
//num=r.nextInt(10)+1; //产生1~10的随机数
System.out.println("系统已产生数字,你猜是?");
Scanner guess=new Scanner(System.in);
int userguess=guess.nextInt();
int extent=Math.abs(userguess-num);
if(extent==0)
{
System.out.printf("第%d轮游戏中,你猜对啦!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",user+10);
System.out.printf("系统当前分数为%d。\r\n",sys-10);
user=user+10;
sys=sys-10;
}
else if(extent<=5)
{
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=5!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",user+5);
System.out.printf("系统当前分数为%d。\r\n",sys-5);
user=user+5;
sys=sys-5;
}
else if(extent>5&&extent<=10)
{
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=10!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",user);
System.out.printf("系统当前分数为%d。\r\n",sys);
}
else if(extent>10&&extent<=20)
{
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=20!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",user-5);
System.out.printf("系统当前分数为%d。\r\n",sys+5);
user=user-5;
sys=sys+5;
}
else
{
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=100!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",user-10);
System.out.printf("系统当前分数为%d。\r\n",sys+10);
user=user-10;
sys=sys+10;
}
}
if(user<=0||sys<=0)
{
System.out.println("游戏结束了!!!");
System.out.printf("你的最终分数为%d。\r\n",user);
System.out.printf("系统最终分数为%d。\r\n",sys);
if(user>0&sys<=0)
{
System.out.println("你赢啦!!!");
}
else
{
System.out.println("你输了!!!");
}
}
}
}
面向对象
代码如下
package es5;
import java.util.Random;
import java.util.Scanner;
public class guessnumproject {
public static void main(String args[])
{
user u1=new user();
system s1=new system();
rule r1=new rule();
while(r1.gameover()==0)//gameover=1时游戏结束
{
r1.i++;
game g1=new game(s1.getnum(),u1.guessnum());
r1.getsocre(g1.play(),u1,s1);
}
System.out.println("游戏结束了!");
System.out.println("你的最终得分是"+u1.startscore);
System.out.println("系统的最终得分是"+s1.startscore);
}
}
class user{//用户
int startscore;
int userguess;
user()
{
startscore=100;//初始化用户分数
}
int guessnum()//用户猜数字
{
System.out.println("请输入你猜的数字:");
Scanner guess=new Scanner(System.in);
int userguess=guess.nextInt();
return userguess;
}
}
class system{//系统
int startscore;
int num;
system()
{
startscore=100;//初始化系统分数
}
int getnum()//系统得到一个随机数
{
Random r=new Random();
num=r.nextInt(100)+1; //产生1~100的随机数
//num=r.nextInt(10)+1; //产生1~10的随机数
System.out.println("系统已经随机产生了一个1~100范围内的随机数!");
return num;
}
}
class rule{//游戏规则
int flag;
int i=0;//游戏轮数
rule()
{
flag=0; //flag=0游戏可继续进行
}
void getsocre(int x,user u,system s)
{
switch(x)
{
case 1:
System.out.printf("第%d轮游戏中,你猜对啦!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",u.startscore+10);
System.out.printf("系统当前分数为%d。\r\n",s.startscore-10);
u.startscore=u.startscore+10;
s.startscore=s.startscore-10;
break;
case 2:
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=5!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",u.startscore+5);
System.out.printf("系统当前分数为%d。\r\n",s.startscore-5);
u.startscore=u.startscore+5;
s.startscore=s.startscore-5;
break;
case 3:
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=10!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",u.startscore);
System.out.printf("系统当前分数为%d。\r\n",s.startscore);
break;
case 4:
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=20!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",u.startscore-5);
System.out.printf("系统当前分数为%d。\r\n",s.startscore+5);
u.startscore=u.startscore-5;
s.startscore=s.startscore+5;
break;
case 5:
System.out.printf("第%d轮游戏中,你猜的结果与系统给出数字范围差<=100!\r\n",i);
System.out.printf("你的当前分数为%d。\r\n",u.startscore-10);
System.out.printf("系统当前分数为%d。\r\n",s.startscore+10);
u.startscore=u.startscore-10;
s.startscore=s.startscore+10;
break;
}
if(u.startscore<=0||s.startscore<=0)
{
flag=1;//游戏结束
}
}
int gameover()
{
return flag;
}
}
class game{//游戏程序
int i=1;
int usernum;
int sysnum;
int result;
game(int x,int y)
{
usernum=x;
sysnum=y;
}
int play()
{
int extent=Math.abs(usernum-sysnum);
if(extent==0)
{
result=1;
return result;
}
else if(extent<=5)
{
result=2;
return result;
}
else if(extent>5&&extent<=10)
{
result=3;
return result;
}
else if(extent>10&&extent<=20)
{
result=4;
return result;
}
else
{
result=5;
return result;
}
}
}