当前位置: 首页 > 编程日记 > 正文

人机猜拳(这是最近的一个总结)

人机猜拳是我自己原创的一段代码,我刚学完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("--------欢迎进入猜拳游戏---------\n\n");
  6         System.out.println("  出拳规则:1.剪刀  2.石头  3.布\n");
  7         System.out.println("******************************\n");
  8         System.out.println("*******  猜拳          开始      ********\n");
  9         System.out.println("******************************\n\n");
 10         System.out.println("游戏开始前给自己起一个威武霸气的昵称吧\n");
 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+"\tVS\t"+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结束  n");
128                 come=input.next();//当come赋值y,继续循环
129             }while("y".equals(come));//判断come的值是否是y,如果是 ,继续循环,否则跳出循环
130             System.out.println("游戏进行了"+(i-1)+"轮");
131             System.out.println("姓名\t得分");
132             System.out.println(username+"\t"+userScore);
133             System.out.println(name+"\t"+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("\t你tm帅呆了");
137                 System.out.println("再打"+name+"一局就把他打成猪头了 \n  继续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,结束游戏:

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

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

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

转载请注明出处!

转载于:https://www.cnblogs.com/ln-ing/p/6159960.html

相关文章:

利用python3 调用zabbix接口完成批量加聚合图形(screens)

在上一篇博客中&#xff0c;我们完成的利用python3 调用zabbix接口批量增加主机&#xff0c;增加主机的item,增加主机的图形&#xff01; 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢&#xff1f;官方的解释如下&#xff1a; {"jsonrpc"…

轮播切换_javascript基础(一)——轮播图

javascript基础(一)——轮播图1、轮播图的实现原理轮播图的js实现原理其实十分的简单&#xff0c;首先将图片放入一个ul标签中&#xff0c;ul标签的大小要足够将所有图片放入其中。然后再将ul标签放进div中&#xff0c;这个div的大小正好可以显示一整张图片&#xff0c;将其他图…

以太坊挖矿源码:clique算法

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 clique 以太坊的官方共识算法是ethash算法&#xff0c;这在前文已经有了详细的分析&#xff1a; 它是基于POW的共识机制的&#xff0c;矿工需要通…

JS中简单原型的使用

转载于:https://www.cnblogs.com/hwgok/p/6163335.html

vuex+vue-router拦截

干就完了 项目中经常遇到这样一个场景&#xff0c;用户信息或者进行增删改的一些模块&#xff0c;需要根据用户是否登录&#xff0c;进行路由拦截&#xff0c;直接上代码 在store文件夹下的store.js中存放一个默认登录状态 /** store.js* */ import Vue from vue import Vuex …

通关制单机器人_2020关务节|“数字供应链与智能通关”论坛——如何打造云上跨境贸易生态圈...

点击标题下「蓝色微信名」可快速关注 随着跨境贸易的飞速发展&#xff0c;其涉及的有商流、信息流、资金流与物流。其中&#xff0c;物流特别是跨境物流&#xff0c;又是其中较为重要的一个环节。如何解决跨境贸易的物流物流困难&#xff1f;让我们来听听&#xff0c;欧坚集团副…

区块链技术世界

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 2017年发展最火热的技术&#xff0c;我觉得一个人工智能AI&#xff0c;另一个当之无愧的是一个叫区块链东西。最典型的例子是&#xff0c;人类顶…

Python学习心得第一周-03练习2

#5. 求1-23-45 ... 99的所有数的和 res0 count1 while count <100:if count%2 0:res-countelse:rescountcount1 print(res) #6. 用户登陆&#xff08;三次机会重试&#xff09; count0 while count<3:nameinput(name:)passwordinput(password:)if nameztc and passwords…

与MySQL传统复制相比,GTID有哪些独特的复制姿势?

与MySQL传统复制相比&#xff0c;GTID有哪些独特的复制姿势? http://mp.weixin.qq.com/s/IF1Pld-wGW0q2NiBjMXwfg 陈华军&#xff0c;苏宁云商IT总部资深技术经理&#xff0c;从事数据库服务相关的开发和维护工作&#xff0c;之前曾长期从事富士通关系数据库的开发&#xff0c…

方法的运用_企业如何运用论坛做营销,千享科技分享技巧方法

随着互联网的普及&#xff0c;对企业的发展带来了很大的影响&#xff0c;传统的营销已经满足不了企业的发展&#xff0c;需要运用互联网来营销&#xff0c;企业也意识到了互联网营销的重要性&#xff0c;而做互联网营销可以分成几种形式进行&#xff0c;像百度知识营销、论坛营…

区块链开发入门

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链这么火&#xff0c;可是你很快就会发现&#xff0c;想要入门区块链开发&#xff0c;尤其是想要从零开始学习区块链编程&#xff0c;根本都找…

linux怎么创建牡蛎_文件amp;目录小技巧 | Linux后门系列

0x01 Linux 目录技巧我们都知道 Windows 下文件和文件夹命名是有很多规则和限制的&#xff0c;但是可以通过一些程序来绕过限制&#xff0c;今天我们来看看 Linux 有哪些有趣的规则 参考 https://www.pathname.com/fhs/pub/fhs-2.3.pdf当然了&#xff0c;我这种人怎么可能按照官…

php简单算法之冒泡排序

<?php $arr [2,4,1,5,3,11,6,999,88,666,66,44,22,33,776];function getNewArr($arr){$count count($arr);//该层循环控制 需要冒泡的轮数for($i1;$i<$count;$i){//该层循环用来控制每轮 冒出一个数 需要比较的次数for($k0;$k<$count-$i;$k){if($arr[$k]>$arr[…

iOS单个应用程序的最大可用内存是多少?

iOS单个应用程序的最大可用内存是多少&#xff1f; StackOverflow上有人做了一些简单的测试&#xff0c;有限设备下迄今为止测到的结果&#xff1a; iPad1: 127MB/256MB/49% (大致crash临界值 / 总内存 / 占比)iPad2: 275MB/512MB/53%iPad3: 645MB/1024MB/62%iPad4: 585MB/102…

sql 存储过程和函数

最近在学习数据库&#xff0c;上课过程中总是在许多知识点有或多或少的问题&#xff0c;对于这些问题的产生&#xff0c;大概是由于我听课习惯所造成的吧&#xff0c;好啦&#xff0c;废话不多说&#xff0c;开始今天到主题吧。 首先介绍SQL的存储过程&#xff0c;先来给它定义…

怎樣制作线段动画_PPT动画还能这么做?我擦!动画源文件免费送你

擦除动画&#xff0c;可以说是基础得不能再基础PPT动画之一了&#xff0c;我们几乎可以在任何带有PPT动画效果的演示中找到它的踪影。简单的直线擦除效果可能大部分都会&#xff0c;那么把直线换成曲线呢&#xff1f;小小的变动都会让你措手不及。所以&#xff0c;你确定自己真…

Linux最大打开文件描述符数

1. 系统最大打开文件描述符数&#xff1a;/proc/sys/fs/file-max a. 查看 $ cat /proc/sys/fs/file-max 186405 2. 设置 a. 临时性 # echo 1000000 > /proc/sys/fs/file-max 2. 永久性&#xff1a;在/etc/sysctl.conf中设置 fs.file-max 1000000 2. 进程最大…

XMT.com超200万被区块链终端交易

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 狭义来讲&#xff0c;区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构&#xff0c; 并以密码学方式保证的不可篡改和…

初学LINQ语句

//有两个数组&#xff0c;客户和地址&#xff0c;他们之间通过公司名关联&#xff1a;var customers new[] { new {CustomerID1,FirstName"Kim",LastName"Abercrombie",CompanyName"Alpine Sky House"},new {CustomerID2,FirstName"Jeff&q…

android 开启一个定时线程_ANDROID开发中定时器的3种方法

在android中&#xff0c;经常用到的定时器主要有以下几种实现&#xff1a;一、采用Handler与线程的sleep(long )方法二、采用Handler的postDelayed(Runnable, long) 方法三、采用Handler与timer及TimerTask结合的方法。下面逐一介绍&#xff1a;一、采用Handle与线程的sleep(lo…

083 HBase的完全分布式的搭建与部署,以及多master

一&#xff1a;前提准备 1.设置时间同步 2.清空logs&#xff0c;datas 3.格式化集群 bin/hdfs namenode -format 4.重启集群 sbin/start-dfs.sh sbin/start-yarn.sh 5.删除zookeeper下的data&#xff0c;并新建zkData 6.在zkData下新建myid 7.分发&#xff0c;后&#xff0c;修…

区块链技术指北

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 回顾近现代几次工业革命&#xff0c;人类的发展随着技术的变革而突飞猛进。第一次工业革命革命&#xff0c;以工作机的诞生为开始&#xff0c;以蒸…

cmd查看所有数据库 db2_DB2数据库常用命令集

【IT168 技术】在DB2的开发过程中&#xff0c;贯穿整个开发过程还有很重要的一部分工作就是数据库的维护&#xff1b;对于维护一个庞大信息系统来说是非常必要的&#xff1b;留一份简易的维护手册&#xff0c;以备不时之需&#xff1b;以下收集到的部分维护命令&#xff0c;以飨…

[原创]SparkR针对mysql的数据读写操作实现

网上翻了两天没找到一份有用的文章&#xff0c;自己研究SparkR的官方api文档&#xff0c;总算找到了实现的接口 我是用R语言加载SparkR库的方式&#xff0c;当然也可以直接用SparkR控制台就不用自己加载SparkR的库了 #首先加载sparkR的库 Sys.setenv(TEST_HOME "/root/so…

使用vue2.0 vue-router vuex 模拟ios7操作

其实你也可以&#xff0c;甚至做得更好... 首先看一下效果&#xff1a;用vue2.0实现SPA&#xff1a;模拟ios7操作 与 通讯录实现 github地址是&#xff1a;https://github.com/QRL909109/ios7 如果您觉得可以&#xff0c;麻烦给一个star&#xff0c;支持我一下。 之前接触过Ang…

区块链技术是否会终结开源时代?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 2017年11月18~19日&#xff0c;在上海交大召开的2017中国开源年会&#xff0c;在第二天我们组织了一个“闭门会议”。在这个闭门会议上&#xff0c…

Direct2D开发:Direct2D 和 GDI 互操作性概述

本主题说明如何结合使用 Direct2D 和 GDI&#xff08;可能为英文网页&#xff09;。有两种方法可以结合使用 Direct2D 和 GDI&#xff1a;您可以将 GDI 内容写入与 Direct2D GDI 兼容的呈现器目标&#xff0c;也可以将 Direct2D 内容写入 GDI 设备上下文 (DC) 0X01 将Direct2D内…

vmware虚拟机启动centOs黑屏

如图所示 &#xff0c; 我的VM 启动虚拟机之后就变成了上面的样子&#xff0c;一直不动&#xff0c;ping也ping不好&#xff0c;这个时候 &#xff1a; 1. 要么 内存不够了&#xff1b; 2. 要么 网络协议存在问题了&#xff1b; 本地windows环境在管理员的cmd命令行输入 &…

plc和pc串口通讯接线_让你搞懂PLC串口通讯和通讯接口,这东西估计没几个能说清楚~...

电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口&#xff0c;最基本的PLC串口通讯和基本的通讯接口你都了解吗&#xff1f;1&#xff0c;什么是串口通讯&#xff1f;串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混…

西班牙放大招,利用区块链技术防腐

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 在过去十年来&#xff0c;西班牙爆发了一系列引人注目的腐败丑闻&#xff0c;其中以公共采购最甚。但据TI 2017年的腐败认知指数表明&#xff0c;西…