不知如何用呢?大家给个例子?
我要做个飞机对战的游戏如“雷鸟”号,但是飞机与飞机有各自的飞行轨迹(算法),我需要传入不同的对象得到不同的飞行路线,但是此模式利用接口把不同对象统一成了同一类型,以至于不可以引用不同对象之间各自的转有方法,这怎么办呢?是不是我还没有理解此模式的真正用意?请大家最好给出实例代码?谢谢!
如: interface actionStrategy
{
public void move(int x,int y);
}
class myPlan implement actionStrategy
{
int x,y,i;
public void move( )
{
x++;
y++;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public int setx(int x){
this.x=x;
}
public int sety(int y){
this.y=y;
}
}
class youPlan implement actionStrategy
{
int x,y,i;
public void move( )
{
x++;
y--;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public int setx(int x){
this.x=x;
}
public int sety(int y){
this.y=y;
}
}
class PlanObject{
private actionStrategy as;
public void paint (Graphic g)
{
g.drawImage(img,x,y,0);
}
public void move(){
as.move();
}
public void setPlan(actionStrategy as)
{
as=this.as;
}
public void planDead()
{ 在这要用到myPlan或youPlan的坐标。来判断碰撞!
}
} //我怎么得到myPlan对象的坐标,除非我在生成myPlan的对象,那么,我有何必引用策略模式呢,不是多此一举吗,因为每个对象都有不同的行为与状态,我在此非常的迷惑。请高手指点,并给出例子。也希望能为我这个游戏提供一个更好的框架。
在下油箱:eckel@mail.china.com
请多指教!!!
17 个解决方案
#1
我没有仔细看程序,但认为应该是这样子的。
实际应该是将飞行器的移动方式,同飞行器本身分开。就是说我们可以单独定义飞行器的几种移动策略,比如:从上到下,从左到右,从左上到右下等……,然后,再定义不同的飞行器,比如:小飞机,中飞机,大飞机等……
这样通过策略模式我们就可以产生从左到右飞的小飞机,从左上到右下费的大飞机等等
实际应该是将飞行器的移动方式,同飞行器本身分开。就是说我们可以单独定义飞行器的几种移动策略,比如:从上到下,从左到右,从左上到右下等……,然后,再定义不同的飞行器,比如:小飞机,中飞机,大飞机等……
这样通过策略模式我们就可以产生从左到右飞的小飞机,从左上到右下费的大飞机等等
#2
移动应该是plane的方法
策略只负责生成 X、Y坐标 可以让策略类implement Runnalbe 接口
过一些时间声称一个新的 X、Y坐标
飞机也应该实现Runnable 要不怎么移动?
策略只负责生成 X、Y坐标 可以让策略类implement Runnalbe 接口
过一些时间声称一个新的 X、Y坐标
飞机也应该实现Runnable 要不怎么移动?
#3
怎么没有多少人回答呢,大家快来帮我顶!!
#4
我给你讲讲吧,这说话不方便,我有一个具体的离子,我给你发过去吧~~~
#5
up
#6
是不是可以考虑用BRIDGE和Strategy结合?
#7
up 我帮你顶
#8
自己顶
#9
我在帮你顶两下把
#10
你这个程序需要利用多线程,让两个飞机类分别按自己的方式实现Runnable接口中的run()方法。
#11
up
#12
up
#13
大家都来顶
#14
谁有代码例子,我很需要呀!@!!!!!
#15
up
#16
谁有示例,我高分相曾。
#17
我倒up也能得100分,也不知道是什么样的例子
#1
我没有仔细看程序,但认为应该是这样子的。
实际应该是将飞行器的移动方式,同飞行器本身分开。就是说我们可以单独定义飞行器的几种移动策略,比如:从上到下,从左到右,从左上到右下等……,然后,再定义不同的飞行器,比如:小飞机,中飞机,大飞机等……
这样通过策略模式我们就可以产生从左到右飞的小飞机,从左上到右下费的大飞机等等
实际应该是将飞行器的移动方式,同飞行器本身分开。就是说我们可以单独定义飞行器的几种移动策略,比如:从上到下,从左到右,从左上到右下等……,然后,再定义不同的飞行器,比如:小飞机,中飞机,大飞机等……
这样通过策略模式我们就可以产生从左到右飞的小飞机,从左上到右下费的大飞机等等
#2
移动应该是plane的方法
策略只负责生成 X、Y坐标 可以让策略类implement Runnalbe 接口
过一些时间声称一个新的 X、Y坐标
飞机也应该实现Runnable 要不怎么移动?
策略只负责生成 X、Y坐标 可以让策略类implement Runnalbe 接口
过一些时间声称一个新的 X、Y坐标
飞机也应该实现Runnable 要不怎么移动?
#3
怎么没有多少人回答呢,大家快来帮我顶!!
#4
我给你讲讲吧,这说话不方便,我有一个具体的离子,我给你发过去吧~~~
#5
up
#6
是不是可以考虑用BRIDGE和Strategy结合?
#7
up 我帮你顶
#8
自己顶
#9
我在帮你顶两下把
#10
你这个程序需要利用多线程,让两个飞机类分别按自己的方式实现Runnable接口中的run()方法。
#11
up
#12
up
#13
大家都来顶
#14
谁有代码例子,我很需要呀!@!!!!!
#15
up
#16
谁有示例,我高分相曾。
#17
我倒up也能得100分,也不知道是什么样的例子