看着自己这代码,感觉能力貌似提升了一个等级,代码虽然简单,但是编程思想、代码规范、可读性等等(不一一说明了)!
<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
JAVA程序可读性(本人总结点!)