java实现人机猜拳游戏的代码
需求说明:创建游戏类
属性:甲方玩家(用户)、乙方玩家(计算机)、对战次数
编写游戏类方法1――初始化
编写游戏类方法2――计算并返回对战结果
编写游戏类方法3――显示对战结果
代码如下:
import java.util.*;
//建一个Person类
public class Person {
Scanner input = new Scanner(System.in);
/**
* 定义属性
*/
String name ;
int score;
/**
* 人的出拳方法
*/
public void showFirst(){
System.out.print("请出拳:1.剪刀 2.石头 3.布(请输入相应数字:)");
int num = input.nextInt();
switch(num){
case 1:
System.out.println("你出拳: 剪刀");
break;
case 2:
System.out.println("你出拳: 石头");
break;
case 3:
System.out.println("你出拳: 布");
break;
default:
System.out.println("输入有误,请重新输入:");
}
}
}
建一个Computer类
import java.util.*;
public class Computer {
Scanner input = new Scanner(System.in);
/**
* 类的属性
*/
String name;
int score;
/**
* 计算机出拳方法
*/
public void showFirst(){
int num = (int)(Math.random() * 10 % 3 + 1);
switch(num){
case 1 :
System.out.println("电脑出拳:剪刀");
break;
case 2 :
System.out.println("电脑出拳:石头");
break;
case 3 :
System.out.println("电脑出拳:布");
break;
default:
System.out.print("输入有误,请重新输入:");
}
}
}
最后是游戏类
import java.util.*;
public class Game {
Scanner input = new Scanner(System.in);
/**
* 定义属性
*/
Person person;//甲方
Computer computer;//乙方
int count;//对战次数
/**
* 初始化方法
*/
public void Initial(){
person = new Person();
computer = new Computer();
count = 0;
}
/**
* 游戏头及规则、选择对手
*/
public void Show(){
System.out.println("-----------欢迎进入游戏世界-----------");
System.out.println("\t******************");
System.out.println("\t** 猜拳,开始 **");
System.out.println("\t******************");
System.out.println("\n出拳规则:1.剪刀 2.石头 3.布");
System.out.print("请选择对方角色:(1.刘备 2.孙权 3.曹操):");//选择对方角色
int num = input.nextInt();
switch(num){
case 1:
System.out.println("你选择了 刘备对战");
break;
case 2:
System.out.println("你选择了 孙权对战");
break;
case 3:
System.out.println("你选择了 曹操对战");
break;
}
}
/**
* 开始游戏
*/
public void Start(){
System.out.print("要开始吗?(y/n)");
String answer = input.next();
int perFirst;//用户出拳
int compFirst;//计算机出拳
while(answer.equals("y")){//出拳
perFirst = person.showFirst();
compFirst = computer.showFirst();
if((perFirst == 1 && compFirst == 1)||(perFirst == 2 && compFirst == 2)||(perFirst == 3 && compFirst == 3)){
System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧 !\n");//平局
}else if((perFirst == 1 && compFirst == 3) || (perFirst == 2 && compFirst == 1) || (perFirst == 3 && compFirst == 2)){
System.out.println("结果: 恭喜, 你赢了!"); //用户赢
person.score++;
}else{
System.out.println("结果说:^_^,你输了,真笨!\n"); //计算机赢
computer.score++;
}
count++;
System.out.print("\n是否开始下一轮(y/n): ");
answer = input.next();
}
}
}
在Game代码中红色字体部分出错,求解答。
----------------解决方案--------------------------------------------------------
补充:在代码中加粗字体
perFirst = person.showFirst();
compFirst = computer.showFirst();
处出错。
----------------解决方案--------------------------------------------------------
没有错误信息不好判断
perFirst = person.showFirst();
你的showFirst()没有返回值
public void showFirst(){}
----------------解决方案--------------------------------------------------------
看不出错误,不过很有意思!我用C语言写一个
----------------解决方案--------------------------------------------------------
回复 3楼 让我们飞
谢谢!前面的两个类Person和Computer的方法必须设置为有返回值的。
----------------解决方案--------------------------------------------------------