java面向对象基础练习-人机猜拳游戏

人机猜拳游戏

  • 要求
  • 分析
  • 代码例子
  • 运行结果

要求

  1. 编写石头剪刀布的小游戏,人和电脑玩(一对一),每玩一局获胜的玩家得一分,一轮可以有多局,一轮结束后总分最高的玩家获胜。

分析

  1. 分析类

    Person类:人这个玩家类
    Computer类:电脑玩家类
    Game类:游戏类
    
  2. 关注的属性

     Person玩家类:
     	 name;//名字
     	 score;//得分
     	 
    Computer玩家类:
     	 name;//名字
     	 score;//得分			
     
     Game类:
     	Person person;
    	Computer computer;
    	count:表示第几局
    
  3. 关注的方法-实现特定的业务

     Person玩家类:方法: chuQuan(); //出拳:输入1到3之间的整数表示出拳
     Computer玩家类:方法: chuQuan(); //出拳:随机产生1到3之间的整数表示出拳
     Game类:方法: startGame(); //开始游戏,对战角色调用人出拳,机器出拳可以对战多局,记录得分
     getResult(); //计算总得分,宣布最终游戏结果
    

代码例子

  1. Person类
package com.conglin.pojo;

import java.util.Scanner;

public class Person {
	
	//定义属性
	String name="小黑";
	int score=0;
	
	//获取玩家分数
	public int getScore() {
		return score;
	}
	
	//修改玩家分数
	public void setScore(int score) {
		this.score = score;
	}
	
	//出拳
	public int chuQuan() {
		System.out.println("请出拳:1.剪刀\t2.石头\t3.布");
		Scanner cl=new Scanner(System.in);
		int choice=cl.nextInt();	
		if (choice==1) {
			System.out.println(this.name+"出的是剪刀");
		}else if (choice==2) {
			System.out.println(this.name+"出的是石头");
		}else if (choice==3) {
			System.out.println(this.name+"出的是布");
		}else {
			choice=0;
			System.out.println(this.name+"出拳错误");
		}
		return choice;
	}	
}

  1. Computer类
package com.conglin.pojo;

import java.util.Random;
import java.util.Scanner;

public class Computer {
	
	//定义属性
	String name="小智";
	int score=0;
	
	//获取玩家分数
	public int getScore() {
		return score;
	}
	
	//修改玩家分数
	public void setScore(int score) {
		this.score = score;
	}
	
	//出拳
	public int chuQuan() {
		Random ran=new Random();
		int choice=ran.nextInt(3)+1;
		if (choice==1) {
			System.out.println(this.name+"出的是剪刀");
		}else if (choice==2) {
			System.out.println(this.name+"出的是石头");
		}else if (choice==3) {
			System.out.println(this.name+"出的是布");
		}else {
			choice=0;
			System.out.println(this.name+"出拳错误");
		}
		return choice;
	}
	
}

  1. Game类
package com.conglin.pojo;

public class Game {
	
	//定义属性
	Person person=new Person();
	Computer computer=new Computer();
	int count=0;
	
	//开始游戏,对战角色调用人出拳,机器出拳可以对战多局,记录得分
	public void startGame() {
		System.out.println("游戏开始");
		System.out.println(person.name+"====VS===="+computer.name);
		for(int i=1;i<=5;i++) {
			this.count=i;
			System.out.println("当前是第"+this.count+"局");
			int pchoice=person.chuQuan();
			int cchoice=computer.chuQuan();
			if ((pchoice==1&&cchoice==2)||(pchoice==2&&cchoice==3)||(pchoice==3&&cchoice==1)) {
				System.out.println("这一局"+computer.name+"赢了");
				this.computer.score=this.computer.score+1;
			}else if ((pchoice==1&&cchoice==3)||(pchoice==2&&cchoice==1)||(pchoice==3&&cchoice==2)) {
				System.out.println("这一局"+person.name+"赢了");
				this.person.score=this.person.score+1;
			}else if (pchoice==0) {
				this.computer.score=this.computer.score+1;
			}else if (cchoice==0) {
				this.person.score=this.person.score+1;
			}	
			System.out.println("当前分数="+person.name+":"+this.person.score+"\t"+computer.name+":"+this.computer.score);
		}
		getResult();
	}
	
	
	//计算总得分,宣布最终游戏结果
	public void  getResult() {
		System.out.println("总分数="+person.name+":"+this.person.score+"\t"+computer.name+":"+this.computer.score);
		if (this.person.score>this.computer.score) {
			System.out.println(person.name+"赢了");
		}else if (this.person.score<this.computer.score) {
			System.out.println(computer.name+"赢了");
		}
	}
	
}

  1. 新建一个Test1 调用Game类中的startGame();方法
package com.conglin.test1;

import com.conglin.pojo.Game;

public class Test1 {

	public static void main(String[] args) {
		
		Game g=new Game();
		
		g.startGame();
		
		
	}

}

运行结果

java面向对象基础练习-人机猜拳游戏_第1张图片
java面向对象基础练习-人机猜拳游戏_第2张图片

你可能感兴趣的:(Java学习笔记)