用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编译“三国群英传”游戏(本质石头剪刀布)相关推荐

  1. java编译release版本断言_关于Debug和Release之本质区别

    经常在 CSDN 上看见有人问 Debug 运行正常但 Release 失败的问题.以往的讨论往往是 经验性的,并没有指出会这样的真正原因是什么,要想找出真正的原因通常要凭运气.最 近我看了一些这方面 ...

  2. 基于java的雷电游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)

    项目报告 基于Java的雷电游戏 电脑游戏,是指在计算机上能够运转的游戏软件.这种软件具有较强的娱乐性.电脑游戏的创新和发展与硬件.软件的发展紧密相关.它能够给玩家提供一个虚拟的环境,使游戏带给了人们 ...

  3. 基于Java的雷电游戏设计(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于Java的雷电游戏 摘   要    电脑游戏,是指在计算机上能够运转的游戏软件.这种软件具 ...

  4. 基于java的超级玛丽游戏系统设计与实现(项目报告+答辩PPT+源代码+部署视频)

    项目报告 基于java的超级玛丽游戏的设计与实现 近年来,Java作为一种新的编程语言,以其简单性.可移植性和平台无关性等优点,得到了广泛地应用.J2SE称为Java标准版或Java标准平台.J2SE ...

  5. 基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...

  6. [计算机毕设]基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库)

    项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...

  7. 【项目精选】基于Java的超级玛丽游戏的设计与实现(源码+论文+视频)

    点击下载源码 超级玛丽小游戏的JAVA程序,进入游戏后首先按空格键开始,利用方向键来控制的马里奥的移动,同时检测马里奥与场景中的障碍物和敌人的碰撞,并判断马里奥的可移动性和马里奥的生命值.当马里奥通过 ...

  8. 手机java环境_手机端搭建Java编译运行环境

    今天带给大家的是手机端搭建Java编译运行环境(手机党福利). 众所周知,Java是一种可以撰写跨平台应用软件的面向对象程序设计语言.Java技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用 ...

  9. 基于java的俄罗斯方块游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    基于Java的俄罗斯方块游戏的设计与实现 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑.手机.掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛 ...

最新文章

  1. 数据结构-线性表的顺序结构
  2. sgdisk 磁盘操作命令
  3. 在“内卷”、“红海”的2020 年,开垦计算机视觉领域的知识荒原:BatchNorm
  4. flask教程之创建第一个flask应用
  5. iOS开发月报#10|201904
  6. 高性能微服务网关.NETCore客户端Kong.Net开源发布
  7. Outlook式样界面菜单和页面控制
  8. 虚拟桌面之往事如风 --读书篇
  9. 模式识别经典算法——FCM图像聚类分割(最简matlab实现)
  10. html 5 本地数据库(二)-- Web Sql Database核心方法openDatabase、transaction、executeSql 详解
  11. 随机森林实现回归预测(糖尿病数据集)
  12. mysql查询去除重复记录
  13. 这是你知道的建模教程吗
  14. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(八)-RCE漏洞
  15. 不要因为不知,所以设计
  16. win7系统打印机开启服务器,开启打印机服务【设置模式】
  17. python编写一个名片_python基础-实现名片功能
  18. STM32--矩阵键盘的设计实现
  19. 2022-2028全球与中国混合云数据仓库服务市场现状及未来发展趋势
  20. VC,CString,UTF8与GBK互转

热门文章

  1. 解决elementui中Container自适应最上面有空白
  2. 教你将视频压缩变小的操作方法
  3. 车牌号图像的垂直投影
  4. PYGAME - image convert
  5. ZZULIOJ 1768 Lovely Circular And Linear
  6. 线上价格监测,如何才算到手价
  7. 中国邮政竟然开咖啡店了?
  8. JSP中实现网页访问统计的方法【转】
  9. 数据库中INT类型概述
  10. php程序员的情书,[程序猿]程序员告白情书,给你独一无二的浪漫!