看着自己这代码,感觉能力貌似提升了一个等级,代码虽然简单,但是编程思想、代码规范、可读性等等(不一一说明了)!
<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">
JAVA程序可读性(本人总结点!),布布扣,bubuko.com
原文地址:http://blog.csdn.net/licong0716/article/details/37832939