一个小游戏问题,大虾请帮我看看。谢谢
用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为止。不用画面。只写这个过程的算法,谢谢
哪位大虾帮着给做一下,感激!
------解决方案--------------------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);