栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JAVA面向对象练习】用户与电脑猜拳游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVA面向对象练习】用户与电脑猜拳游戏

一、需求

        1、用户可自定义游戏的局数

        2、用户每局可以输入石头(0),剪刀(1),布(2)

        3、电脑随机从石头(0),剪刀(1),布(2)中选择一个

        4、每局比赛都可以自动判断输赢,并在游戏结束后打印出对局清单

二、分析

        1、用户输入的局数可以用作for循环的结束条件,用于控制每局比赛

        2、判断输赢等操作在自定义类中实现,主函数用于控制输出

        3、电脑随机选择0、1、2三个数字用的是Random函数,用于随机选择0~2之间的一个数

Random r = new Random();
a = r.nextInt(3);

nextInt(3)中的3表示的从0(包括0)开始到3结束(不包括3),从中随机选择一个整数

        4、每局比赛的局数、用户的输入、电脑的输入我选择用一个整数类型的二维数组存储,每局比赛的结果选择一个字符串类型的一维数组存储

        5、部分思路来源于B站韩顺平老师的java课

三、实现
public class Homework12 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//提示用户输入需要游玩的次数
		System.out.println("请输入你想游玩几次");
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		//记录玩家赢的次数
		int winMora = 0;
		//定义用户出拳变量
		int userMora;
		//用一个int二维数组来存储局数以及用户和电脑每次的出拳
		int mora[][] = new int[n][4];
		//用一个String一维数组存储每局的结果
		 String result[] = new String[n];
		//创建一个t1对象
		Tom t1 = new Tom();
		//循环控制
		Scanner sc1 = new Scanner(System.in);
		for(int i = 0; i < n; i++) {
			 //提示用户输入信息
			 System.out.println("请输入你要出什么0-石头,1-剪刀,2-布");
			 userMora = sc1.nextInt();
			 t1.userIn(userMora, t1.ComputerMora(), n);
			 //输出一次出拳清单	
			 System.out.println("==================================================================");
			 System.out.println("你出拳tt电脑出拳tt结果");
			 System.out.println( userMora + "tt" + t1.computerMora + "tt" + t1.resultMora()); 
			 System.out.println("==================================================================");
			 if(t1.resultMora() == "你赢了") {
				winMora++; 
			 } 
			 mora[i][0] = i;
			 mora[i][1] = userMora;
			 mora[i][2] = t1.computerMora;
			 result[i] = t1.resultMora();	
		} 
		//打印输赢清单
		System.out.println("ttt对局记录");
		System.out.println("------------------------------------------------------------------");
		System.out.println("局数tt你出拳tt电脑出拳tt结果");
		for(int i = 0; i < n; i++) {
			 System.out.println("第" + (mora[i][0]+1) +"局" + "tt" + mora[i][1] + "tt" + mora[i][2] + "tt" + result[i]);
		 }
		System.out.println("------------------------------------------------------------------");
		System.out.println("你一共赢了" + winMora + "局");
		sc.close();
		sc1.close();
		}

}

class Tom {
//	定义用户出拳和电脑出拳和游玩次数
	int userMora;
	int computerMora;
	int n;
//	定义一个方法用来返回电脑随机返回的数
	public int ComputerMora() {
		Random r = new Random();
		computerMora = r.nextInt(3);
		return computerMora;
	}
//	定义一个方法接收出拳
	public void userIn(int userMora, int computerMora, int n) {
		this.userMora = userMora;
//		当用户输入错误时抛出一个异常(不理解)--终止游戏
		 if(userMora >= 3 || userMora < 0) {
			 throw new IllegalArgumentException("你的输入有误");
		 }
		this.computerMora = computerMora;
		this.n = n;
	}
//	定义一个方法比较猜拳结果
	public String resultMora() {
		if(userMora == 0 && computerMora == 1) {
			return "你赢了";
		} 
		else if(userMora == 1 && computerMora == 2) {
			return "你赢了";
		}
		else if (userMora == 2 && computerMora == 0) {
			return "你赢了";
		}
		else if(userMora == computerMora) {
			return "平手";
		}
		else
			return "你输了";
	}
}
四、运行结果

 五、总结

        通过本次的练习,复习了之前面向对象的部分内容,使自己对于此部分的知识更熟练了,并且提高了自己的编程思想,并且学习到了Random函数,收货颇丰。

        另外也认识到了自己的短板,编程思想、编程速度还有待提高,部分知识掌握不牢固,还需努力!

        我写的这个肯定不是很好的,欢饮大佬们发布指导意见!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036816.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号