ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day6_work1_fingerguessGame

2021-01-12 19:03:30  阅读:194  来源: 互联网

标签:day6 System person computer println work1 fingerguessGame public out


项目需求:人机猜拳游戏

类图

代码:

Player类

package org.zzz1.www;
public class Player {
	protected String name;
	private int flag;

	{
		name = "未命名";
		flag = 0;
	}

	protected String importName() {
		return getName();
	}

	protected int fingerGuess() {
		int finger;
		do{
			System.out.println("输入1-3之间的数!");
		 	finger= Game.input.nextInt();
		}while(!(finger > 0 && finger < 4) );

		switch (finger){
			case 1:
				System.out.println(this.name+"出了剪刀");
				break;
			case 2:
				System.out.println(this.name+"出了石头");
				break;
			case 3:
				System.out.println(this.name+"出了布");
				break;
			default:
		}// switch
		return finger;
	}//fingerGuess

	protected void setFlag() {
		this.flag++;
	}

	protected int getFlag() {
		return flag;
	}

	protected void setName(String name) {
		this.name = name;
	}

	protected String getName() {
		return name;
	}

}

Computer类

package org.zzz1.www;
import java.util.Random;

public class Computer extends Player {
	public Computer(){
		name = "简单人机";
	}

	@Override
	protected int fingerGuess() {
		int finger;
		Random random = new Random();
		System.out.print(this.name + "出了");
		finger = random.nextInt(3) + 1;
		switch (finger){
			case 1:
				System.out.println("剪刀");
				break;
			case 2:
				System.out.println("石头");
				break;
			case 3:
				System.out.println("布");
				break;
			default:
		}// switch
		return finger;
	}// fingerGuess
}

Person类

package org.zzz1.www;

public class Person extends Player {

}

Judge类

package org.zzz1.www;
public class Judge {

	public void welcome() {
		System.out.println("欢迎来到猜拳游戏\n游戏规则:输入1,2,3分别代表剪刀,石头,布,与电脑进行对决,五局三胜");
	}

	public void askName(Player person) {
		if(person instanceof Person) {

			System.out.println("请输入用户名");
			person.setName(Game.input.next());
		}
	}

	public void startGame(Player person, Player computer){
		int personPlay;
		int computerPlay;
		System.out.println(person.importName() + "与" + computer.importName() + "猜拳正式开始");
		for(int i = 0; i < 5; i++) {
			System.out.println("第"+ (i+1) + "局" + person.importName() + "要出什么?1.剪刀 2.石头 3.布");
			personPlay = person.fingerGuess();
			computerPlay = computer.fingerGuess();
			if ((personPlay == 1 && computerPlay == 3) || (personPlay == 2 && computerPlay == 1) || (personPlay == 3 && computerPlay == 2)) {
				System.out.println(person.importName() + "获胜");
				person.setFlag();
			} else if ((computerPlay == 1 && personPlay == 3) || (computerPlay == 2 && personPlay == 1) || (computerPlay == 3 && personPlay == 2)) {
				System.out.println(computer.importName() + "获胜");
				computer.setFlag();
			} else {
				System.out.println("平局");
			}

		}// for

	}// startGame

	public void judged(Player person,Player computer){
		if(person.getFlag() < computer.getFlag()){
			System.out.println(computer.importName() + "恭喜你获得游戏胜利");
		}else if(person.getFlag() > computer.getFlag()) {
			System.out.println(person.importName() + "恭喜你获得游戏胜利");
		}else{
			System.out.println("太巧了,竟然平局");
		}
	}

}// class

Game类

package org.zzz1.www;
import java.util.Scanner;

public class Game {
	public static Scanner input = new Scanner(System.in);
	public static void main(String[] args) {
		Judge judge1 = new Judge();
		Player person = new Person();
		Player computer = new Computer();
		judge1.welcome();
		judge1.askName(person);
		judge1.startGame(person,computer);
		judge1.judged(person,computer);
		input.close();
	}
}

运行结果



tips:

1.Scanner:

sc.close()一旦调用则就算再次创建Scanner(System.in)对象也无法继续输入,所以要慎用close()方法。

解决方案:在本文件的public类中(意即整个程序的入口)创建Scanner对象(需加上public static修饰),并在main方法中调用close()方法关闭输入流。然后在其他类中需要输入时使用:主类名.sc.next() 即可。

标签:day6,System,person,computer,println,work1,fingerguessGame,public,out
来源: https://www.cnblogs.com/zzz1zzz/p/14268724.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有