猜拳游戏

断了今生、忘了曾经 提交于 2020-01-13 13:33:33

今天突然想写个猜拳游戏,两个人的猜拳游戏,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;
  } 
 }
}

运行结果:
在这里插入图片描述
在这里插入图片描述
如果想要了解更多请关注微信号:编程新手,一起学习交流

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!