人机互动版猜拳游戏(面向对象方法实现)

人机互动版猜拳游戏(Java面向对象方法实现)


本文主要介绍一个简单的Java控制台“人机互动版猜拳小游戏”,主要涉及Java基本语法、面向对象、异常。项目共包括4个类:Computer类、User类、Game类和PlayGame类,分别行使不同的程序功能。程序运行结果如下图所示:



以下是程序的代码及注释:

Computer类:
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();
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值