题目是这样的:做一个剪刀、石头、布的游戏。
   对象:人和计算机;
   规则:1代表剪刀,2代表石头,3代表布。当在计算机输入1或2或3时,计算机则随机出剪刀、石头或布;然后输出的结果有3种情况:分别为。(1)恭喜你赢了;(2)很遗憾,你输了;(3)没关系,平局。
   请写出该游戏的程序代码?
  (这游戏很给力哦,既可以学习,又可以娱乐,希望大家多多参与。看到请回帖) 

解决方案 »

  1.   

    这种是典型的程序逻辑题:
    先写个java类:GuessGame
    定义胜局数wins、和局数level、负局数loss,并初始化为0
    定义游戏局数:intTimes 、无效局数:inValid(输入错误的局数)
    定义出拳类型:intGuess(无需初始化,电脑随机数,1代表剪刀,2代表石头,3代表布)
    再定义一个输入字符串:strNum ,主要作用是将输入结果与电脑出拳的1、2、3进行比较,在比较中定义。public class GuessGame{
       //在控制台运行主函数
       public static void main(String[] args){
            int intTimes=-1,inValid=0,intNum=1,intGuess;
            float wins=0.0,level=0.0,loss=0.0  
            String strNum;
            System.out.print("\n   【 猜 拳 游 戏 】\n\n*************************\n\n游戏说明:\n\n");
            System.out.print("你出拳:a:剪刀 b:石头 c:布\n\n电脑拳:1:剪刀 2:石头 3:布\n\n游戏开始:\"n\"\n\n*************************\n\n");
          do{
             intGuess = (int)(3*Math.random()+1); //定义1~3的随机数
             boolean con =true; //定义标志
              System.out.println("电脑:请出拳!");
             System.out.print("你:");
             Scanner sc =new Scanner(System.in); 
             strNum =sc.next();
             if("a".equals(strNum))
     {
       intNum=1;
     }else if ("b".equals(strNum)){
               intNum=2;
             }else if("c".equals(strNum)){
               intNum=3;
             }else if("n".equals(strNum)){ 
               //是否继续的否 n
               con=false; 
             }else{
               //其他输入错误的情况
                 con=false;
               System.out.println("注:你输入有误,请重新出拳!\n");
               inValid++; //
              }
              if((intGuess-intNum)==0 && con){
        System.out.println("电脑:"+intGuess);
        System.out.println("电脑:没关系,平局!\n");
        level++; 
      }
              else if(con && ((Math.abs(intGuess-intNum))==1 && intNum>intGuess))
              {
         System.out.println("电脑:"+intGuess);
         System.out.println("电脑:恭喜你赢了!\n");
         wins++;
      }
               else if(con && ((Math.abs(intGuess-intNum))==2 && intNum<intGuess) )
       {
    System.out.println("电脑:"+intGuess);
    System.out.println("电脑:恭喜你赢了!\n");
    wins++;
        }
                else if(con && (((Math.abs(intGuess-intNum))==1)&& intNum<intGuess || (Math.abs(intGuess-intNum))==2 && intNum>intGuess))
         {
    System.out.println("电脑:"+intGuess);
    System.out.println("电脑:很遗憾,你输了!\n");
    loss++;
          }
                intTimes++;
           }while(!"n".equals(strNum));
             System.out.println("电脑:结束游戏,欢迎再来!");
     float rate1=(float)(wins/(intTimes-inValid));
     float rate2=(float)(loss/(intTimes-inValid));
     float rate3=(float)(level/(intTimes-inValid));
     System.out.println("\n你的战绩统计如下:");
     System.out.println("总局数:"+intTimes);
     System.out.println("无效局数:"+inValid);
     System.out.printf("胜局数:%.0f ,胜率:%.2f\n",wins,rate1);
     System.out.printf("负局数:%.0f ,负率:%.2f\n",loss,rate2);
     System.out.printf("和局数:%.0f ,和率:%.2f\n",level,rate3);
       }} 
    最后你可以将其中的一些逻辑抽取并集合在一个方法中,这样能让代码更清晰更易于理解。
    希望以上程序能对你有所帮助。
      

  2.   


    import java.util.Scanner;public class GameTest {
    public static Scanner input=new Scanner(System.in);
    public static void main(String[] args) {
    //int randomNum=(int) (Math.ceil((Math.random()*3)));
    //1代表剪刀,2代表石头,3代表布
    boolean flag=true;
    while(flag){
    System.out.println("1代表剪刀,2代表石头,3代表布");
    People p=new People();
    Computer c=new Computer();
    System.out.println(Compare(p,c));
    System.out.println("是否继续(Y/N)");
    String s=input.next();
    if(!s.equalsIgnoreCase("Y")){
    System.out.println("欢迎下次再玩哦");
    flag=false;
    }
    }
    }
    public static String Compare(People p,Computer c){

        System.out.print("请输入(1-->3之间的任意整数)");
       // int peopleInput=input.nextInt();
        p.setNumP(input.nextInt());
        if(c.getNumC()==1){
         if(p.getNumP()==1){
         System.out.println("电脑出:"+c.getNumC());
         return "没关系,平局";}
         else if(p.getNumP()==2){
         System.out.println("电脑出:"+c.getNumC());
         return "恭喜你赢了";
         }else{
         System.out.println("电脑出:"+c.getNumC());
         return "很遗憾,你输了";
         }
        }
        if(c.getNumC()==2){
         if(p.getNumP()==1){
         System.out.println("电脑出:"+c.getNumC());
         return "很遗憾,你输了";}
         else if(p.getNumP()==2){
         System.out.println("电脑出:"+c.getNumC());
         return "没关系,平局";
         }else{
         System.out.println("电脑出:"+c.getNumC());
         return "恭喜你赢了";
         }
        }
        if(c.getNumC()==3){
         if(p.getNumP()==1){
         System.out.println("电脑出:"+c.getNumC());
         return "恭喜你赢了";}
         else if(p.getNumP()==2){
         System.out.println("电脑出:"+c.getNumC());
         return "很遗憾,你输了";
         }else{
         System.out.println("电脑出:"+c.getNumC());
         return "没关系,平局";
         }
        }
    return "ss";

    }
    class Computer{
    int numC=(int) (Math.ceil((Math.random()*3)));
    public int getNumC() {
    return numC;
    }
    public void setNumC(int numC) {
    this.numC = numC;
    }

    }
    class People{
    int numP; public int getNumP() {
    return numP;
    }
    public void setNumP(int numP) {
    this.numP = numP;
    }
    }
    有点麻烦
      

  3.   

    没必要这么复杂 switch(人 - 计算机) {
    case -2:
    case 1:
       人胜利 ;break;case 0:
       平局;break;default:
        人失败}
        
      

  4.   


    import java.util.Random;
    import java.util.Scanner;public class ShiTou {
    public static void main(String[] args){
    System.out.println("请输入1~4的数字,1为剪刀,2为石头,3为布!4为退出!");
    Scanner sc=new Scanner(System.in);
    while(true){
    int you=sc.nextInt();
    int computer=new Random().nextInt(3)+1;
    if(you==computer){
    System.out.println("没关系,平局!");
    }else if(you==1){
    System.out.println(computer==2?"很遗憾,您输了!":"恭喜,您赢了!");
    }else if(you==2){
    System.out.println(computer==3?"很遗憾,您输了!":"恭喜,您赢了!");
    }else if(you==3){
    System.out.println(computer==1?"很遗憾,您输了!":"恭喜,您赢了!");
    }else{
    break;
    }
    }



    }}