小游戏——金庸奇侠传(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 ...
随机推荐
- php一次性大量数据入库解决方法
当有业务需求需要一次性循环n条数据,插入或更新数据库时,如果单纯的循环,插入/更新,会消耗太多的数据库资源 一下是一种简单的解决方案 数据库的insert 是可以批量更新的,当有大量数据循环i ...
- Vue.js组件之间的调用
index.html: <div id="app"></div> 运行完index.html之后自动寻找运行main.js文件 main.js: impor ...
- python入门 -- 学习笔记1
学习资料:笨方法学Python 准备: 安装环境----请自行网络搜索(Windows安装很简单,和其他安装程序一样) 找一个自己习惯的编辑器(比如:sublime text 3) 创建一个专门的目录 ...
- Windows 10 系统,配置jdk系统环境变量
1. 下载jdk包,下载路径为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html, ...
- Android 查阅博客1_app优化_1大小
Android App Bundle (google play 商店发布应用的话,可自行深入了解下,这里不做介绍) http://mp.weixin.qq.com/s?__biz=MzAwODY4 ...
- OpenStack 安装:nova服务
上一篇介绍了glance,并且成功创建了一个镜像,这一篇介绍Nova. 首先创建Nova用户,需要记得先source环境变量,然后创建Nova用户,并设置密码为nova [root@linux-nod ...
- 单点登录(SSO)解决方案之 CAS 入门案例
单点登录: 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. ...
- CuratorBarrier
一.DistributedDoubleBarrier 同时开始,同时结束 package bjsxt.curator.barrier; import java.util.Random; import ...
- osg探究补充:DatabasePager类简介
简介 DatabasePager类,也就是常说的数据库分页技术,简单来说,就是在进行数据库查找时,有可能满足条件的数据很多,为了提高相应速度我们进行数据查找时进行分页查找与显示,当点击下一页时才会进行 ...
- 微信小程序设置背景铺满全屏
参考方法: 新版本升级取消了默认page的100%的特性 需要在app.wxss文件中加入如下代码: page{ height:100%; }