zoukankan      html  css  js  c++  java
  • 人机猜拳(这是最近的一个总结)

    人机猜拳是我自己原创的一段代码,我刚学完do-while,知识有限,但自己感觉写的这段代码是我的一个小巅峰,发出来让大家看看,新手能学到东西的话是极好的,然后更多的是想让一些老鸟给点建议。这个写代码很枯燥,最近一直在写,自己是深有体会,后来我就在练习的时候在自己的代码里写一些有趣的内容,下面你们能看到,这算是个自娱自乐的小技巧吧。自己也是刚学习没多久,觉得学习不能一个人学,要大家一起学,俗话说:三个臭皮匠顶个诸葛亮,所以今天不仅是来发表一下自己的代码,更重要的是在这里露个脸,和大家认识一下,希望大家能照顾一下我这个菜鸟。废话不多说了,下面是代码:

      1 import java.util.Scanner;
      2 public class CaiQuan {
      3     public static void main(String[] args) {
      4         Scanner input=new Scanner(System.in);
      5         System.out.println("--------欢迎进入猜拳游戏---------
    
    ");
      6         System.out.println("  出拳规则:1.剪刀  2.石头  3.布
    ");
      7         System.out.println("******************************
    ");
      8         System.out.println("*******  猜拳          开始      ********
    ");
      9         System.out.println("******************************
    
    ");
     10         System.out.println("游戏开始前给自己起一个威武霸气的昵称吧
    ");
     11         System.out.println("请输入你的昵称:");
     12         String username=input.next();//让用户输入昵称
     13         String name="1";//给name一个初始值,name是computer的名字
     14         do{
     15             System.out.println("请选择对战角色(1.刘备  2.曹操  3.盖伦):");
     16             boolean zhenjia=input.hasNextInt();//判断输入是否是数值
     17             while(!zhenjia){//如果不是数字,进入
     18                 String zhen=input.next();
     19                 System.out.println("您输入的是:"+zhen+"  臣妾做不到啊!");
     20                 System.out.println("请重新选择角色(1.刘备  2.曹操  3.盖伦):");
     21                 zhenjia=input.hasNextInt();//判断输入是否是数值,如果不是 ,继续循环
     22             }
     23             int num=input.nextInt();//取出的数字
     24             while(num>3||num<0){//判断输入的值是否是1-3,如果不是进入循环
     25                 System.out.println("臣妾做不到啊!");
     26                 System.out.println("请重新选择角色(1.刘备  2.曹操  3.盖伦):");
     27                 num=input.nextInt();//输入数值,如果是1-3跳出循环,如果不是继续循环
     28             }
     29             switch(num){
     30             case 1:
     31                 name="刘备";
     32                 break;
     33             case 2:
     34                 name="曹操";
     35                 break;
     36             case 3:
     37                 name="盖伦";
     38                 break;
     39             }
     40         }while(name.equals("1"));//当name不是1时 ,跳出循环
     41         System.out.println("你选择了  "+name+"对战");
     42         String go;
     43         do{
     44             System.out.println(username+"	VS	"+name);
     45             //出拳代码
     46             int i=1;//i是猜拳的轮数
     47             int userScore=0;//用户得分
     48             int compScore=0;//computer得分
     49             String come;//当come赋值y,继续循环,在下面写着
     50             do{
     51                 System.out.println("这是第"+i+"轮");
     52                 System.out.println("请出拳:1.剪刀 2.石头  3.布");
     53                 boolean zhenjia=input.hasNextInt();//判断输入是否是数值
     54                 while(!zhenjia){//如果不是数字,进入
     55                     String zhen=input.next();//把上面的值放入此处,一边下面重新输入
     56                     System.out.println("您输入的是:"+zhen+"  臣妾做不到啊!");
     57                     System.out.println("请重新出拳:1.剪刀 2.石头  3.布");
     58                     zhenjia=input.hasNextInt();//判断输入是否是数值,如果不是 ,继续循环
     59                 }
     60                 int num=input.nextInt();//取出上面的数值
     61                 while(num>3||num<0){//判断输入的值是否是1-3,如果不是进入循环
     62                     System.out.println("臣妾做不到啊!");
     63                     System.out.println("请重新出拳:1.剪刀 2.石头  3.布");
     64                     num=input.nextInt();//输入数值,如果是1-3跳出循环,如果不是继续循环
     65                 }
     66                 String user="";//储存用户的出拳
     67                 switch(num){
     68                 case 1:
     69                     System.out.println("你出拳:剪刀");
     70                     user="剪刀";
     71                     break;
     72                 case 2:
     73                     System.out.println("你出拳:石头");
     74                     user="石头";
     75                     break;
     76                 case 3:
     77                     System.out.println("你出拳:布");
     78                     user="布";
     79                     break;
     80                 }
     81                 String comp="";//储存computer的猜拳
     82                 int numc=(((int)(Math.random()*10))%3+1);//随机产生1-3
     83                 switch(numc){
     84                 case 1:
     85                     System.out.println(name+"出拳:剪刀");
     86                     comp="剪刀";
     87                     break;
     88                 case 2:
     89                     System.out.println(name+"出拳:石头");
     90                     comp="石头";
     91                     break;
     92                 case 3:
     93                     System.out.println(name+"出拳:布");
     94                     comp="布";
     95                     break;
     96                 }
     97                 if(user.equals(comp)){//判断双方出拳是否相同
     98                     System.out.println("双方出拳:"+user+"  本局是平局");
     99                 }else{
    100                     if(user.equals("剪刀")){//当用户出剪刀时
    101                         if(comp.equals("石头")){//当computer出石头时
    102                             System.out.println(name+"赢了!");
    103                             compScore++;
    104                         }else{//当computer出布时
    105                             System.out.println("你赢了!");
    106                             userScore++;
    107                         }
    108                     }else if(user.equals("石头")){
    109                         if(comp.equals("布")){
    110                             System.out.println(name+"赢了!");
    111                             compScore++;
    112                         }else{
    113                             System.out.println("你赢了!");
    114                             userScore++;
    115                         }
    116                     }else{
    117                         if(comp.equals("剪刀")){
    118                             System.out.println(name+"赢了!");
    119                             compScore++;
    120                         }else{
    121                             System.out.println("你赢了!");
    122                             userScore++;
    123                         }
    124                     }
    125                 }
    126                 i++;//猜拳轮数增加1
    127                 System.out.println("继续第"+i+"轮  y
    结束  n");
    128                 come=input.next();//当come赋值y,继续循环
    129             }while("y".equals(come));//判断come的值是否是y,如果是 ,继续循环,否则跳出循环
    130             System.out.println("游戏进行了"+(i-1)+"轮");
    131             System.out.println("姓名	得分");
    132             System.out.println(username+"	"+userScore);
    133             System.out.println(name+"	"+compScore);
    1        if(userScore==compScore){//当得分一样的情况,这是修改后添加的代码
    2                 System.out.println("你和"+name+"打了个平手");
    3                 System.out.println("这怎么能忍,打爆他才有快感");
    4                 System.out.println(" 继续y/认怂了n");
    5             }else if(userScore>compScore){
    135                 System.out.println("你把"+name+"打的落花流水");
    136                 System.out.println("	你tm帅呆了");
    137                 System.out.println("再打"+name+"一局就把他打成猪头了 
      继续y/认怂了n");
    138             }else{
    139                 System.out.println("你被"+name+"打成猪头了");
    140                 System.out.println("复仇y/认怂n");
    141             }
    142             go=input.next();
    143         }while("y".equals(go));
    144         System.out.println("GAME OVER!");
    145     }//mian
    146 
    147 }

     下面运行代码:

    然后输入一个昵称:

    下面让用户选择一个角色进行对战,只有1.2.3.三个选项,我先输入一个4,看看效果:

    你看,当我输入的不是1.2.3.的时候,它提示你“臣妾做不到啊”,然后让你重新选择:

    我输入1:

    我选择了刘备,然后出拳:

     然后输入n结束游戏:

    这里出现了点小问题,我没有考虑到两人分数相同的情况,

    这是我复仇的结果,然后在输入n,结束游戏:

    上面修改了当得分一样的情况

    代码还有很多问题,之后我会继续修改

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    转载请注明出处!

    面朝大海
  • 相关阅读:
    进程与线程
    linux网关服务器
    linux硬盘分区和fdisk命令
    MyISAM与InnoDB两者之间区别与选择(转)
    系统吞吐量与QPS/TPS
    linux最大打开文件句柄数
    内存性能测试 Memtester+mbw
    硬盘性能测试
    使用JNA访问WindowsAPI操作Windows窗口元素
    [博客页面装饰]----[人体时钟]插件
  • 原文地址:https://www.cnblogs.com/ln-ing/p/6159960.html
Copyright © 2011-2022 走看看