zoukankan      html  css  js  c++  java
  • Java基础之:猜拳小程序

    /**
    	有个人 小范 设计他的成员变量. 成员方法, 可以电脑猜拳. 电脑每次都会随机生成 0, 1, 2 
    	0 表示 石头 1 表示剪刀 2 表示 布
    	并要可以显示 小范 的输赢次数(清单), 假定 玩三次.
    	
    	思路:	实现一次猜拳  →   实现无限循环次猜拳(输入3退出)  → 使用数组保存每次猜拳结果
    	1.使用随机数生成系统的出拳,控制台输入Tom的出拳
    	2.比较参数 0 > 1 , 1 > 2 , 2 > 0 .输出结果
    	3.使用do...while 循环 实现无限次猜拳
    	4. 使用二维数组 arr[n][3] 保存猜拳结果 , n为猜拳次数,arr[n][0] 为系统出拳 
    		arr[n][1] 为 Tom 出拳 ,arr[n][2] 为 猜拳结果  ,动态更新arr。
    	5. 最后显示出一共赢了多少次,输了多少次,平局多少次
    
    */
    import java.util.Scanner;
    
    public class HomeWork {
    
    	public static void main(String[] args) {
    		Scanner input = new Scanner(System.in);
    		System.out.println("请输入你的名字:");
    		String name = input.next();
    		Person p = new Person(name);
    		
    		p.mora(name);
    	}
    }
    
    class Person
    {
    	String name;
    	int out;		//出拳参数
    	Scanner input = new Scanner(System.in);
    
    	public Person(){}
    
    	public Person(String name){
    		this.name = name;
    	}
    
    	public void mora(String name){  //猜拳方法,name用于最后打印输出 输赢结果
    		
    		int count = 0; // 用来标志 第几次猜拳
    		int[][] arr = new int[1][3];	//使用二维数组 arr[n][3] 保存猜拳结果 
    		
    		do{
    			int systemIn = (int)(Math.random()*2 + 1);	//生成 0-2的随机数
    //			System.out.println(systemIn);
    			int res = 0; // 保存猜拳结果,-1为输  0为平局  1为赢
    			System.out.println("请出拳(0 表示石头,1 表示剪刀,2 表示布 ,3退出):");
    			out = input.nextInt();
    			
    			//保护机制
    			while(out<0 || out>4){
    				System.out.println("输入错误!请重新输入(0 表示石头,1 表示剪刀,2 表示布,3退出):");
    				out = input.nextInt();
    			}
    
    			if(out == 3){ //退出
    				break;
    			}
    
    			switch(systemIn){	//判断输赢
    				case 0:	//电脑出石头
    					if(out == 0){	
    						res = 0;
    					}else if(out == 1){
    						res = -1;
    					}else{
    						res = 1;
    					}
    					break;
    				case 1:	//电脑出剪刀
    					if(out == 0){
    						res = 1;
    					}else if(out == 1){
    						res = 0;
    					}else{
    						res = -1;
    					}
    					break;
    				case 2:	//电脑出布
    					if(out == 0){
    						res = -1;
    					}else if(out == 1){
    						res = 1;
    					}else{
    						res = 0;
    					}
    					break;
    			}
    
    			switch(res){	//输出结果
    			case -1:
    				System.out.println("你输了!");
    				break;
    			case 0:
    				System.out.println("平局!");
    				break;
    			case 1:
    				System.out.println("你赢了!");
    				break;
    			}
    
    			//保存结果
    			arr[count][0] = systemIn;	//arr[n][0] 为系统出拳 
    			arr[count][1] = out;		//arr[n][1] 为 Tom 出拳
    			arr[count][2] = res;		//arr[n][2] 为 猜拳结果
    			count++;	//改变count的值,准备进行下一次猜拳
    			//因为count是从0开始的,这里要先进行count++,再数组扩容,不然会出现数组下标越界异常。
    			int[][] temp = new int[count+1][3];	//建立中间数组,进行数组扩容
    			for(int i =0;i<arr.length;i++){
    				for(int j = 0;j<arr[i].length;j++){
    					temp[i][j] = arr[i][j];
    				}
    			}
    
    			arr = temp;
    		}while(out != 3);
    
    		//退出循环后,输出打印进行过的对局结果。
    		//打印结果的同时,累加变量 winCount ,loseCount ,drawCount 
    		int winCount = 0;	//赢的次数
    		int loseCount = 0;	//输的次数
    		int drawCount = 0;	//平局次数
    		for(int k = 0;k <count;k++){
    			switch(arr[k][2]){	//根据输赢进行判断
    				case -1:
    					System.out.printf("第%d次猜拳 系统出拳 %S ,你出拳 %S ,你输了!",(k+1),print(arr[k][0]),print(arr[k][1]));
    					loseCount++;
    					break;
    				case 0:
    					System.out.printf("第%d次猜拳 系统出拳 %S ,你出拳 %S ,平局!",(k+1),print(arr[k][0]),print(arr[k][1]));
    					drawCount++;
    					break;
    				case 1:
    					System.out.printf("第%d次猜拳 系统出拳 %S ,你出拳 %S ,你赢了!",(k+1),print(arr[k][0]),print(arr[k][1]));
    					winCount++;
    					break;
    			}
    			System.out.println();
    		}
    
    		System.out.printf("%S一共赢了%d次,输了%d次,平局%d次。
    ",name,winCount,loseCount,drawCount);
    	}
    		
    	public String print(int a){	//用于输出石头 剪刀 布
    		String out = "";
    		if(a == 0){
    			out = "石头";
    		}else if(a == 1){
    			out = "剪刀";
    		}else{
    			out = "布";
    		}
    		return out;
    	}
    }
    

      

  • 相关阅读:
    文件夹打开对话框
    文件打开对话框
    HOOK函数(二)——全局HOOK
    HOOK函数(一)——进程内HOOK
    抓包
    List 访问
    坑爹的EL 表达式。
    tomcat 虚拟目录的安全问题
    框架
    程序员相关词汇
  • 原文地址:https://www.cnblogs.com/SongHai/p/14040294.html
Copyright © 2011-2022 走看看