人机猜拳

import java.util.Scanner;

/**
 * 计算机类
 */
public class Computer {
       String name = "电脑"; // 名字
       int score = 0;;       // 积分
       
       /**
        * 出拳
        * @return 出拳结果:1.剪刀 2.石头 3.布
        */
       public int showFist(){
    	   // 产生随机数
    	   int show = (int)(Math.random()*10)%3 + 1;  //产生随机数,表示电脑出拳
    	   
    	   // 输出出拳结果并返回
    	   switch(show){
    	      case 1:
    	    	  System.out.println(name+"出拳: 剪刀");
    	    	  break;
    	      case 2:
    	    	  System.out.println(name+"出拳: 石头");
    	    	  break;
    	      case 3: 
    	    	  System.out.println(name+"出拳: 布");
    	    	  break;
    	   }
    	   return show;
       }
     
}

  

package cn.yz;
import java.util.Scanner;

/**
 * 游戏类
 */
public class Game {
    Person person;       //甲方
    Computer computer;   //乙方
    int count;           //对战次数
	
    /**
     * 初始化
     */
    public void initial(){
    	person = new Person();
    	computer = new Computer();
    	count = 0;
    }
		
    /**
     * 开始游戏
     */
	public void startGame() {
		
		System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------");
		System.out.println("\n\t\t******************");
		System.out.println  ("\t\t**  猜拳, 开始    **");
		System.out.println  ("\t\t******************");
		
		System.out.println("\n出拳规则:1.剪刀 2.石头 3.布");
		
		Scanner input = new Scanner(System.in);
		String exit = "n";  // 退出系统
		
		do{
			initial();  // 初始化
			/*选择对方角色*/
			System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): ");
			
			int role = input.nextInt();
			if(role == 1){
				computer.name = "刘备";
			}else if(role == 2){
				computer.name = "孙权";
			}else if(role == 3){
				computer.name = "曹操";
			}   
			
			// 扩展功能1:输入用户姓名
			/*输入用户姓名*/
			System.out.print("请输入你的姓名:");
			person.name = input.next();
			
			System.out.println(person.name+"  VS  "+computer.name+"  对战\n");
			// 扩展功能1结束
			
			System.out.print("要开始吗?(y/n) ");
			String start = input.next();  // 开始每一局游戏
			
			
			int perFist;   //用户出的拳
			int compFist;  //计算机出的拳
			
			while(start.equals("y")){
		        /*出拳*/
				perFist = person.showFist();
				compFist = computer.showFist();
				/*裁决*/
				if((perFist == 1 && compFist == 1) || (perFist == 2 && compFist == 2) || (perFist == 3 && compFist == 3)){
					System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧 !\n");  //平局
				}else if((perFist == 1 && compFist == 3) || (perFist == 2  && compFist == 1) || (perFist == 3 && compFist == 2)){
					System.out.println("结果: 恭喜, 你赢了!");  //用户赢
					person.score++;
				}else{
					System.out.println("结果说:^_^,你输了,真笨!\n");  //计算机赢
					computer.score++;
				}
				count++;
				System.out.print("\n是否开始下一轮(y/n):  ");
				start = input.next();	
			}
			/*显示结果*/
			showResult();			
			
			// 扩展功能3:循环游戏,直到退出系统
			System.out.print("\n要开始下一局吗?(y/n):");
			exit = input.next();			
			System.out.println();
			// 扩展功能3结束
		}while(!exit.equals("n"));	
		
		System.out.println("系统退出!");
	}
	
	/**
	 * 显示比赛结果
	 */
	public void showResult(){
		/*显示对战次数*/
		System.out.println("---------------------------------------------------");
		System.out.println(computer.name + "  VS  " + person.name);
		System.out.println("对战次数:"+ count);
		
		// 扩展功能2:显示最终的得分
		System.out.println("\n姓名\t得分");		
		System.out.println(person.name+"\t"+person.score);
		System.out.println(computer.name+"\t"+computer.score+"\n");
		// 扩展功能2结束
		
		/*显示对战结果*/
		int result = calcResult();
		if(result == 1){
			System.out.println("结果:打成平手,下次再和你一分高下!");
		}else if(result == 2){
			System.out.println("结果:恭喜恭喜!");   //用户获胜
		}else{ 
			System.out.println("结果:呵呵,笨笨,下次加油啊!");   //计算机获胜
		}
		System.out.println("---------------------------------------------------");
	}
	
	/**
	 * 计算比赛结果
	 * @return 1:战平;2:用户赢;3:电脑赢
	 */
    public int calcResult(){
    	if(person.score == computer.score){
    		  return 1; // 战平
    	}else if(person.score > computer.score){
    		  return 2; // 用户赢
    	}else{
    		  return 3; // 电脑赢
    	}
    	
    }
}

  

package cn.yz;

import java.util.Scanner;

public class Person { 
    String name = "匿名";  // 名字
    int score = 0;         // 积分  
    
    /**
     * 出拳
     * @return 出拳结果:1.剪刀 2.石头 3.布
     */
    public int showFist(){
  	  // 接收用户的选择
  	  Scanner input = new Scanner(System.in);
  	  System.out.print("\n请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :");
  	  int show = input.nextInt();
  	  
  	  // 输出出拳结果,并返回
  	  switch(show){
  	      case 1: 
  	    	  System.out.println("你出拳: 剪刀");
  	    	  break;
  	      case 2:
  	    	  System.out.println("你出拳: 石头");
  	    	  break;
  	      case 3: 
  	    	  System.out.println("你出拳: 布");
  	    	  break;
  	  }
  	  return show;
    }
}

  

package cn.yz;

/**
 * 人机互动版猜拳游戏 
 * 程序入口
 */
public class Test {
	public static void main(String[] args) {
		Game game = new Game();
		game.startGame();
	}
}

  

posted @ 2017-08-14 16:32  阿辉啊  阅读(288)  评论(0)    收藏  举报