小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)
金庸群侠传
游戏运行界面:

游戏实现源码:
package game.logic;
//人类
public class Person {
public String name; //名字 Person(){ } Person(String name){
this.name = name;
}
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }
package game.logic; //会武功的人类
public class KongFuPerson extends Person { protected int blood = 1000; // 默认都是1000点血 KongFuPerson() { } public int getBlood() {
return blood;
} public void setBlood(int blood) {
this.blood = blood;
} KongFuPerson(String name) {
this.name = name;
} // 普通招数
public void commonSkill(KongFuPerson P) {
P.blood -= 50; //攻击敌人50点血
} //杀招式
public void bestSkill(KongFuPerson P) {
P.blood -= 100; //攻击敌人100点血
}
}
package game.logic; //武功绝学类(接口)
public interface Secrets {
public void secrets(KongFuPerson P);
}
package game.logic; //武功高手类
public class KongFuMaster extends KongFuPerson implements Secrets{ public void secrets(KongFuPerson P) {
P.blood -= 300;//攻击敌人300点血 } }
package game.roles; import game.logic.KongFuMaster;
import game.logic.KongFuPerson; //令狐冲类
public class Linghuchong extends KongFuMaster{ public Linghuchong(){ } public Linghuchong(String name){
this.name = name;
}
public void secrets(KongFuPerson P) {
// TODO Auto-generated method stub
super.secrets(P);
System.out.println(this.getName()+"使用武功绝学独孤九剑攻击"+P.getName()+"300点血");
} public void commonSkill(KongFuPerson P) {
// TODO Auto-generated method stub
super.commonSkill(P);
System.out.println(this.getName()+"使用越女剑法攻击"+P.getName()+"50点血");
} public void bestSkill(KongFuPerson P) {
// TODO Auto-generated method stub
super.bestSkill(P);
System.out.println(this.getName()+"使用华山剑法攻击"+P.getName()+"100点血");
} }
package game.roles; import game.logic.KongFuMaster;
import game.logic.KongFuPerson; //欧阳锋类
public class Ouyangfeng extends KongFuMaster{
public Ouyangfeng(){ } public Ouyangfeng(String name){
this.name = name;
}
public void secrets(KongFuPerson P) {
// TODO Auto-generated method stub
super.secrets(P);
System.out.println(this.getName()+"使用武功绝学蛤蟆功攻击"+P.getName()+"300点血");
} public void commonSkill(KongFuPerson P) {
// TODO Auto-generated method stub
super.commonSkill(P);
System.out.println(this.getName()+"使用毒蛇攻击"+P.getName()+"50点血");
} public void bestSkill(KongFuPerson P) {
// TODO Auto-generated method stub
super.bestSkill(P);
System.out.println(this.getName()+"使用毒蛇拐杖攻击"+P.getName()+"100点血");
}
}
package game.app; import game.logic.KongFuMaster;
import game.roles.Linghuchong;
import game.roles.Ouyangfeng; import java.util.Scanner; public class Game { public static Scanner in = new Scanner(System.in);
public static int choice;//用户的选择
public static KongFuMaster player;//玩家
public static KongFuMaster computer;//电脑玩家
public static boolean isFirst = true;//默认玩家打电脑 //游戏角色初始化方法
public static void init(){
switch(choice){
case 1:
player = new Linghuchong("令狐冲");
computer = new Ouyangfeng("欧阳锋");
break;
case 2:
player = new Ouyangfeng("欧阳锋");
computer = new Linghuchong("令狐冲");
break;
}
System.out.println("您选择了:"+ player.getName());
} //显示游戏菜单
public static void Menu(){
System.out.println("********欢迎进入金庸群侠传***********");
System.out.println("1.令狐冲 2.欧阳锋");
System.out.println("请选择:");
choice = in.nextInt();
} //游戏PK方法
public static void beginCombat(KongFuMaster player , KongFuMaster computer){
//生成一个1-3之间的随机数
int temp = (int)(Math.random()*10)%3; //0-2
temp++;
switch(temp){
case 1:
if(Game.isFirst){
player.commonSkill(computer);
}else{
computer.commonSkill(player);
}
break;
case 2:
if(Game.isFirst){
player.bestSkill(computer);
}else{
computer.bestSkill(player);
}
break;
case 3:
if(Game.isFirst){
player.secrets(computer);
}else{
computer.secrets(player);
}
break;
}
Game.isFirst = !Game.isFirst;
} //判断游戏是否结束
public static boolean isComplete(){
if(Game.player.getBlood()<=0||Game.computer.getBlood()<=0){
return true;
}else{
return false;
}
} //显示游戏结果
public static void showResult(){
if(Game.player.getBlood()<=0){
System.out.println("君子报仇十年不晚,咱们后会有期。。。。");
}else{
System.out.println("别羡慕哥,哥只是个传说。。。。");
}
} public static void main(String[] args){
Game.Menu();//显示菜单
Game.init();//初始化游戏 do{
//开始PK
Game.beginCombat(player, computer);
}while(!Game.isComplete());//判断是否结束 Game.showResult();//显示游戏结果
}
}
小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)的更多相关文章
- 一次httpserver优化的经验和教训(silverlight游戏 - 金庸群侠传X0.5上线记)
金X因为被推荐到ACFUN游戏排行第一名.并同一时候在17YY.7K7K.U77.17173等各大小游戏站点上线.迎来了在线用户数量的爆炸式增长.眼下各大站点使用外链方式.也就是实际链接到金X官网的s ...
- 原创游戏,金庸群侠传X 0.5公布
首先说一下背景,我个人从小特别爱玩游戏,对小时候一款游戏<金庸群侠传>DOS版更是情有独钟,自己工作以后,利用业余时间自己整了一个原创的改编版丢网上(找图片.音乐.写剧情更是虐心之极,耗时 ...
- 我用shell写了个mud游戏:武林群侠传
零.前言 学习shell的时候,无聊的我,写了个简单版的文字mud,暂且叫武林群侠传吧.可能90后都不知道文字mud是什么了--哈哈 壹.效果 先看下效果吧,GIF图如下 文字效果如下: [root@ ...
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
- 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax
Cax 小程序.小游戏以及 Web 通用 Canvas 渲染引擎 Github → https://github.com/dntzhang/cax 点我看看 DEMO 小程序 DEMO 正在审核中敬请 ...
- canvas小游戏——flappy bird
前言 如果说学编程就是学逻辑的话,那锻炼逻辑能力的最好方法就莫过于写游戏了.最近看了一位大神的fly bird小游戏,感觉很有帮助.于是为了寻求进一步的提高,我花了两天时间自己写了一个canvas版本 ...
- Java打飞机小游戏(附完整源码)
写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码写的很 ...
- 记一次 .NET 某桌面奇侠游戏 非托管内存泄漏分析
一:背景 1. 讲故事 说实话,这篇dump我本来是不准备上一篇文章来解读的,但它有两点深深的感动了我. 无数次的听说用 Unity 可做游戏开发,但百闻不如一见. 游戏中有很多金庸武侠小说才有的名字 ...
- Java猜拳小游戏(剪刀、石头、布)
1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...
随机推荐
- prometheus 表达式
avg_over_time(my_inprogress_requests{job="mhc"}[5m] offset 3m) 返回time=1550664637开始向前偏移3分钟之 ...
- 深入浅出PF 学习笔记---资源文件
引用 xmlns:sys="clr-namespace:System;assembly=mscorlib" <Window.Resources><sys:St ...
- java简单的文件读写工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- Kettle (5) - 获取 Web 数据
使用 Kettle 获取网页数据.当然,这里的网页数据主要指结构化数据,可能是 xml 格式.json 格式 或者 csv 文件等.以 http://services.odata.org/V3/Nor ...
- jquery判断是否是空对象 不含任何属性
code function isEmptyObject(e) { var t; for (t in e) return !1; return !0 }
- vue.$nextTick 解决了哪些问题
转载:https://www.cnblogs.com/xuewuhen/p/7860989.html $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $next ...
- 整理的最全 python常见面试题(基本必考)
整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...
- centos 7 安装redis 3.2.1
https://www.cnblogs.com/zuidongfeng/p/8032505.html 下载安装包: http://download.redis.io/releases/ 根据需要自己选 ...
- dbus 消息和消息总线实例讲解-一
应用程序A和消息总线连接,这个连接获取了一个众所周知的公共名(记作连接A).应用程序A中有对象A1提供了接口I1,接口I1有方法M1. 应用程序B和消息总线连接,要求调用连接A上对象A1的接口I1的方 ...
- GUI学习之一——PyQt5初识
我们在第〇篇里先演示了GUI的功能,其实Python有多个库是支持GUI编程的,python官网列出了大量的说明,其中包括了原生的tkinter 还有许多第三方库 Pyqt PySide wxPyth ...