用Java编译“三国群英传”游戏(本质石头剪刀布)
用Java编译“三国群英传”游戏(本质石头剪刀布)
package com.domain;
//玩家类
public abstract class Player {
//玩家有哪些属性呢?
protected String name; //昵称
protected int score; //得分
//注意,出拳类类型是固定,是每一个玩家都有的,所以把设计为类的静态属性。方便我们去调用。
public static String[] handType = {"石头","剪刀","布"};public Player() {
}public Player(String name) {this.name = name;
}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;
}//玩家有哪些方法
//1.玩家的出拳方法
public abstract String showHand();
}
package com.logic;
//游戏的业务逻辑类
//判断每轮出拳的胜负
//判断游戏是否结束
//显示游戏的结果
import com.domain.Player;
public class GameLogic {
//电脑玩家
private Player computerPlayer;
//人类玩家
private Player humanPlayer;
public GameLogic() {
}public GameLogic(Player computerPlayer, Player humanPlayer) {this.computerPlayer = computerPlayer;this.humanPlayer = humanPlayer;
}public Player getComputerPlayer() {return computerPlayer;
}public void setComputerPlayer(Player computerPlayer) {this.computerPlayer = computerPlayer;
}public Player getHumanPlayer() {return humanPlayer;
}public void setHumanPlayer(Player humanPlayer) {this.humanPlayer = humanPlayer;
}//判断每轮PK胜负的方法
public void pk(){//怎么判断呢?//1.获得各自的出拳String computerHand = computerPlayer.showHand();String humanHand = humanPlayer.showHand();System.out.println(this.getHumanPlayer().getName() + "的出拳是:" + humanHand);System.out.println(this.getComputerPlayer().getName() + "的出拳是:" + computerHand);if(computerHand.equals(humanHand)){ //说明打了平手System.out.println("诶呦,不分胜负咱们继续大战五百回合!");}else if(humanHand.equals("石头")){//电脑的出拳只可能是剪刀或者布。if(computerHand.equals("剪刀")){//给人类玩家的分数加1this.getHumanPlayer().setScore(this.getHumanPlayer().getScore()+1);System.out.println("小样看你还嚣张不。");}else{this.getComputerPlayer().setScore(this.getComputerPlayer().getScore()+1);System.out.println("你不过就是运气好点罢了。");}}else if(humanHand.equals("剪刀")){if(computerHand.equals("布")){//给人类玩家的分数加1this.getHumanPlayer().setScore(this.getHumanPlayer().getScore()+1);System.out.println("小样看你还嚣张不。");}else{this.getComputerPlayer().setScore(this.getComputerPlayer().getScore()+1);System.out.println("你不过就是运气好点罢了。");}}else if(humanHand.equals("布")){if(computerHand.equals("石头")){//给人类玩家的分数加1this.getHumanPlayer().setScore(this.getHumanPlayer().getScore()+1);System.out.println("小样看你还嚣张不。");}else{this.getComputerPlayer().setScore(this.getComputerPlayer().getScore()+1);System.out.println("你不过就是运气好点罢了。");}}//显示每轮的分数showRoundResult();//判断游戏是否结束if(isGameOver()){//显示游戏结果。。。showGameResult();}}//显示每轮PK后的分数
public void showRoundResult(){System.out.println("************当前比分是**********");System.out.println(this.getHumanPlayer().getName()+" "+this.getHumanPlayer().getScore() + ":" + this.getComputerPlayer().getScore()+" "+this.getComputerPlayer().getName());}//判断游戏是否结束
//规定游戏是五局三胜制,如果有任何一方分数大于等于3分则游戏结束。public boolean isGameOver(){if(this.getComputerPlayer().getScore()>=3||this.getHumanPlayer().getScore()>=3){return true;}return false;
}//显示游戏结果
public void showGameResult(){if(this.getComputerPlayer().getScore()>=3){//说明电脑玩家赢了...System.out.println("君子报仇十年不晚,咱们后会有期....");}else{System.out.println("别羡慕哥,哥只是个传奇....");}
}
}
package com.domain;
import java.util.Random;
public class ComputerPlayer extends Player{
public ComputerPlayer() {
}public ComputerPlayer(String name) {super(name);
}//实现出拳方法
/*电脑玩家每次都是随机出拳。*/
@Override
public String showHand() {/** 生成一个0-2之间的随机数* */return Player.handType[new Random().nextInt(3)];
}
}
public class HumanPlayer extends Player {
public HumanPlayer() {
}public HumanPlayer(String name) {super(name);
}/** 实现出拳方法,人类自己选择要出的拳* */
@Override
public String showHand() {try {int choice;//接收用户的输入Scanner sc = new Scanner(System.in);System.out.println("请选择您要出的拳:");System.out.println("1.石头 2.剪刀 3.布");choice = sc.nextInt(); //当然这里也有可能会抛出异常,最好捕获异常。//最好判断一下,如果用户输入的数字范围不是在1-3,提示错误if (choice > 3 || choice < 1) {System.out.println("输入选项非法!");return null;}return Player.handType[--choice];}catch(Exception ex){System.out.println("程序发生意外错误!");return null;}
}
}
package com.app;
//游戏的界面类
//1显示游戏的主界面
//2实现菜单选项功能
//3 实现用户的录入
import com.domain.ComputerPlayer;
import com.domain.HumanPlayer;
import com.domain.Player;
import com.logic.GameLogic;
import java.util.Scanner;
public class GuessGame {
public static Scanner sc = new Scanner(System.in);
public static String[] computerPlayerNames ={“曹操”,“刘备”,“孙权”};
public static int choice =-1; //用户的输入选择。
public static Player computerPlayer; //电脑玩家对象
public static Player humanPlayer; //人类玩家对象
//显示游戏的主界面
public static void showMenu(){
System.out.println(“欢迎进入三国群英传**”);
System.out.println(“选择您要挑战的角色:”);
System.out.println(“1.曹操”);
System.out.println(“2.刘备”);
System.out.println(“3.孙权”);
System.out.println(“请选择:”);
choice = sc.nextInt();
}
public static void main(String[] args) {showMenu();computerPlayer = new ComputerPlayer(GuessGame.computerPlayerNames[--choice]);System.out.println("请输入您的昵称:");String name = sc.next();humanPlayer = new HumanPlayer(name);//这样的话,我们的人类玩家和电脑玩家都创建好了。生成一个游戏业务逻辑类。GameLogic gameLogic = new GameLogic(computerPlayer,humanPlayer);//开始pkwhile(!gameLogic.isGameOver()){gameLogic.pk();}
}
}
撒花! 码字整理不易,感谢各位大佬支持↓↓↓↓↓↓↓↓↓↓↓
【微信】二维码:如本文对你有所帮助,就赏个吧
用Java编译“三国群英传”游戏(本质石头剪刀布)相关推荐
- java编译release版本断言_关于Debug和Release之本质区别
经常在 CSDN 上看见有人问 Debug 运行正常但 Release 失败的问题.以往的讨论往往是 经验性的,并没有指出会这样的真正原因是什么,要想找出真正的原因通常要凭运气.最 近我看了一些这方面 ...
- 基于java的雷电游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)
项目报告 基于Java的雷电游戏 电脑游戏,是指在计算机上能够运转的游戏软件.这种软件具有较强的娱乐性.电脑游戏的创新和发展与硬件.软件的发展紧密相关.它能够给玩家提供一个虚拟的环境,使游戏带给了人们 ...
- 基于Java的雷电游戏设计(含源文件)
欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于Java的雷电游戏 摘 要 电脑游戏,是指在计算机上能够运转的游戏软件.这种软件具 ...
- 基于java的超级玛丽游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)
项目报告 基于java的超级玛丽游戏的设计与实现 近年来,Java作为一种新的编程语言,以其简单性.可移植性和平台无关性等优点,得到了广泛地应用.J2SE称为Java标准版或Java标准平台.J2SE ...
- 基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...
- [计算机毕设]基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库)
项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...
- 【项目精选】基于Java的超级玛丽游戏的设计与实现(源码+论文+视频)
点击下载源码 超级玛丽小游戏的JAVA程序,进入游戏后首先按空格键开始,利用方向键来控制的马里奥的移动,同时检测马里奥与场景中的障碍物和敌人的碰撞,并判断马里奥的可移动性和马里奥的生命值.当马里奥通过 ...
- 手机java环境_手机端搭建Java编译运行环境
今天带给大家的是手机端搭建Java编译运行环境(手机党福利). 众所周知,Java是一种可以撰写跨平台应用软件的面向对象程序设计语言.Java技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用 ...
- 基于java的俄罗斯方块游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于Java的俄罗斯方块游戏的设计与实现 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛 ...
最新文章
- 数据结构-线性表的顺序结构
- sgdisk 磁盘操作命令
- 在“内卷”、“红海”的2020 年,开垦计算机视觉领域的知识荒原:BatchNorm
- flask教程之创建第一个flask应用
- iOS开发月报#10|201904
- 高性能微服务网关.NETCore客户端Kong.Net开源发布
- Outlook式样界面菜单和页面控制
- 虚拟桌面之往事如风 --读书篇
- 模式识别经典算法——FCM图像聚类分割(最简matlab实现)
- html 5 本地数据库(二)-- Web Sql Database核心方法openDatabase、transaction、executeSql 详解
- 随机森林实现回归预测(糖尿病数据集)
- mysql查询去除重复记录
- 这是你知道的建模教程吗
- 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(八)-RCE漏洞
- 不要因为不知,所以设计
- win7系统打印机开启服务器,开启打印机服务【设置模式】
- python编写一个名片_python基础-实现名片功能
- STM32--矩阵键盘的设计实现
- 2022-2028全球与中国混合云数据仓库服务市场现状及未来发展趋势
- VC,CString,UTF8与GBK互转