今天突然想写个猜拳游戏,两个人的猜拳游戏,java版的,比较简单,代码也不多,游戏分为两个部分,一是:人机猜拳,二是人人猜拳,所以我们这里构建两个类,人机和人人
人人猜拳类中,要有两个变量,一个是第一人出的拳,另一个是另一个人出的拳,之后进行比较,然后得出谁输谁赢,或是平局,这是基本的思路,当然,人机也是这样的思路,判断输赢是核心的方法,
人机猜拳类中,确定两个变量,一个是人出的拳,另一个是电脑出的拳,电脑出的拳可以用随机数表示,最后确定判断输赢的方法,得出结果,
其次确定菜单模式,所以建一个游戏菜单,两个选项,人人猜拳模式,人机猜拳模式,最后主类中实例化对象,调用方法,主类代码要尽量简洁。当然,为了让程序更好的运行,我们可以增加循环,例如什么时候推出游戏,为了游戏的健壮性,当使用者输入错误了,怎么提示使用者,为了让程序更好,我们可以加点颜色上去等等。看一下最后的运行结果:
代码如下:
人机猜拳类:
import java.util.Scanner;
//人机猜拳模式
class ComputerGame {
String reset;
int person1;
int computer1;
boolean flag=true;
//判断方法
void judge() {
while(flag) {
menue();
//电脑出的拳
computer1=(int)(Math.random()*3+1);
Scanner input=new Scanner(System.in);
System.out.println("请输入您的选择: ");
//人出的拳
person1=input.nextInt();
//平局情况
if(person1==computer1) {
System.out.println("您出的是: "+type(person1));
System.out.println("电脑出的是: "+type(computer1));
System.out.println("猜拳结果: 平局");
}
//人赢的情况
if((person1==1 && computer1==2) ||(person1==2 && computer1==3) ||(person1==3 && computer1==1)) {
System.out.println("您出的是: "+type(person1));
System.out.println("电脑出的是: "+type(computer1));
System.out.println("您赢了");
}
//电脑赢的情况
if((person1==1 && computer1==3) ||(person1==2 && computer1==1) ||(person1==3 && computer1==2)){
System.out.println("您出的是: "+type(person1));
System.out.println("电脑出的是: "+type(computer1));
System.out.println("您输了");
}
System.out.println("是否要继续(Y/y or N/n)");
System.out.print("请输入您的选择: ");
reset=input.next();
if((reset.equals("N")) || (reset.equals("n"))){
flag=false;
input.close();
System.out.println("************猜拳游戏结束了************");
}
else if((reset.equals("Y")) || (reset.equals("y"))) {
flag=true;
}
else{
System.out.println("输入有误!请重新输入");
reset=input.next();
if((reset.equals("N")) || (reset.equals("n"))){
flag=false;
System.out.println("************猜拳游戏结束了************");
}
if((reset.equals("Y")) || (reset.equals("y"))) {
flag=true;
}
}
}
}
//猜拳的类型
String type(int m) {
switch(m) {
case 1:return("石头");
case 2: return("剪刀") ;
case 3: return("布") ;
}
return null;
}
//菜单
void menue(){
System.out.println();
System.out.println("***********人机对战******************");
System.out.println("\t1.石头");
System.out.println("\t2.剪刀");
System.out.println("\t3.布");
System.out.println("************************************");
}
}
人人对战模式:
import java.util.Scanner;
//人人猜拳模式
class PeopleGame {
int persona;
int personb;
String reset;
boolean flag=true;
//判断方法
void judge() {
while(flag) {
menue();
//第二个人出的拳
personb=(int)(Math.random()*3+1);
Scanner input=new Scanner(System.in);
System.out.println("请输入您的选择: ");
//第一个人出的拳
persona=input.nextInt();
//平局情况
if(persona==personb) {
System.out.println("您出的是: "+type(persona));
System.out.println("电脑出的是: "+type(personb));
System.out.println("猜拳结果: 平局");
}
//第一个人赢的情况
if((persona==1 && personb==2) ||(persona==2 && personb==3) ||(persona==3 && personb==1)) {
System.out.println("您出的是: "+type(persona));
System.out.println("另一个人出的是: "+type(personb));
System.out.println("您赢了");
}
//第二个人赢的情况
if((persona==1 && personb==3) ||(persona==2 && personb==1) ||(persona==3 && personb==2)){
System.out.println("您出的是: "+type(persona));
System.out.println("另一个人出的是: "+type(personb));
System.out.println("您输了");
}
System.out.println("是否要继续(Y/y or N/n)");
System.out.print("请输入您的选择: ");
reset=input.next();
if((reset.equals("N")) || (reset.equals("n"))){
flag=false;
input.close();
System.out.println("************猜拳游戏结束了************");
}
else if((reset.equals("Y")) || (reset.equals("y"))) {
flag=true;
}
else {
System.out.println("输入有误!请重新输入");
reset=input.next();
if((reset.equals("N")) || (reset.equals("n"))){
flag=false;
System.out.println("************猜拳游戏结束了************");
}
if((reset.equals("Y")) || (reset.equals("y"))) {
flag=true;
}
}
}
}
//猜拳的类型
String type(int m) {
switch(m) {
case 1:return("石头");
case 2: return("剪刀");
case 3: return("布") ;
}
return null;
}
//菜单
void menue(){
System.out.println();
System.out.println("***********人人对战******************");
System.out.println("\t1.石头");
System.out.println("\t2.剪刀");
System.out.println("\t3.布");
System.out.println("************************************");
}
}
游戏菜单模式:
import java.util.Scanner;
//游戏菜单模式
class MainMenue {
int choice;
int mennue(){
System.out.println("****************游戏类型****************");
System.out.println("\t1.人机猜拳");
System.out.println("\t2.人人猜拳");
System.out.println("***************************************");
System.out.println("请输入你的选择: ");
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
choice=input.nextInt();
if((choice==1) || (choice==2)) {
}
else {
System.out.println("您输入有误! 请重新输入: ");
choice=input.nextInt();
}
return choice;
}
}
主类:
//主类
public class E {
public static void main(String[] args) {
// TODO 自动生成的方法存根
MainMenue mainmenue=new MainMenue();
int choice =mainmenue.mennue();
switch(choice) {
case 1:ComputerGame game=new ComputerGame();game.judge();break;
case 2:PeopleGame peoplegame=new PeopleGame();peoplegame.judge();break;
}
}
}
运行结果:
如果想要了解更多请关注微信号:编程新手,一起学习交流
来源:CSDN
作者:每天编程一小时
链接:https://blog.csdn.net/qq_44612121/article/details/103951339