用JAVA抽象类实现:
战士打怪,战士分1级2级3级,怪也分1级2级3级,不同级别的战士打怪会有不同效果,比如1级战士打1级怪,打掉1点HP(生命值),1级战士打2级怪打掉0。5HP,1级战士打3级怪,MISS,
打不掉HP,2级战士打1级怪,打掉2点HP,打2级怪打掉1点HP,打3级怪,打0。5点HP,3级战士打1级怪,打掉3点HP,打2级怪,打掉2点HP,打3级怪,打掉1点HP;战士打怪,怪还击,1级怪打1级战士打掉1点HP,以次类推,和战士打怪一样。直到有一方HP减为O为止。不用画面。只写这个过程的算法,谢谢
哪位大虾帮着给做一下,感激!

解决方案 »

  1.   

    http://blog.csdn.net/infon/archive/2007/04/19/1571190.aspx
    摘抄部分如下,不过这是一个spring的一个例子,不过 LZ可以思想还是可以借用的5.2.6一个简单的回合格斗小游戏示例
    下面,我们使用一个简单的回合格斗的小游戏,来演示AspectJ的应用。这个示例主要设计了一个战士Soldier类,这个类包括发动攻击、治疗、躲避、移动等功能。另外有一个充当客户端的主程序MainTest,里面的功能就是让两个战士回合制互相攻击,直到一个被倒下。核心类Soldier的源码如下:publicclass Soldier {private String name;privateinthealth=100;privateintdamage=10;privateintx=10;privateinty=10;//攻击其它角色publicboolean attack(Soldier target){    boolean ret=false;    if(!target.dodge())//目标是否躲闪成功    {       target.setHealth(target.getHealth()-this.damage);       ret=true;    }    move();    //移动一下    treat();//冶我疗伤    return ret;}publicvoid move(){    this.x+=getRandom(5);    this.y+=getRandom(5);}//躲避x及y随机变动,成功率为50%publicboolean dodge(){    return getRandom(10)%2==0;}//治疗,具有一定成功的机会,可以提高生命值0-20点publicvoid treat(){    if(canTreat())       this.health+=getRandom(20);}publicboolean canTreat(){    return getRandom(10)/2==0;} privateint getRandom(int seed){    return RandomUtil.getRandomValue(seed);} //getter及setter方法publicint getHealth() {    returnhealth;}publicvoid setHealth(int health) {    this.health = health;}public String getName() {    returnname;}publicvoid setName(String name) {    this.name = name;}publicint getX() {    returnx;}publicvoid setX(int x) {    this.x = x;}publicint getY() {    returny;}publicvoid setY(int y) {    this.y = y;}publicint getDamage() {    returndamage;}publicvoid setDamage(int damage) {    this.damage = damage;}}Soldier引用了一个随机数生成工具类RandomUtil,用于模拟一定的发生概率,代码如下:publicclass RandomUtil {privatestatic java.util.Random random=new java.util.Random();publicstaticint getRandomValue(int seed){       returnrandom.nextInt(seed);}}然后就是使用Soldier的客户端程序MainTest,这里是一个简单的控制台程序,代码如下:publicclass MainTest {      publicstaticvoid main(String[] args) {    Soldier p1=new Soldier();    p1.setName("角色1");    Soldier p2=new Soldier();    p2.setName("角色2");     int i=0;    while(p1.getHealth()>0 && p2.getHealth()>0)    {       p2.attack(p1);       p1.attack(p2);       i+=2;    }       System.out.println("战斗次数:"+i);    if(p1.getHealth()>0)System.out.println("角色1战胜!");    else System.out.println("角色2战胜!");    }}这三个类组成了一个完成的应用程序,执行MainTest,你会发现经过一会儿的战斗以后,在控制台会输出战斗的结果。