[真格邦]JAVA实战之人与计算机对战-石头剪刀布游戏讲解、源代码

一、要求:
1、人出拳:1.剪刀 2.石头 3.布。
    输入后提示用户本次出的是什么拳,如果输入其他数字提示输入有误,请重新输入

2、计算机出拳:取1-3的随机数,输出本次计算机出的是什么拳

3、比较人与计算机谁剩谁负,并输出提示

4、比赛一局结束后提示“是否继续比赛”,用户选择继续比赛那就继续猜拳。用户选择不继续则退出比赛

二、涉及知识点:JAVA基础语法、面向对象

三、完整代码

package com.zgb.base;


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
//定义人,用于出拳
class Person{
  public int in(){
	    //输出提示信息
		System.out.println("请出拳[1-石头;2-剪刀;3-布]");
	    Scanner sc = new Scanner(System.in);
		//定义变量,接收用户输入
		int num = sc.nextInt();
		//判断用户输入
		switch(num){
		    case 1:
			    System.out.println("你出的是:石头");
				break;
			case 2:
			    System.out.println("你出的是:剪刀");
				break;
			case 3:
			    System.out.println("你出的是:布");
				break;
			default:
			    System.out.println("输入有误");
				num = -1;
				break;
		}
		return num;
	}
}

//定义计算机,用于出拳
class Computer{
	private static List<Integer> random = new ArrayList<Integer>();
	{
		random.add(1);
		random.add(2);
		random.add(3);
	}
  public int in(){
	   	
	    //计算机默认取1-3的随机数
	  Collections.shuffle(random);
	    int num = random.get(0);
		//判断计算机输入
		switch(num){
		    case 1:
			    System.out.println("计算机出的是:石头");
				break;
			case 2:
			    System.out.println("计算机出的是:剪刀");
				break;
			case 3:
			    System.out.println("计算机出的是:布");
				break;
		}
		return num;
	}
	
}

class FingerPlay{
  public static void main(String[] args){
	    System.out.println("");
	    System.out.println("");
	    System.out.println("");
	    System.out.println("***************开始猜拳游戏*****************");
	    System.out.println("");
	    System.out.println("");
		//开始出拳
		start("y");		
	}
	//开始出拳
	public static void start(String is){
	    //定义是否结束比赛的标志
		Person p = new Person();
		int p_num = -1;
		Computer c = new Computer();
		int c_num = -1;
		while(is.equals("y")){	
		    //获取人的出拳信息
		    p_num = p.in();
		    //如果人出拳有误,提示重新出拳
		   while(p_num==-1){
				System.out.println("***************请重新出拳:[1-石头;2-剪刀;3-布]*****************");
				System.out.println("");
				System.out.println("");
				p_num = p.in();
		   }		   
		    c_num = c.in();
		    is = compare(p_num,c_num);
		}
		
	}
	//比赛结果
	public static String compare(int p_num,int c_num){
	    //判断平局
	    if(p_num == c_num){
		    System.out.println("本次平局,继续努力!");
		}
		//判断人赢
		if((p_num == 1 && c_num == 2)||(p_num == 2 && c_num == 3)||(p_num == 3 && c_num == 1)){
		    System.out.println("~_~恭喜你获胜了!");
		}
		//判断计算机赢
		if((c_num == 1 && p_num == 2)||(c_num == 2 && p_num == 3)||(c_num == 3 && p_num == 1)){
		    System.out.println("很抱歉,你输了!");
		}		
		System.out.println("是否继续比赛?y/n");
		Scanner sc = new Scanner(System.in);		
		String is = sc.next();
		if(is.equals("y")){
		    start(is);
		}else{
	        System.out.println("比赛结束");
		}
		return is;
		
	}
}
四、能力提升。

请在以上代码的基础上添加退出比赛后,输出本轮比赛,总共比了几次,人胜了几次,计算机了几次,打平了几次

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值