JAVA程序可读性(本人总结点!)

看着自己这代码。感觉能力貌似提升了一个等级。代码尽管简单。可是编程思想、代码规范、可读性等等(不一一说明了)!
<pre name="code" class="java">import java.util.Random;
import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		
		GestureGame gestureGame = new GestureGame();
		
		gestureGame.play();
		
	}
}

class GestureGame {

	private Scanner scanner;

	/** 手势数组 */
	private String[] gestures;

	/** 角色数组 */
	private String[] roles;

	/** 被选择的角色,在数组中的Index */
	private int roleID;

	/** 玩家胜利盘数统计器 */
	public int playerWinTimes;
	
	/**机器胜利盘数统计器*/
	public int robotWinTimes;

	/** 总局数统计器 */
	public int playTimes;
	
	/**游戏开关*/
	public boolean isContinue;

	GestureGame() {
		initInterface();
		initData();
	}

	/**
	 * 游戏数据初始化
	 */
	public void initData() {

		scanner = new Scanner(System.in);

		gestures = new String[] { "石头", "剪刀", "布" };

		roles = new String[] { "刘备", "关羽", "张飞" };

		roleID = 0;

		playTimes = 0;

		playerWinTimes = 0;

		robotWinTimes = 0;
		
		isContinue = true;

	}

	/**
	 * 游戏界面初始化
	 */
	public void initInterface() {

		System.out.println("******************************");
		System.out.println("*  欢  迎  进  入  人  机  猜  拳  游  戏     *");
		System.out.println("******************************");
		System.out.println("温馨提示:↘ ");
		System.out.println("            猜拳规则[1.剪刀  2.石头  3布]");
	}

	/**
	 * 玩游戏
	 */
	public void play() {

		roleID = this.selectRole();
		
		do {
			if (!this.isStart()) {

				System.out.println("Game over!");
				return;

			} else {

				// 机器人的手势随机生成
				int robotGesture = new Random().nextInt(3);
				
				int playerGesture = this.selectGesture();

				// 推断输赢
				int result = GameRules.judge(robotGesture, playerGesture);
				
				resultOfRound(result, playerGesture, robotGesture);

			}

			// 是否继续下一轮
			isContinue = isAgain();

			playTimes++;

		} while (isContinue);

		resultOfFinal();
	}

	/**
	 * 打印
	 * 
	 * @param result
	 *            0 平局 1 玩家赢 2 电脑赢
	 */
	public void resultOfRound(int result, int host, int robot) {

		System.out.println("玩家出:\t" + gestures[host]);
		System.out.println("电脑出:\t" + gestures[robot]);

		switch (result) {

		case 0:
			System.out.println("结果:\t平局");
			break;

		case 1:
			System.out.println("结果:\t恭喜,你赢了!");
			playerWinTimes++;
			break;

		case 2:
			System.out.println("结果:\t你输了,真笨!^_^");
			robotWinTimes++;
			break;
		}
		
		System.out.println();

	}

	/**
	 * 打印终于结果
	 */
	public void resultOfFinal() {
		System.out.println("------------------------------------------");
		System.out.println(roles[roleID]+"VS电脑");
		System.out.println("对战次数:"+playTimes+"盘");
		
		if(playerWinTimes < robotWinTimes )
			System.out.println("最后结果:真衰!"+roles[roleID]+"真弱!麻烦给智商充点值哦!");
		else if(playerWinTimes > robotWinTimes)
			System.out.println("最后结果:真棒!"+roles[roleID]+"真棒!");
		else
			System.out.println("最后结果:平局!"+roles[roleID]+"还不错!");
		
		System.out.println("------------------------------------------");
	}

	/**
	 * 是否開始下一轮游戏
	 * 
	 * @return true 继续下一轮游戏 false otherwise
	 */
	public boolean isAgain() {
		do {
			System.out.println("是否開始下一轮【y/n】:");
			
			String str = scanner.next();
			
			System.out.println();
			
			if (str.charAt(0) == 'y')
				
				return true;
			else if (str.charAt(0) == 'n') {

				return false;
			} else
				System.out.println("您输入有误,请又一次输入!");

		} while (true);

	}

	/**
	 * 输入手势范围模块 石头、剪刀、布
	 * 
	 * @return 手势类型
	 */
	public int selectGesture() {
		
		char gestureIndex;

		// 输入不是1-3时,错误处理
		do {
			System.out.println("请出拳【1.剪刀  2.石头  3.布】:");

			gestureIndex = scanner.next().charAt(0);

			if (gestureIndex <= '0' || gestureIndex > '3')
				System.out.println("您输入有误,请又一次输入!");
			System.out.println();
			
		} while (gestureIndex <= '0' || gestureIndex > '3');

		
		return gestureIndex - '1';
	}

	/**
	 * 选择角色
	 * 
	 * @return 角色ID号
	 */
	public int selectRole() {
		
		char roleID;
		
		do {
			System.out.println("\n请选择您的角色名称【1.刘备  2.孙权  3.曹操】:");

			roleID = scanner.next().charAt(0);

			if (roleID > '3' || roleID <= '0')
				System.out.println("您输入有误,请又一次输入!");

		} while (roleID > '3' || roleID <= '0');

		System.out.println("选择角色成功!\n");
		
		return roleID - '0';
	}

	/**
	 * 是否開始游戏 
	 * @return true 開始游戏  false 结束
	 */
	public boolean isStart() {
		
		String str;
		do {
			System.out.println("要開始游戏吗?

【y/n】:"); str = scanner.next(); if (str.charAt(0) != 'y' && str.charAt(0) != 'n') System.out.println("您输入有误,请又一次输入!"); System.out.println(); } while (str.charAt(0) != 'y' && str.charAt(0) != 'n'); if(str.charAt(0) == 'y') return true; return false; } } /**游戏规则类*/ class GameRules { /** * 推断输赢 * @param robot 机器手势样式 * @param host 玩家手势样式 * @return 0 平局 1 玩家赢 2 电脑赢 */ public static int judge(int robot,int host){ //平局的情况 if(robot == host){ return 0; } //玩家赢的情况 if(host == 0 && robot == 1) return 2; if(host == 1 && robot == 2) return 2; if(host == 2 && robot == 0) return 2; //否则机器人赢的本轮 return 1; } }




</pre><pre code_snippet_id="427372" snippet_file_name="blog_20140715_1_2617354" name="code" class="java">

   
posted @ 2017-05-24 09:57  jzdwajue  阅读(186)  评论(0编辑  收藏  举报