用JAVA做一个剪刀,石头,布的人机猜拳游戏。

2024-11-30 15:50:19
推荐回答(5个)
回答1:

编写这个小游戏 我们需要几个类 

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());

}

}

}

如下是程序运行截图

回答2:

同意一楼的,为什么要高很多类呢?不就是个随机取数的问题么?
把楼下的int h = (int)(Math.random()*10); 改为*3

回答3:

闲着没事,改了下,类分好了,随机数产生,修改了。望lz多思考。

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());

}
}
}

回答4:

太简单~
不过用得着吗?
这么个小功能 定义3个类~
疯了~~~~~~~~~~~~
不超过30行代码能解决的事情~

呵呵 BLUCASTLE 的应该是可以的

还有,楼主,他给你的答案是你想要的,你如果想学好
那就把他的代码试着自己简化到最简单的,执行效率最高的~
我非为分而来,哈哈,为了伟大的共享世界而来!~~~~~~~~~~~~

另外,他的随机是用API实现的,你可以自己实现一个随机的方法嘛~
哈哈~~~~~~~
使用时间作为随机源~~~~~~~~~~

还有这是两个人的人机对战,如果3个人,4个人呢~~~~~
哈哈~~~~~~~~

我太疯狂了~

回答5:

不用数组可以用enum啊,嘿嘿,不过搞这么多类我还搞不懂,初学者,体会不什么,等以后有体会了再来给你做