高手帮我呀(来者有分),JAVA与模式之策略模式的问题?我茫然了。。。。

时间:2021-09-04 21:58:31
我正在学阎宏博士的《JAVA与模式》,正好有个实际项目要用到此模式!
不知如何用呢?大家给个例子?
我要做个飞机对战的游戏如“雷鸟”号,但是飞机与飞机有各自的飞行轨迹(算法),我需要传入不同的对象得到不同的飞行路线,但是此模式利用接口把不同对象统一成了同一类型,以至于不可以引用不同对象之间各自的转有方法,这怎么办呢?是不是我还没有理解此模式的真正用意?请大家最好给出实例代码?谢谢!
 如:   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 要不怎么移动?

#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 要不怎么移动?

#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分,也不知道是什么样的例子