人机互动版猜拳游戏(Java面向对象方法实现)
本文主要介绍一个简单的Java控制台“人机互动版猜拳小游戏”,主要涉及Java基本语法、面向对象、异常。项目共包括4个类:Computer类、User类、Game类和PlayGame类,分别行使不同的程序功能。程序运行结果如下图所示:
以下是程序的代码及注释:
Computer类:
User类:
Game类:
PlayGame类:
public class Computer {
public String name;
public int score;
public void chuquan(int i){
switch(i){
case 1:System.out.println("电脑出拳:剪刀");break;
case 2:System.out.println("电脑出拳:石头");break;
case 3:System.out.println("电脑出拳:布");break;
}
}
}
User类:
public class User {
public String name;
public int score;
public void chuquan(int i){
switch(i){
case 1:System.out.println("你出拳:剪刀");break;
case 2:System.out.println("你出拳:石头");break;
case 3:System.out.println("你出拳:布");break;
default:System.out.println("输入错误!此次输入无效!");break;
}
}
}
Game类:
public class Game{
User u=new User();
Computer c=new Computer();
public int times;
//游戏初始化
public void init(){
u.name="匿名";
u.score=0;
c.name="匿名";
u.score=0;
times=0;
}
public void computerPlayer(int input){
switch(input){
case 1:c.name="刘备";break;
case 2:c.name="孙权";break;
case 3:c.name="曹操";break;
}
}
public void user(String name){
u.name=name;
}
public void chuquan(int a){
if(a==1||a==2||a==3){
times+=1;
u.chuquan(a);
int b=(int)(Math.random()*3)+1;//产生一个1~3的随机数
c.chuquan(b);
if(a==1&&b==3||a==2&&b==1||a==3&&b==2){//若用户赢,分数+1
u.score+=1;
}else if(a==3&&b==1||a==1&&b==2||a==2&&b==1){//若电脑赢,分数+1
c.score+=1;
}
}else{
System.out.println("输入有误,请输入一个0~3的整数!");
}
}
public void jisuan(){
System.out.println("一共玩了:"+times+" 次! "+u.name+" 赢了:"+u.score+"次! "+c.name+" 赢了:"+c.score+"次!");
}
public void result(){
System.out.println("最后结果为:\n一共玩了:"+times+" 次! "+u.name+" 赢了:"+u.score+"次! "+c.name+" 赢了:"+c.score+"次!");
}
}
PlayGame类:
/***
* @author 叶子竹
* @本程序是一个人机互动猜拳小游戏
*/
import java.util.InputMismatchException;
import java.util.Scanner;
public class PlayGame {
public static void main(String[] args){
int juese;
int i;//i表示玩家出拳的数字
Game g=new Game();
g.init();
System.out.print("************************************\n");
System.out.print("** 欢迎进入猜拳游戏 ***\n");
System.out.print("************************************\n");
System.out.println("出拳规则:1.剪刀 2.石头 3.布\n");
System.out.println("请选择角色:1.刘备 2.孙权 3.曹操");
Scanner input=new Scanner(System.in);
try{
juese=input.nextInt();
while(juese!=1&&juese!=2&&juese!=3){//输入内容必须是一个1~3的整数,否则重新输入
System.out.println("输入的内容应该是一个1~3的整数,请重新输入!");
juese=input.nextInt();
}
g.computerPlayer(juese);
System.out.println("请输入您的姓名:");
g.user(input.next());
System.out.println("出拳:(输入0退出)");
i=input.nextInt();
while(i!=0){//若用户不输入0,执行循环体,一直玩游戏
g.chuquan(i);
g.jisuan();
System.out.println("\n出拳:(输入0退出)");
i=input.nextInt();
}
System.out.println("游戏结束!");
g.result();
}catch(InputMismatchException e){
System.out.println("程序运行出错:输入非法字符!");
}finally{
System.out.println("\n谢谢使用!");
}
input.close();
}
}