⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 planegamecanvas.java~3~

📁 一款益智类的手机游戏
💻 JAVA~3~
📖 第 1 页 / 共 2 页
字号:

                public BulletScroller(Canvas screen,int interval)
                {

                        m_screenWidth = screen.getWidth();
                m_screenHeight = screen.getHeight();

                        myBulletImage = mybullet[0].getImage();
                        eBulletImage = eBullet[0].getImage();
                        bossBulletImage = bossBullet[0].getImage();

                        m_updateTimer.schedule(this,0, interval);
                    ClockTag = 0;
                }

                public void run()
                {
                        ClockTag++;
                        if ( ClockTag % 2 == 0)
                        {
                                SendBulletTag = true;
                                ClockTag = 0;
                        }

                        //my bullets move
                    for (int i=0;i < mybullet.length;i++)
                   {
                    if (mybullet[i].IsShow())
                            {
                                        mybullet[i].ChangePos(mybullet[i].GetXSpeed(),0);//move

                                        if (mybullet[i].getXPos()>=m_screenWidth) //out of the screen
                                        {
                                                mybullet[i].ShowFalse();
                        }
                                }
                    }//for

                    //enemy plane bullets move and judge whether hit my plane
                    for (int i=0;i < eBullet.length;i++)
                    {
                            if (eBullet[i].IsShow())
                            {
                                    eBullet[i].ChangePos(-eBullet[i].GetXSpeed(),0);//move
                    if (eBullet[i].getXPos()<= 0)          //out of screen
                    {
                            eBullet[i].ShowFalse();
                    }//if
                    if (Collision(eBullet[i],myplane))  //hit my plane?
                    {
                            eBullet[i].ShowFalse();
                                                 myplane.ChangeHP(-1);
                        myplane.SetState(PlaneGameObject.HIT);
                        if (myplane.getHP() <= 0)
                                myplane.SetState(PlaneGameObject.BOMBING);
                    }
                }//if
                }//for

                //enemy boss bullets move
               for (int i=0;i < bossBullet.length;i++)
               {
                        if (bossBullet[i].IsShow())
                        {
                                bossBullet[i].ChangePos(bossBullet[i].GetXSpeed(),bossBullet[i].GetYSpeed());
                                if (bossBullet[i].getXPos() < 0 ||
                                        bossBullet[i].getYPos() < 0 ||
                                        bossBullet[i].getYPos() >= m_screenHeight)
                                {
                                        bossBullet[i].ShowFalse();
                                }
                            if (Collision(bossBullet[i],myplane))  //hit my plane?
                    {
                            bossBullet[i].ShowFalse();
                                                 myplane.ChangeHP(-1);
                        myplane.SetState(PlaneGameObject.HIT);
                        if (myplane.getHP() <= 0)
                                myplane.SetState(PlaneGameObject.BOMBING);
                    }
                        }
               }//for
            }//void run()

                 void paint(Graphics g)
                 {
                         int x,y;
                         //draw my bullets
                         for (int i=0;i<mybullet.length;i++)
                         {
                        if (mybullet[i].IsShow())
                          {
                                     x = mybullet[i].getXPos();
                                         y = mybullet[i].getYPos();
                                         g.drawImage(myBulletImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                                 }//if
                         }//for

             //draw enemy plane bullets
             for (int i=0;i<eBullet.length;i++)
             {
                     if (eBullet[i].IsShow())
                     {
                             x = eBullet[i].getXPos();
                             y = eBullet[i].getYPos();
                                         g.drawImage(eBulletImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                     }//if
             }//for

             //draw enmey boss bullets
             for (int i=0;i<bossBullet.length;i++)
             {
                     if (bossBullet[i].IsShow())
                     {
                             x = bossBullet[i].getXPos();
                             y = bossBullet[i].getYPos();
                             g.drawImage(bossBulletImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                     }//if
             }//for

         }//void paint()
        }//end of class BulletScroller


        //class PlaneScroller controls the move of the enemy planes by time
        class ePlaneScroller extends TimerTask
    {
                private final Timer m_updateTimer = new Timer();
                private int ClockTag = 0;

                private Random generator = new Random();

                private final int m_maxX;  //最大的横坐标值
                private final int m_maxY;  //最大的纵坐标值
                private int m_x;
                private int m_y;

            private Image ExpImage;
            private Image BossExpImage;
            private Image BossRedImage;
            private Image tempImage;

                public ePlaneScroller(Canvas screen,int interval)
                {
                        m_maxX = screen.getWidth()-1;
                m_maxY = screen.getHeight()-1;
                        m_updateTimer.schedule(this,200, interval);

            try
            {
                ExpImage = Image.createImage("/explosion.png");
            }catch (Exception e)
            {
                ExpImage = null;
            }
            try
            {
                BossExpImage = Image.createImage("/bossexplosion.png");
            }catch (Exception e)
            {
                BossExpImage = null;
            }
            try
            {
                BossRedImage = Image.createImage("/Boss01_red.PNG");
            }catch (Exception e)
            {
                BossRedImage = null;
            }
                }
                public void run()
                {
                    int temp;
                    int i,dx,dy;

                    ClockTag++;
                    //generate enemy planes
                        for (i=0;i<ePlane.length;i++)
                        {
                                if (!ePlane[i].IsShow())        //if found available place in array
                                {                               //generate a radom int
                                        temp = (generator.nextInt() % (3*m_maxY));

                                        if (temp < m_maxY)             //if radom int in the screen
                                        {                           //generate a new enemy plane
                                                ePlane[i].ShowTrue();
                                                ePlane[i].SetPos(m_maxX,temp);  //!SetPos not ChangePos

                        temp = (generator.nextInt() % 3+1);
                        ePlane[i].SetValue(temp);  //decide plane type
                    }
                                }

                        }
                        // enemy plane flys(change position)
                        for (i=0;i<ePlane.length;i++)
                        {
                                if (ePlane[i].IsShow()&&ePlane[i].getState()==PlaneGameObject.ALIVE)
                                {
                                         dx = ePlane[i].getXSpeed();
                                        dy = ePlane[i].getYSpeed();
                                        switch(ePlane[i].getFlyType())
                                        {
                                                case 1:ePlane[i].ChangePos(-dx,0);
                                                  break;
                                                case 2:ePlane[i].ChangePos(-2*dx,-dy);
                                                  break;
                                                case 3:ePlane[i].ChangePos(-2*dx,dy);
                                                  break;
                                                default: ePlane[i].ChangePos(-dx,0);
                                        }
                                if (ePlane[i].getXPos() <= 0 || ePlane[i].getYPos() <=0 ||
                                              ePlane[i].getYPos() >= m_maxY)  //if plane out of screen
                                    {                                          //dismiss it
                                            ePlane[i].ShowFalse();
                                    } //end if
                           }
            }//end for

            //enemy planes send bullets
            for (i=0;i<ePlane.length;i++)
            {
                    if (ePlane[i].IsShow() && ClockTag*(4-ePlane[i].getID())%240==0)
                    {
                            sendBullet(ePlane[i].getXPos(),ePlane[i].getYPos(),1);
                    }
            }//for

            //judge ePlane whether hitten
            for (i=0;i<ePlane.length;i++)
            {
                    if (ePlane[i].IsShow())
                    {
                        //whether hitten by the bullets?
                            for (int j=1;j<mybullet.length;j++)
                            {
                                    if (mybullet[i].IsShow() && Collision(ePlane[i],mybullet[j]))
                                    {
                                            mybullet[j].ShowFalse();
                                            ePlane[i].SetState(PlaneGameObject.BOMBING);
                                    }//if
                            }//for j
                            //whether collaps with my plane
                            if (Collision(ePlane[i],myplane))
                            {
                                    ePlane[i].SetState(PlaneGameObject.BOMBING);
                            myplane.ChangeHP(-1);
                        myplane.SetState(PlaneGameObject.HIT);
                        if (myplane.getHP() <= 0)
                                myplane.SetState(PlaneGameObject.BOMBING);
                         }
                    }//if
            }//for i

            //enemy boss send bullets
            if (eBoss.IsShow() && ClockTag%100==0)
            {
                    sendBullet(eBoss.getXPos(),eBoss.getYPos(),2);
            }
            //judge whether boss hitten
            if (eBoss.IsShow())
            {
                    for (i=1;i<mybullet.length;i++)
                    {
                            if (mybullet[i].IsShow() && Collision(eBoss,mybullet[i]))
                            {
                                    mybullet[i].ShowFalse();
                                eBoss.SetState(PlaneGameObject.HIT);
                                eBoss.ChangeHP(-1);
                                if (eBoss.getHP() == 0)
                                {
                                        eBoss.SetState(PlaneGameObject.BOMBING);
                                }
                            }//if
                    }//for
            }//if

             }//void run()

                 void paint(Graphics g)
                 {
                         int x,y;

                     //draw enmey boss
            if (eBoss.IsShow())
            {
                x = eBoss.getXPos();
                                 y = eBoss.getYPos();
                tempImage = eBoss.getImage();

                switch (eBoss.getState())
                {
                        case PlaneGameObject.ALIVE:
                                g.drawImage(tempImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                                break;
                        case PlaneGameObject.HIT:
                                g.drawImage(BossRedImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                                if (eBoss.getHP()>10){
                                        eBoss.SetState(PlaneGameObject.ALIVE);
                            }
                                break;
                        case PlaneGameObject.BOMBING:
                                g.drawImage(BossExpImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                                eBoss.ShowFalse();
                }
            }//if

                         //draw enemy planes
                         for (int i=0;i<ePlane.length;i++)
                         {
                        if (ePlane[i].IsShow())
                          {
                                     x = ePlane[i].getXPos();
                                         y = ePlane[i].getYPos();
                                     switch (ePlane[i].getState())
                                     {
                                             case PlaneGameObject.ALIVE:
                                                     tempImage = ePlane[i].getImage();
                                                         g.drawImage(tempImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                                                        break;
                                                case PlaneGameObject.BOMBING:
                                                        g.drawImage(ExpImage,x,y,Graphics.VCENTER|Graphics.HCENTER);
                                                        ePlane[i].ShowFalse();
                                                        break;
                                        }//switch
                                }//if
                         }//for


         } //void paint()
        } //class ePlaneScroller


class ImageScroller extends TimerTask
{
        private final Timer m_updateTimer = new Timer();
        private Image m_image;
        private final int m_screenWidth;
        private final int m_screenHeight;
        private final int m_imageWidth;
        private final int m_imageHeight;
        private final int m_leftOffset;
        private final int m_topOffset;
        private int m_x;
        private int m_y;

        private int ClockTag = 0;
//	private BackGround bground = new BackGround(1);

        public ImageScroller(Canvas screen,int interval)
        {

      //m_image = bground.getImage();

      try
      {
         m_image = Image.createImage("/BackGround01.png");
      }
      catch (Exception e)
      {
         m_image = null;
      }

      // calculate all the necessary constants
      m_screenWidth = screen.getWidth();
      m_screenHeight = screen.getHeight();
      m_imageWidth = m_image.getWidth();
      m_imageHeight = m_image.getHeight();
      m_leftOffset = (m_screenWidth - m_imageWidth)/2;
      m_topOffset = (m_screenHeight - m_imageHeight)/2;
      m_y = m_screenHeight-m_imageHeight;
      m_x = m_screenWidth;

      m_updateTimer.schedule(this, 0, interval);
   }

   /**
    * For each iteration of the scheduler, it updates the vertical position.
    */
   public void run()
   {
      // scroll
      m_x--;
      ClockTag++;
      if (ClockTag == 100)
      eBoss.ShowTrue();
   }

   /**
    * Draws the background on the Graphics object specified.
    *
    * @param g The Graphics object on which to draw the background.
    */
   public void paint(Graphics g)
   {
      // if we have reached the screen height then move back to bottom
      if (m_x <= 0)
      {
         g.drawImage(m_image,m_screenWidth,m_topOffset, Graphics.TOP|Graphics.RIGHT);
         m_x = m_screenWidth;
      }
      else if (m_x <= m_imageWidth)
      {
         g.drawImage(m_image,m_screenWidth+m_x,m_topOffset,Graphics.TOP|Graphics.RIGHT);
      }

      g.drawImage(m_image,m_x, m_topOffset, Graphics.TOP|Graphics.RIGHT);
   }
}//end of class ImageScroller






}//end of class PlaneGameCanvas

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -