人机猜拳游戏(修改)

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

import java.util.Scanner;
public class CaiQuan {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		System.out.println("--------欢迎进入游戏世界---------\n\n");
		System.out.println("******************************\n");
		System.out.println("*******  猜拳          开始      ********\n");
		System.out.println("******************************\n\n");
		System.out.println("游戏开始前给自己起一个威武霸气的昵称吧\n");
		System.out.println("请输入你的昵称:");
		String username=input.next();//让用户输入昵称
		System.out.println("出拳规则:1.剪刀  2.石头  3.布");
		String name="1";//给name一个初始值,name是computer的名字
		do{
			System.out.println("请选择对战角色(1.刘备  2.曹操  3.盖伦):");
			boolean zhenjia=input.hasNextInt();//判断输入是否是数值
			while(!zhenjia){//如果不是数字,进入
				String zhen=input.next();
				System.out.println("您输入的是:"+zhen+"  臣妾做不到啊!");
				System.out.println("请重新选择角色(1.刘备  2.曹操  3.盖伦):");
				zhenjia=input.hasNextInt();//判断输入是否是数值,如果不是 ,继续循环
			}
			int num=input.nextInt();//取出的数字
			while(num>3||num<0){//判断输入的值是否是1-3,如果不是进入循环
				System.out.println("臣妾做不到啊!");
				System.out.println("请重新选择角色(1.刘备  2.曹操  3.盖伦):");
				num=input.nextInt();//输入数值,如果是1-3跳出循环,如果不是继续循环
			}
			switch(num){
			case 1:
				name="刘备";
				break;
			case 2:
				name="曹操";
				break;
			case 3:
				name="盖伦";
				break;
			}
		}while(name.equals("1"));//当是不是1时 ,跳出循环
		System.out.println("你选择了  "+name+"对战");
		String go;
		do{
			System.out.println(username+"\tVS\t"+name);
			//出拳代码
			int i=1;//i是猜拳的轮数
			int userScore=0;//用户得分
			int compScore=0;//computer得分
			String come;//当come赋值y,继续循环,在下面写着
			do{
				System.out.println("这是第"+i+"轮");
				System.out.println("请出拳:1.剪刀 2.石头  3.布");
				boolean zhenjia=input.hasNextInt();//判断输入是否是数值
				while(!zhenjia){//如果不是数字,进入
					String zhen=input.next();//把上面的值放入此处,一边下面重新输入
					System.out.println("您输入的是:"+zhen+"  臣妾做不到啊!");
					System.out.println("请重新出拳:1.剪刀 2.石头  3.布");
					zhenjia=input.hasNextInt();//判断输入是否是数值,如果不是 ,继续循环
				}
				int num=input.nextInt();//取出上面的数值
				while(num>3||num<0){//判断输入的值是否是1-3,如果不是进入循环
					System.out.println("臣妾做不到啊!");
					System.out.println("请重新出拳:1.剪刀 2.石头  3.布");
					num=input.nextInt();//输入数值,如果是1-3跳出循环,如果不是继续循环
				}
				String user="";//储存用户的出拳
				switch(num){
				case 1:
					System.out.println("你出拳:剪刀");
					user="剪刀";
					break;
				case 2:
					System.out.println("你出拳:石头");
					user="石头";
					break;
				case 3:
					System.out.println("你出拳:布");
					user="布";
					break;
				}
				String comp="";//储存computer的猜拳
				int numc=(((int)(Math.random()*10))%3+1);//随机产生1-3
				switch(numc){
				case 1:
					System.out.println(name+"出拳:剪刀");
					comp="剪刀";
					break;
				case 2:
					System.out.println(name+"出拳:石头");
					comp="石头";
					break;
				case 3:
					System.out.println(name+"出拳:布");
					comp="布";
					break;
				}
				if(user.equals(comp)){//判断双方出拳是否相同
					System.out.println("双方出拳:"+user+"  本局是平局");
				}else{
					if(user.equals("剪刀")){//当用户出剪刀时
						if(comp.equals("石头")){//当computer出石头时
							System.out.println(name+"赢了!");
							compScore++;
						}else{//当computer出布时
							System.out.println("你赢了!");
							userScore++;
						}
					}else if(user.equals("石头")){
						if(comp.equals("布")){
							System.out.println(name+"赢了!");
							compScore++;
						}else{
							System.out.println("你赢了!");
							userScore++;
						}
					}else{
						if(comp.equals("剪刀")){
							System.out.println(name+"赢了!");
							compScore++;
						}else{
							System.out.println("你赢了!");
							userScore++;
						}
					}
				}
				i++;//猜拳轮数增加1
				System.out.println("继续第"+i+"轮  y\n结束  n");
				come=input.next();//当come赋值y,继续循环
			}while("y".equals(come));//判断come的值是否是y,如果是 ,继续循环,否则跳出循环
			System.out.println("游戏进行了"+(i-1)+"轮");
			System.out.println("姓名\t得分");
			System.out.println(username+"\t"+userScore);
			System.out.println(name+"\t"+compScore);
			if(userScore>compScore){
				System.out.println("你把"+name+"打的落花流水");
				System.out.println("\t你tm帅呆了");
				System.out.println("再打"+name+"一局就把他打成猪头了 \n  继续y/认怂了n");
			}else{
				System.out.println("你被"+name+"打成猪头了");
				System.out.println("复仇y/认怂n");
			}
			go=input.next();
		}while("y".equals(go));
		System.out.println("GAME OVER!");
	}//mian

}
然后运行代码:


输入昵称,然后选择对战角色:


这里不让你输入非数字内容,然后我会输入一个数字:


我输入了一个5,这是没有的选项,娘娘又做不到,然后我再输入非数字:


程序出错,因为他上面判断字符的已经执行过了,下面的代码只能判断数字是否是1-3,输入字符就崩溃了,我不知道怎么做

让我重新运行代码:继续下面操作:


同样,出拳代码也有上面的问题,我就不展示了,电脑出拳是用的随机数

现在输入n结束(其实输入y以外的字符都能结束)


提示你游戏进行了几轮,还得分情况,然后问你是否复仇,复仇的话,还是和刘备对战:


结束的话,就game over了,程序也结束了


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

转载请注明出处!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值