用JAVA做一个剪刀,石头,布的人机猜拳游戏。
玩家类名是 Person 计算机类名为 Computer 游戏类名 Game
小弟在此谢谢各位大虾了。
不要用数组哦 。。。 用三个类 是因为才学类和方法 增加对类和方法的印象和实际操作 展开
编写这个小游戏 我们需要几个类
1、第一个 Person 类
import java.util.Scanner;
/**
* @copyright 2018 sugarsLab.com All rights reserved.
* @author jingfei.wu
* @date 2018年11月16日
* @version 1.0
* @ClassName Person
* @description 用户类 用来计算用户输入
*/
public class Person {
public static final Person me = new Person();
private int n = 0;
/**
* @copyright 2018 sugarsLab.com All rights reserved.
* @author jingfei.wu
* @date 2018年11月16日
* @version 1.0
* @description 用户输入的 指令
* @return
*/
public int input() {
System.out.println("请输入:石头,剪刀,布\n输入:@退出 退出系统");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
// s 里面存着 用户输入的 指令 切记这里不要使用 s.equals() 而是写 "指令".equals() 这么写 是为了避免空指针
if ("石头".equals(s)) {
n = 1;
} else if ("剪刀".equals(s)) {
n = 2;
} else if ("布".equals(s)) {
n = 3;
} else if ("@退出".equals(s)) {
System.out.print("系统退出了");
System.exit(0);
}
return n;
}
}
2、Computer 类
/**
* @copyright 2018 sugarsLab.com All rights reserved.
* @author jingfei.wu
* @date 2018年11月16日
* @version 1.0
* @ClassName Computer
* @description 游戏中电脑类 用来产生随机数
*/
public class Computer {
public static final Computer me = new Computer();
/**
* @copyright 2018 sugarsLab.com All rights reserved.
* @author jingfei.wu
* @date 2018年11月16日
* @version 1.0
* @description TODO
* @return {int} 返回值为int 类型
*/
public int random() {return (int) (Math.random() * 3 + 1);}
}
3、Game类
/**
* @author jingfei.wu
* @date 2018年11月16日
* @version 1.0
* @ClassName Game
* @description 游戏类 用来计算游戏结果
*/
public class Game {
/**
* @author jingfei.wu
* @date 2018年11月16日
* @version 1.0
* @description 返回 人机交互结果
* @param n
* {int} 用户输入 的标识 石头 为 1 剪刀 为 2 布 为 3
* @param m
* {int} 电脑产生的随机数 石头 为 1 剪刀 为 2 布 为 3
*/
public void result(int n, Integer m) {
String res = "";
if (m.intValue() == 1)
res = "石头";
else if (m.intValue() == 2)
res = "剪刀";
else
res = "布";
if (n == m) {
System.out.println("平了 computer出" + res);
} else {
if (m == 1) {
if (n == 2)
System.out.println("你输了 computer出 " + res);
else if (n == 3)
System.out.println("你赢了 computer出 " + res);
} else if (m == 2) {
if (n == 1)
System.out.println("你赢了 computer出 " + res);
else if (n == 3)
System.out.println("你输了 computer出 " + res);
} else if (m == 3) {
if (n == 1)
System.out.println("你输了 computer出 " + res);
else if (n == 2)
System.out.println("你赢了 computer出 " + res);
}
}
}
public static void main(String[] args) {
while (true) {
Game gamer = new Game();
gamer.result(Person.me.input(), Computer.me.random());
}
}
}
如下是程序运行截图
把楼下的int h = (int)(Math.random()*10); 改为*3
import java.util.Scanner;
class Person {
int n = 0;
public int input() {
System.out.println("请输入:石头,剪刀,布");
Scanner sc = new Scanner(System.in);
String s = sc.next();
if(s.equals("石头")){
n = 1;
}else if(s.equals("剪刀")){
n = 2;
}else if(s.equals("布")){
n = 3;
}else if(s.equals("exit")){
System.out.print("系统退出了");
System.exit(0);
}
return n;
}
}
class Computer {
public int random() {
int h = (int)(Math.random()*3+1);
return h;
}
}
public class Game {
public void result(int n,int m){
if(n == m){
System.out.println("平了");
}else{
if(m==1){
if(n==2){
System.out.println("你输了");
}else if(n ==3){
System.out.println("你赢了");
}
}else if(m == 2) {
if(n == 1){
System.out.println("你赢了");
}else if(n ==3){
System.out.println("你输了");
}
}else if( m ==3 ){
if(n==1){
System.out.println("你输了");
}else if(n == 2){
System.out.println("你赢了");
}
}
}
}
public static void main(String[] args) {
while(true){
Person p = new Person();
Computer c = new Computer();
Game g = new Game();
g.result(p.input(), c.random());
}
}
}
不过用得着吗?
这么个小功能 定义3个类~
疯了~~~~~~~~~~~~
不超过30行代码能解决的事情~
呵呵 BLUCASTLE 的应该是可以的
还有,楼主,他给你的答案是你想要的,你如果想学好
那就把他的代码试着自己简化到最简单的,执行效率最高的~
我非为分而来,哈哈,为了伟大的共享世界而来!~~~~~~~~~~~~
另外,他的随机是用API实现的,你可以自己实现一个随机的方法嘛~
哈哈~~~~~~~
使用时间作为随机源~~~~~~~~~~
还有这是两个人的人机对战,如果3个人,4个人呢~~~~~
哈哈~~~~~~~~
我太疯狂了~