首页 > 代码库 > 光棍节来临的前奏
光棍节来临的前奏
下礼拜就要学习有参数的方法了,颇感压力山大,买了两本书一本是李兴华的JAVA开发实战经典跟HeadFirst,前者看起来需要基础支撑,后者看起来全是英文,对我这种文盲来说,看起来实则费劲,但弃之有可惜,想学习却又找不到方法,人在生活中无时无刻都在面临着选择,当你选择这件事的时候就注定你放弃了一些事,两者不可兼得。
package 人机;
import java.util.Scanner;
/**
* 用户类
* @param <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 人机;
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 人机;
import java.util.Scanner;
/**
* 游戏类
*
* @param <computer>
*/
public class Game<computer> {
Person person; // 甲方
Computer computer; // 乙方
int count;// 对战次数
/**
* 初始化
*/
public void initial() {
person = new Person();
computer = new Computer();
count = 0;
}
/**
* 开始游戏
*/
public void startGame() {
System.out.println("\t -------欢迎进入游戏世界-------\n");
System.out.println("\n\t\t********************");
System.out.println("\t\t*******猜拳,开始 ******");
System.out.println("\t\t********************");
System.out.println("\n\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 = "曹操";
}
/* 输入用户姓名 */
System.out.print("请输入你的姓名:");
person.name = input.next();
System.out.println(person.name + "VS" + computer.name + "对战\n");
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.println("\n是否开始下一轮(y/n):");
start = input.next();
}
/* 显示结果 */
showResult();
// 循环游戏,退出系统
System.out.print("\n要开始下一局吗?(y/n):");
exit = input.next();
System.out.println();
// 结束
} 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);
// 显示最终的得分
System.out.println("\n姓名\t得分");
System.out.println(person.name + "\t" + person.score);
System.out.println(computer.name + "\t" + computer.score + "\n");
// 结束
/* 显示对战结果 */
int result = calcResult();
if (result == 1) {
System.out.println("结果:打成平手,下次再和你一分高下!");
} else if (result == 2) {
System.out.println("结果:恭喜恭喜!"); // 用户获胜
} else {
System.out.println("结果:呵呵,笨笨,下次加油啊!"); // 计算机获胜
}
System.out.println("--------------------------------");
}
/**
* 计算比赛结果
* @return1:战平; 2:用户赢; 3:电脑赢
*/
public int calcResult() {
if (person.score == computer.score) {
return 1;// 战平
} else if (person.score > computer.score) {
return 2;// 用户赢
} else {
return 3;// 电脑赢
}
}
}
package 人机;
public class TestStartGuess {
public static void main(String[] args) {
Game game=new Game();
game.initial();
game.startGame();
}
}
代码还存在一部分问题。
光棍节来临的前奏