使用面向对象的编程思想设计编写一个猜拳游戏,实现玩家和电脑猜拳的过程,玩家和电脑都具备猜拳方法,玩家的出拳使用键盘输入实现,电脑出拳使用随机数,、
要求:每个回合双方各处一次拳,每个回合结束后系统提示结果信息并提示玩家是否要继续,退出游戏打印呈现游戏的结果(游戏总局,玩家获胜、平、输的次数,玩家胜率),通过胜率决定最终的胜利
玩家类
/**
*玩家类
*/
public class Player{
int winCount;
int drawCount;
Scanner sc;
/**
*玩家初始化
*/
public void int(){
//将实例化写入方法中,在使用是只用调用一次,不用多次new
sc=new Scanner(System.in);
}
/**
*玩家出拳的方法
*/
public int showFinger(){
System.out.println("请选择您的出拳:1代表石头,2代表剪刀,3代表布");
int result=sc.nextInt();
return result;
}
}
电脑类
/**
* 电脑类
*/
public class Computer(){
Random random;
/**
* 电脑类初始化
*/
public void init(){
random=new Random();
}
/**
*电脑出拳的方法
*/
public int showFinger(){
//生成0-2加上1,即1-3(不用变量接收,直接返回)
return random.nextInt(3)+1;
}
}
游戏类(封装了游戏的完整过程)
public class Game{
//玩家对象
Player player;
//电脑对象
Computer computer;
//记录总局数
int count;
Scanner sc;
/**
* 初始化方法
*/
public void init(){
//实例化玩家对象
player=new Player();
//初始化玩家
player.init();
//实例化电脑对象
computer=new Computer();
//初始化电脑
computer.init();
sc=new Scanner(System.in);
//初始化总局数
count=0;
}
/**
* 将出拳数字改为字符串的方法
*/
public String changeToString(int result){
String str="";
switch(result){
case 1:
str="石头"
break;
case 2:
str="剪刀"
break;
case 3:
str="布"
break;
}
return str;
}
/**
* 描述游戏逻辑的方法
*/
public void start(){
String answer;
do{
//进入一次循环就总局数加一
count++;
//调用玩家出拳的方法
int playerResult=player.showFinger();
//将出拳结果数字改为String
System.out.println("玩家出拳:"+changeToString(playerResult));
//调用电脑出拳的方法
int computerResult=player.showFinger();
//将出拳结果数字改为String
System.out.println("玩家出拳:"+changeToString(computerResult));
//玩家胜
if(playerResult==1;computerResult==2||playerResult==2;computerResult==3||playerResult==3;computerResult==1){
System.out.println("玩家赢了");
}
//平局
else if(playerResult==computerResult)
System.out.println("平局");
}
//玩家输
else(playerResult==computerResult)
System.out.println("玩家输了");
}
System.out.println("是否继续游戏:y/n");
answer=sc.next();
}while(answer.equals("y"));
}
/**
* 显示游戏结果的方法
*/
public void showResult(){
//输的次数
int loseCount=count-player.winCount-player.drawCount;
System.out.println("游戏总场数:"+count);
System.out.println("胜局:"+player.winCount);
System.out.println("平局:"+player.drawCount);
System.out.println("败局:"+loseCount);
System.out.println("胜率:"+(int)(player.winCount/(double)(count*100))+"%");
if(winCount>loseCount){
System.out.println("恭喜获得最终胜利!");
}
else if(winCount=loseCount){
System.out.println("平局");
}
else if(winCount<loseCount){
System.out.println("很遗憾,您输了!");
}
}
启动游戏的APP
public class GameAPP{
public static void main(String[] args){
//实例化游戏类
Game game=new Game();
//调用初始化方法
game.init();
//调用游戏逻辑开始的方法
game.start();
}
}