【图文解析 】猜拳游戏(电脑大战人类)图文阐释决斗过程,精彩!

 

  • 任务
    • 完成人机猜拳互动游戏的开发
  • 主要功能
    • 选取对战角色
    • 猜拳
    • 记录分数
  • 需求说明
    • 分析业务
    • 抽象出类、类的特征和行为
  • 实现思路:
    • 分析业务,抽象出类、类的特征和行为

下面给出运行结果及代码,供参考:

  • User.class
package 猜拳小游戏;

import java.util.Scanner;

public class User {

	private String Uname;
	private int score;
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	public String getUname() {
		return Uname;
	}
	/*--人类选择角色--*/
	public void Chose(){
		Scanner sc = new Scanner(System.in);
		System.out.println("请选择角色(1.海南黄花梨2.海南3.黄花梨)");
		int no = sc.nextInt();
		switch (no) {
		case 1:
			System.out.println("我选择的角色:1");
			this.Uname="1";
			break;
		case 2:
			System.out.println("我选择的角色:2");
			this.Uname="2";
			break;
		case 3:
			System.out.println("我选择的角色:3");
			this.Uname="3";
			break;	
		}
	}
	/*--人类选择拳法--*/
	public int play(){
		Scanner sc =new Scanner(System.in);
		System.out.println("请选择拳法(1.剪刀2.石头3.布),也可输入1、2、3数字进行选择");
		int no = sc.nextInt();
		switch (no) {
		case 1:
			System.out.println("我选择拳法:1");
			break;
		case 2:
			System.out.println("我选择拳法:2");
			break;
		case 3:
			System.out.println("我选择拳法:3");
			break;
		}
		return score;
	}
}
  • Computer
package 猜拳小游戏;
public class Computer {

	private String Cname;
	private int score = 0;
	public String getCname() {
		return Cname;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	/*--计算机选择角色--*/
	public void Chose(){
		int no = (int)(Math.random()*(3+1-1)+1);
		switch (no) {
		case 1:
			System.out.println("计算机选择的角色是:海南黄花梨");
			this.Cname="海南黄花梨";
			break;
		case 2:
			System.out.println("计算机选择的角色是:海南");
			this.Cname="海南";
			break;
		case 3:
			System.out.println("计算机选择的角色是:黄花梨");
			this.Cname="黄花梨";
			break;
		}
	}
	public int paly(){
		int no = (int)(Math.random()*(3+1-1)+1);
		switch (no) {
		case 1:
			System.out.println("计算机的拳法是:剪刀");
			this.Cname="剪刀";
			break;
		case 2:
			System.out.println("计算机的拳法是:石头");
			this.Cname="石头";
			break;
		case 3:
			System.out.println("计算机的拳法是:布");
			this.Cname="布";
			break;
		}
		return score;
		
	}
}
  • Game.java
package 猜拳小游戏;

import java.util.Scanner;

public class Game {

	private User u = null;
	private Computer c = null;
	private int count;
	Game(){
		u = new User();
		c = new Computer();
		count = 0;
	}
	/*--进入游戏--*/
	public void StartGame(){
		Scanner sc = new Scanner(System.in);
		System.out.println("-----------欢迎进入游戏世界-----------\n");
		System.out.println("         ***************");
		System.out.println("         **  猜拳,开始    **");
		System.out.println("         ***************\n");
		System.out.println("出拳规则:1.剪刀2.石头3.布\n");
		//电脑和人类选择角色
		u.Chose();
		System.out.println();
		c.Chose();
		System.out.println();
		//开始游戏
		System.out.println("要开始吗?(y/n)\n");
		String str = sc.next();
		while(str.equals("y")){
			int per = u.play();//存放人类的出拳对应的数字
			int com = c.paly();//存放电脑的出拳对应的数字
			if(per == com){
				System.out.println("结果:和局");
			}
			else if(per == 1 && com ==3 || per == 2 && com ==1 || per ==3 && per ==2){
				System.out.println("结果(机器):"+u.getUname()+"你赢了");
				u.setScore(u.getScore()+1);
			}
			else {
				System.out.println("结果(机器):"+c.getCname()+"赢了");
				c.setScore(c.getScore()+1);
			}
			count ++;
			System.out.println("是否开始下一轮(y/n)\n");
			str = sc.next();
		}
		sc.close();
		//显示对战结果
		ShowResult();
	}
	private void ShowResult() {
		System.out.println("--------------------------------\n");
		System.out.println("(机器)"+c.getCname()+"   VS  "+"(人)"+u.getUname());
		System.out.println("最终比分:\t"+c.getScore()+"  :  "+u.getScore());//显示比分
		System.out.println("对战次数:"+count+"次");	//显示对战次数
		if(u.getScore() < c.getScore()){
			System.out.println("结果:(机器)"+c.getCname()+"获胜");
		}
		else if(u.getScore() > c.getScore()){
			System.out.println("结果:(人)"+u.getUname()+"获胜");
		}
		else {
			System.out.println("结果:平局!!");
		}
	}
}
  • testGame
package 猜拳小游戏;
/**
 * 测试类
 */
public class testGame {
	public static void main(String[] args) {
		new Game().StartGame();		
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值