金庸群侠传

游戏运行界面:

 

游戏实现源码:

 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,对面向对象的进一步了解)的更多相关文章

  1. 一次httpserver优化的经验和教训(silverlight游戏 - 金庸群侠传X0.5上线记)

    金X因为被推荐到ACFUN游戏排行第一名.并同一时候在17YY.7K7K.U77.17173等各大小游戏站点上线.迎来了在线用户数量的爆炸式增长.眼下各大站点使用外链方式.也就是实际链接到金X官网的s ...

  2. 原创游戏,金庸群侠传X 0.5公布

    首先说一下背景,我个人从小特别爱玩游戏,对小时候一款游戏<金庸群侠传>DOS版更是情有独钟,自己工作以后,利用业余时间自己整了一个原创的改编版丢网上(找图片.音乐.写剧情更是虐心之极,耗时 ...

  3. 我用shell写了个mud游戏:武林群侠传

    零.前言 学习shell的时候,无聊的我,写了个简单版的文字mud,暂且叫武林群侠传吧.可能90后都不知道文字mud是什么了--哈哈 壹.效果 先看下效果吧,GIF图如下 文字效果如下: [root@ ...

  4. Java太阳系小游戏分析和源代码

    Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...

  5. 【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax

    Cax 小程序.小游戏以及 Web 通用 Canvas 渲染引擎 Github → https://github.com/dntzhang/cax 点我看看 DEMO 小程序 DEMO 正在审核中敬请 ...

  6. canvas小游戏——flappy bird

    前言 如果说学编程就是学逻辑的话,那锻炼逻辑能力的最好方法就莫过于写游戏了.最近看了一位大神的fly bird小游戏,感觉很有帮助.于是为了寻求进一步的提高,我花了两天时间自己写了一个canvas版本 ...

  7. Java打飞机小游戏(附完整源码)

    写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码写的很 ...

  8. 记一次 .NET 某桌面奇侠游戏 非托管内存泄漏分析

    一:背景 1. 讲故事 说实话,这篇dump我本来是不准备上一篇文章来解读的,但它有两点深深的感动了我. 无数次的听说用 Unity 可做游戏开发,但百闻不如一见. 游戏中有很多金庸武侠小说才有的名字 ...

  9. Java猜拳小游戏(剪刀、石头、布)

    1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...

随机推荐

  1. 3、支付结果 /items/result?point=1&orderNo=201903211035400001

    <template> <div> <div class="toppic"> <img src="../../../assets/ ...

  2. 深入浅出PF 学习笔记---TypeConverter

    StringToHumanTypeConverter类(从TypeConverter继承 using System; using System.Collections.Generic; using S ...

  3. hive的常用操作

    1.hive的数据类型 tinyint/smallint/int/bigint tinyint:从 0 到 255 的整型数据 smallint:从 0 到 65535 的整型数据 int:从 0 到 ...

  4. 使用chrome浏览器无法访问github提示不是私密连接且无继续前往选项

    在hosts文件中添加如下内容: 192.30.253.112 github.com192.30.253.119 gist.github.com151.101.100.133 assets-cdn.g ...

  5. 对话框改变颜色 宽度沾满屏幕 Dialog

    首先在style.xml中定义一个对话框样式,这里可以修改颜色: //对话框沾满整个屏幕的宽度 <style name="DialogShareTheme" parent=& ...

  6. 2015-2016 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2015)

    题目链接 :  http://codeforces.com/gym/100781/attachments A-Adjoin the Network 题意大概是有多棵树(也可能是一颗),现在要把它们合并 ...

  7. Django自动获取项目中的全部URL

    import re from collections import OrderedDict from django.conf import settings from django.utils.mod ...

  8. node.js中fs文件系统模块的使用

    node.js中为我们提供了fs文件系统模块,实现对文件或目录的创建,修改和删除等操作. fs模块中,所有的方法分为同步和异步两种实现. 有 sync 后缀的方法为同步方法,没有 sync 后缀的方法 ...

  9. Python开发——基础

    注释 单行注释 # 被注释的内容 多行注释 """ 被注释的内容 """ 解释器路径 #!/usr/bin/env python # 用于L ...

  10. HTML第一篇

    Hyper Text Markup Language  超文本标记语言:是一种创建网页的标准标记语言. <!DOCTYPE html> <html> <head> ...