zoukankan      html  css  js  c++  java
  • 猜拳游戏案例

    猜拳是由石头、剪刀、布组成。能够选择你的对手是谁,这里设定了3个对手(总裁、副总、总监)。然后选择你的出拳,通过使用数字1、2、3来分别代表着3种状态。然后我们还须要加上计分的功能。这里我们建立4个类,人、机、主方法、測试类。

    当然啦。我们都知道人类和机类的基本方法都差点儿相同,由于我们要获取到键盘的输入内容。所以我们要使用这个Scanner ,这个在util包以下。我们直接导入就能够了。这里直接贴出的代码:

    import java.util.Scanner;
    
    public class Person{
    	private String name;
    	private int score;
    	
    	public Person(){
    		name="sdksdk0";
    		score=0;
    	}
    	public Person(String n){
    		name=n;
    		score=0;
    	}
    	public int showFist(){
    		Scanner input=new Scanner(System.in);
    		System.out.println("
    请出拳:1 剪刀 2 石头  3  布(输入对应数字):");
    		int show=input.nextInt();
    		switch(show){
    		case 1:
    			System.out.println("你出拳:剪刀");
    			break;
    		case 2:
    			System.out.println("你出拳:石头");
    			break;
    		case 3:
    			System.out.println("你出拳:布");
    			break;
    		}
    		return show;
    	}
    	public String getName(){
    		return name;
    	}
    	public void setName(String name){
    		this.name=name;
    	}
    	public int getScore(){
    		return score;
    	}
    	public void setScore(int score){
    		this.score=score;
    	}
    }
    
    机类的话。自然须要一个随机数了,这样才干够随机比較。


    import java.util.Random;
    public class Android{
    
    	private String name;
    	private int score;
    	public Android(String n){
    		name=n;
    		score=0;
    	}
    	public Android(){
    		name="Android";
    		score=0;
    	}
    	public int showFist(){
    		Random r=new Random();
    		int show=r.nextInt(3)+1;
    		switch(show){
    		case 1:
    			System.out.println("你出拳:剪刀");
    			break;
    		case 2:
    			System.out.println("你出拳:石头");
    			break;
    		case 3:
    			System.out.println("你出拳:布");
    			break;
    		}
    		return show;
    	}
    	public String getName(){
    		return name;
    	}
    	public void setName(String name){
    		this.name=name;
    	}
    	public int getScore(){
    		return score;
    	}
    	public void setScore(int score){
    		this.score=score;
    	}
    }
    


    以下最重要的是我们的主方法类了。
    我们须要来定义人、机、计分方法。

        private Person person;
    private Android android;
    private int count;

    功能初始化
    public void initial(){
    person=new Person();
    android=new Android();
    count=0;
    }

    定义显示结果:

    if(result==1){
    			System.out.println("结果:平分秋色");
    		} else if(result==2){
    			System.out.println("结果:"+person.getName()+"你赢了");
    		} else if(result==3){
    			System.out.println("结果:"+person.getName()+"你输了"+android.getName()+"赢了");
    		}
    在这几种情况下是玩家赢了:
    1 剪刀 2 石头  3  布

    用户1对机器3,用户2对机器1,用户3对机器2.

    假设用户输入的和机器产生的一样就是平局了。其余情况就是机器赢了。

    至于计算分数的话就这样就能够了android.setScore(android.getScore()+1);

    完整代码例如以下:

    import java.util.Scanner;
    public class Referee{
    	private Person person;
    	private Android android;
    	private int count;
    
    	//初始化功能
    	public void initial(){
    		person=new Person();
    		android=new Android();
    		count=0;
    	}
    
    	//计算 总分
    	public int calcResult(){
    		if(person.getScore()==android.getScore()){
    			return 1;
    		} else if(person.getScore()>android.getScore()){
    			return 2;
    		} else{
    			return 3;
    		}
    	}
    
    	//显示总结果
    	public void showResult(){
    		System.out.println("======================");
    		System.out.println(person.getName()+"VS"+android.getName());
    		System.out.println("总对战次数:"+count);
    		int result=calcResult();
    		if(result==1){
    			System.out.println("结果:平分秋色");
    		} else if(result==2){
    			System.out.println("结果:"+person.getName()+"你赢了");
    		} else if(result==3){
    			System.out.println("结果:"+person.getName()+"你输了"+android.getName()+"赢了");
    		}
    		System.out.println("======================");
    	}
    
    	public void startGame(){
    		System.out.println("======================");
    		System.out.println("
    	************************");
    		
    		System.out.println("请选择你的对手  1 总裁  2  副总  3  总监");
    
    		Scanner input=new Scanner(System.in);
    		int role=input.nextInt();
    		switch(role){
    		case 1:
    			android.setName("总裁");
    			break;
    		case 2:
    			android.setName("副总");
    			break;
    		case 3:
    			android.setName("总监");
    			break;
    		}
    		System.out.println("
    要開始吗?[Y/N]");
    		String con=input.next();
    		int perFist;
    		int androidFist;
    		while(con.equals("Y")){
    		//	perFist = person.showFist();
    			perFist=person.showFist();
    			androidFist=android.showFist();
    
    		if(perFist==androidFist){
    			System.out.println("结果:平局");
    		} else if((perFist==1&&androidFist==3)
    			||(perFist==2&&androidFist==1)
    			||(perFist==3&&androidFist==2)){
    		System.out.println("结果:"+person.getName()+"赢了!");
    		person.setScore(person.getScore()+1);
    
    		} else{
    		System.out.println("结果:"+person.getName()+"输了");
    		android.setScore(android.getScore()+1);
    		}
    
    		count++;
    		System.out.print("
    是否開始下一轮(Y/N)");
    		con=input.next();
    		}
    		showResult();
    	}
    }
    
    最后,我们仅仅须要一个測试类就能够了

    public class StartGame{
    	public static void main(String[] args){
    		Referee r=new Referee();
    		r.initial();
    		r.startGame();
    	}
    }

    当然咯,假设你想要把測试类都写在一起也是能够正常编译出来的。只是不建议这样做。这种话对代码的重构性就不好了。

    使用命令javac StartGame.java进行编译。然后 java StartGame 执行。





  • 相关阅读:
    SQL Server数据库文件与文件组总结
    SQL Server使用sp_rename重命名约束注意事项
    LogWriter: Operating system error 21(error not found) encountered
    SQL Server的Linked Server支持使用SEQUENCE吗?
    SQL Server使用sp_spaceused查看表记录存在不准确的情况
    SQL Server死锁中的会话隔离级别为序列化(Serializable)实验测试
    SQL Server统计信息偏差影响表联结方式案例浅析
    SQL Server关于predicate、density、selectivity、cardinality名词浅析
    Oracle dblink的连接模式的关系测试总结
    MySQL系统变量sql_safe_updates总结
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7391303.html
Copyright © 2011-2022 走看看