A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张周飞 于 2014-7-4 10:00 编辑

/**
通过控制台命令方式实现一个猜拳的游戏,用户通过输入与(1/剪刀.2/石头.3/布),
与电脑PK,最后通过积分的多少判定胜负。
*/
/*
思路-----1:在控制台中提示玩法--2:是否开始游戏(接收1/是,0/否)---3:接收游戏的局数
         ---4:循环接收用户的出拳(1/剪刀.2/石头.3/布)----5:系统也要随机出拳
                 -----6:每一次猜完拳进行记录一次胜的次数。----7:公布结果.
*/

import java.util.Scanner;    //控制台包/类
//import java.util.Arrays; 排序包/类,应该用Arrays.sort(num);
import java.util.Random;    //随机数包/类
public class HomeWork{
     public static void main(String[] args ){
                     Game g=new Game();
                         g.begin();
         }
}
/**猜拳游戏类**/
class Game{
      /*开始游戏的方法*/
          public void begin(){
                   System.out.println("****************************");
                   System.out.println("猜拳游戏的开始");
                   System.out.println("***游戏的规则:1/剪刀.2/石头.3/布*****");
                   Scanner input=new Scanner(System.in);     //实例 控制台包/类
                   System.out.println("***输入1表示游戏开始!/输入0表示退出游戏不玩了");
           int result=input.nextInt();     //控制台输入
           if(result==1){
                                System.out.println("请输入猜拳的次数");
                                int num=input.nextInt();    //输入猜拳到次数
                                 play(num);    //也可以写成这样 this.play();表示 本类中 在这个方法中  调用带一个参数的方法。
                        }else{
                        
                            System.out.println("不玩了,GOODBAY BYE BYE!!!!");
                        }
            }
           public void play(int num){    //带一个参数的方法或者叫函数。
             /****以下代码是play(int num) 的----核心方法****/
                         int userscore=0;    //用户胜局的记录
                         int pcscore=0;    //电脑胜局的记录
                         //电脑随机出来的数(拳)
                         Random R=new Random();    //实例 随机数包/类 数
                        while(num>0){
                                 int X=R.nextInt(3)+1;    //随机生成数
                                System.out.println("请输入出的拳:1 2 3");
                                Scanner input=new Scanner(System.in);
                                int  S=input.nextInt();    //用户输入的数/拳 1 2 3
                                 if(S==1){ //第一种情况
                                          switch(X){
                                                       case 1:
                                                       System.out.println("平局,你出的是剪刀!电脑出的也是剪刀");
                                                        break;
                                                        case 2:
                                                       System.out.println("电脑胜了!,你出的是剪刀!电脑出的也是石头");
                                                        pcscore++;
                                                        break;
                                                        case 3:
                                                       System.out.println("你胜了!,你出的是剪刀!电脑出的也是布");
                                                       userscore++;
                                                        break;
                                          }
                                  }
                                  if(S==2){//第二种情况
                                          switch(X){
                                                       case 1:
                                                       System.out.println("你胜了!,你出的是石头!电脑出的也是剪刀");
                                                        userscore++;
                                                        break;
                                                        case 2:
                                                        System.out.println("平局,你出的是石头!电脑出的也是石头");
                                                        break;
                                                        case 3:
                                                       System.out.println("电脑胜了!,你出的是石头!电脑出的也是布");
                                                        pcscore++;
                                                        break;
                                          }
                                  }
                                  if(S==3){//第三种情况
                                          switch(X){
                                                        case 1:
                                                        System.out.println("电脑胜了!,你出的是布!电脑出的也是剪刀");
                                                        pcscore++;
                                                        break;
                                                        case 2:
                                                       System.out.println("你胜了!,你出的是布!电脑出的也是石头");
                                                       userscore++;
                                                        break;
                                                        case 3:
                                                        System.out.println("平局,你出的是布!电脑出的也是布");
                                                        break;
                                          }
                                  }
                                num--;    //每循环一次减去1,
                           
                         } //whlie()循环结束
                        System.out.println("***********************");
                         System.out.println("你胜:"+ userscore);
                         System.out.println("电脑胜:"+ pcscore);
                         if(userscore==pcscore){
                                 System.out.println("平手....");
                         }else if(userscore>pcscore){
                                  System.out.println("你赢了!");
                         }else{
                                    System.out.println("你输了!");
                         }

                } //play()结束


} //Game类结束





:)大家不妨可以试试做做       javac     java  一下.........................................




点评

运行了一下,无论输入猜几次,实际上只猜了一次就结束游戏了。原因是你没把要求用户出拳的代码放入while循环中。还有就是2楼说的代码优化  发表于 2014-7-2 18:23
代码可优化: 剪刀 1 石头 2 布 3 当两者出的相等 平局 若 人出的数 perNum - PCNum == 1 || perNum - PCNum == -2 人赢了 else 电脑赢。。。  发表于 2014-7-2 18:04

评分

参与人数 1黑马币 +3 收起 理由
菜小徐 + 3

查看全部评分

5 个回复

倒序浏览
代码可优化:
剪刀 1 石头 2 布 3
当两者出的相等 平局
若 人出的数 perNum - PCNum == 1 ||  perNum - PCNum == -2 人赢了
else 电脑赢。。。
回复 使用道具 举报
luheqi 发表于 2014-7-2 18:02
代码可优化:
剪刀 1 石头 2 布 3
当两者出的相等 平局

已修改   
回复 使用道具 举报
本人  已修改...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马