石头剪刀布——java代码

介绍——ai翻译一下

当然,我可以帮助您解释代码。这段代码是一个简单的石头剪刀布游戏,由两部分组成:`overload` 类和 `tom` 类。
### `overload` 类:
这个类包含了游戏的主要逻辑,包括与用户的交互和游戏规则的执行。
1. `main` 方法:
   - 创建了 `tom` 类的实例 `t`。
   - 初始化了一个二维数组 `arr1` 来记录每一局的玩家和电脑的出拳以及输赢情况。
   - 初始化了一个一维数组 `arr2` 来记录每一局的输赢情况。
   - 使用 `Scanner` 类获取用户输入。
   - 进行三局游戏,每局游戏:
     - 用户输入出拳(0-拳头,1-剪刀,2-布)。
     - 电脑随机生成一个出拳。
     - 比较两者出拳,判断输赢,并记录在 `arr1` 和 `arr2` 中。
     - 输出这一局的详细信息。
   - 游戏结束后,输出总的输赢次数。
### `tom` 类:
这个类包含了与游戏相关的属性和方法。
1. `showinfo()` 方法:未使用,可能是遗留代码。
2. `computernum()` 方法:用于电脑随机生成一个出拳。
3. `settom(int tomeguess)` 方法:设置玩家的出拳。
4. `gettomn()` 方法:获取玩家的出拳。
5. `vscomputer()` 方法:比较玩家和电脑的出拳,返回输赢结果。
6. `wincount(String s)` 方法:根据输赢结果更新计数器。
### 一些注意事项:
- `Random` 类不需要导包,因为它属于 `java.util` 包。
- 在 `settom(int tomeguess)` 方法中,当输入的出拳不符合要求时,抛出了一个 `IllegalArgumentException`,这是一个好的实践,可以防止不合法的输入。
- `vscomputer()` 方法中的条件判断顺序需要调整,以确保 `else` 语句只在玩家和电脑出拳相同时执行。
- `wincount(String s)` 方法中,`wincount` 应该是一个实例变量,而不是在方法内部声明。
总的来说,这段代码实现了一个基本的石头剪刀布游戏,但是还有一些细节需要改进。

代码

import java.util.Random;
import java.util.Scanner;


public class overload{

	public static void main(String[] args) {
		//创建一个tom玩家
		tom t=new tom();
		//用来记录最后输赢的次数
		int iswincount=0;
		//创建一个二维数组,用来接受局数,tom出拳和电脑出拳情况
		int [][] arr1=new int[3][3];//三行三列的表格
		int j=0;
		//创建一个一维数组,接受输赢情况
		String[]arr2=new String[3];
		Scanner scanner=new Scanner(System.in);//获取用户输入
		for (int i=0;i<3;i++){
			//获取玩家的quan
			System.out.print("请输入你要出的拳(0-拳头,1——剪刀,2布");
			int num=scanner.nextInt();//获取到你输出的数组
			t.settom(num);//调用方法,传入你的输入的值
			int tomeguess=t.gettomn();//调用方法获取值
			arr1[i][j+1]=tomeguess;//传入表格
			//获取电脑出的拳
			int comguess=t.computernum();
			arr1[i][j+2]=comguess;//传入值
			//比较值
			String iswin=t.vscomputer();
			arr2[i]=iswin;
			arr1[i][j]=t.count;
			//对每一局进行输出
			System.out.print("==========================="+"\n");
			System.out.print("局数\t玩家的出拳\t电脑的出拳\t输赢情况"+"\n");
			System.out.print(t.count+"\t"+tomeguess+"\t\t"+comguess+"\t\t"+iswin);
			System.out.print("\n"+"==================================");
			System.out.print("\n\n");
			iswincount=t.wincount(iswin);
		}
		//对最终结果进行输出
		System.out.print("局数\t玩家的出拳\t电脑的出拳\t输赢情况"+"\n");
		for(int a=0;a<arr1.length;a++){
			for (int b=0;b<arr1[a].length ;b++ ) {
				System.out.print(arr1[a][b]+"\t\t");

				
			}
	

			System.out.print(arr2[a]+"");
			System.out.println();

		}

		System.out.print("你赢了"+iswincount+"次");

	}
}
class tom{//核心代码
	int tomeguess;
	int comguess;
	int wincount;
	//比赛次数
	int count=1;
public void showinfo(){
	//
}

public int computernum(){
		Random r=new Random();
		this.comguess=r.nextInt(3);//返回0-2的随机数
		return comguess;
}
//设置玩家出拳
public void settom(int tomeguess){
	if (tomeguess>2||tomeguess<0){
		//抛出异常
		throw new IllegalArgumentException ("数字错误");

	}
	this.tomeguess=tomeguess;
	}
public int gettomn(){
	return tomeguess;
}
//比赛结果返回
public String vscomputer(){
	//比较巧
	if(tomeguess==0&&comguess==1){
		return "你赢了";
	}
	else if(tomeguess==1&&comguess==2){
		return "你赢了";
	}
	else if(tomeguess==2&&comguess==0){
		return "你赢了";
	}
	else if(tomeguess==comguess){
		return "平手";
	}
	else{
		return "你输了";
	}
}
public int wincount(String s){
	count++;
	if(s.equals("你赢了")){
		wincount++;//统计赢的个数
	}
	return wincount;
}

}

效果

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值