【Java】猜数字游戏(面向过程、面向对象)

猜数字游戏


猜数字扩展:用户与系统各拥有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;
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值