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

📄 cman.java

📁 经典java手机游戏J2me(Rpj游戏)
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                                    }
                                }
                                if (!collide)
                                {
                                    m_posY += 16;      //滚屏
                                    m_nextCollideNPC = -1;
                                }
                            }
                        }
                    }
                }
                else        //在小地图中
                {
                    row = (m_posY + 40) / 16;
                    col = (m_posX + 12) / 16;
                    if (row + 1 <= 10 && col - 1 >= 0)
                    {
                        m_nextGrid = m_map.GetMapData(row + 1, col - 1);
                        if (m_collision.InCanGoGrid(m_nextGrid))    //是否碰撞
                        {
                            boolean collide = false; //是否碰撞
                            for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                            {
                                if (m_npc[i].getSceneID() == 2 &&   //是否是小场景中的一个NPC
                                    RectInRect(m_posX - 6 - step, m_posY + 16 + step / 2, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3, 8, 14))
                                {
                                    collide = true; //与第 i 个 NPC 碰撞
                                    m_nextCollideNPC = m_npc[i].getID();
                                    break;
                                }
                            }
                            if (!collide)
                            {
                                m_posX -= step;
                                m_posY += step / 2;
                                m_nextCollideNPC = -1;
                            }
                        }
                    }
                }
                m_offG.setClip(m_posX - 6, m_posY + 6, 24, 48);
                m_offG.drawImage(m_player, m_posX - 6 - m_moveFrame[0][m_nowFrame] * 24, m_posY + 6, 0);
                break;
            case 2:  //向右走
                if (m_collision.InBigMap())
                {
                    if (col + 1 + m_placeX <= m_map.getColNum())
                    {
                        m_nextGrid = m_map.GetMapData(row + m_placeY, col + 1 + m_placeX);
                        if (m_collision.InCanGoGrid(m_nextGrid))
                        {
                            if (col >= 5 && m_placeX + 1 < m_map.getColNum() - 10)
                            {
                                boolean collide = false; //是否碰撞
                                for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                                {
                                    if (m_npc[i].getSceneID() == 1 &&   //是否是大场景中的一个NPC
                                        RectInRect(m_posX - 6, m_posY + 16, 18, 32, m_npc[i].getPosX() + 6 - 16, m_npc[i].getPosY() + 3, 8, 14))
                                    {
                                        collide = true; //与第 i 个 NPC 碰撞
                                        m_nextCollideNPC = m_npc[i].getID();
                                        break;
                                    }
                                }
                                if (!collide)
                                {
                                    m_placeX++;      //滚屏
                                    m_nextCollideNPC = -1;
                                }
                            }
                            else
                            {
                                boolean collide = false; //是否碰撞
                                for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                                {
                                    if (m_npc[i].getSceneID() == 1 &&   //是否是大场景中的一个NPC
                                        RectInRect(m_posX - 6 + 16, m_posY + 16, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3, 8, 14))
                                    {
                                        collide = true; //与第 i 个 NPC 碰撞
                                        m_nextCollideNPC = m_npc[i].getID();
                                        break;
                                    }
                                }
                                if (!collide)
                                {
                                    m_posX += 16;      //滚屏
                                    m_nextCollideNPC = -1;
                                }
                            }
                        }
                    }
                }
                else
                {
                    row = (m_posY + 40) / 16;
                    col = (m_posX + 12) / 16;
                    if (row + 1 <= 10 && col + 1 <= 12)
                    {
                        m_nextGrid = m_map.GetMapData(row + 1, col + 1);
                        if (m_collision.InCanGoGrid(m_nextGrid))
                        {
                            boolean collide = false; //是否碰撞
                            for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                            {
                                if (m_npc[i].getSceneID() == 2 &&   //是否是小场景中的一个NPC
                                    RectInRect(m_posX - 6 + step, m_posY + 16 + step / 2, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3, 8, 14))
                                {
                                    collide = true; //与第 i 个 NPC 碰撞
                                    m_nextCollideNPC = m_npc[i].getID();
                                    break;
                                }
                            }
                            if (!collide)
                            {
                                m_posX += step;
                                m_posY += step / 2;
                                m_nextCollideNPC = -1;
                            }
                        }
                    }
                }
                m_offG.setClip(m_posX - 6, m_posY + 6, 24, 48);
                m_offG.drawImage(m_player, m_posX - 6 - m_moveFrame[1][m_nowFrame] * 24, m_posY + 6, 0);
                break;
            case 3:  //向上走
                if (m_collision.InBigMap())
                {
                    if (row - 1 + m_placeY >= 0)
                    {
                        m_nextGrid = m_map.GetMapData(row - 1 + m_placeY, col + m_placeX);
                        if (m_collision.InCanGoGrid(m_nextGrid))
                        {
                            if (row <= 6 && m_placeY - 1 >= 0)
                            {
                                boolean collide = false; //是否碰撞
                                for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                                {
                                    if (m_npc[i].getSceneID() == 1 &&   //是否是大场景中的一个NPC
                                        RectInRect(m_posX - 6, m_posY + 16, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3 + 16, 8, 14))
                                    {
                                        collide = true; //与第 i 个 NPC 碰撞
                                        m_nextCollideNPC = m_npc[i].getID();
                                        break;
                                    }
                                }
                                if (!collide)
                                {
                                    m_placeY--;      //滚屏
                                    m_nextCollideNPC = -1;
                                }
                            }
                            else
                            {
                                boolean collide = false; //是否碰撞
                                for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                                {
                                    if (m_npc[i].getSceneID() == 1 &&   //是否是大场景中的一个NPC
                                        RectInRect(m_posX - 6, m_posY + 16 - 16, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3, 8, 14))
                                    {
                                        collide = true; //与第 i 个 NPC 碰撞
                                        m_nextCollideNPC = m_npc[i].getID();
                                        break;
                                    }
                                }
                                if (!collide)
                                {
                                    m_posY -= 16;      //滚屏
                                    m_nextCollideNPC = -1;
                                }
                            }
                        }
                    }
                }
                else
                {
                    row = (m_posY + 40) / 16;
                    col = (m_posX + 12) / 16;
                    if (row - 1 >= 0 && col + 1 <= 12)
                    {
                        m_nextGrid = m_map.GetMapData(row - 1, col + 1);
                        if (m_collision.InCanGoGrid(m_nextGrid))
                        {
                            boolean collide = false; //是否碰撞
                            for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                            {
                                if (m_npc[i].getSceneID() == 2 &&   //是否是小场景中的一个NPC
                                    RectInRect(m_posX - 6 + step, m_posY + 16 - step / 2, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3, 8, 14))
                                {
                                    collide = true; //与第 i 个 NPC 碰撞
                                    m_nextCollideNPC = m_npc[i].getID();
                                    break;
                                }
                            }
                            if (!collide)
                            {
                                m_posX += step;
                                m_posY -= step / 2;
                                m_nextCollideNPC = -1;
                            }
                        }
                    }
                }
                m_offG.setClip(m_posX - 6, m_posY + 6, 24, 48);
                m_offG.drawImage(m_player, m_posX - 6 - m_moveFrame[2][m_nowFrame] * 24, m_posY + 6, 0);
                break;
            case 4:  //向左走
                if (m_collision.InBigMap())
                {
                    if (col - 1 + m_placeX >= 0)
                    {
                        m_nextGrid = m_map.GetMapData(row + m_placeY, col - 1 + m_placeX);
                        if(m_collision.InCanGoGrid(m_nextGrid))
                        {
                            if (col <= 5 && m_placeX - 1 >= 0)
                            {
                                boolean collide = false; //是否碰撞
                                for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                                {
                                    if (m_npc[i].getSceneID() == 1 &&   //是否是大场景中的一个NPC
                                        RectInRect(m_posX - 6, m_posY + 16, 18, 32, m_npc[i].getPosX() + 6 + 16, m_npc[i].getPosY() + 3, 8, 14))
                                    {
                                        collide = true; //与第 i 个 NPC 碰撞
                                        m_nextCollideNPC = m_npc[i].getID();
                                        break;
                                    }
                                }
                                if (!collide)
                                {
                                    m_placeX--;      //滚屏
                                    m_nextCollideNPC = -1;
                                }
                            }
                            else
                            {
                                boolean collide = false; //是否碰撞
                                for (int i = 0; i < m_npc.length; i++)  //与当前场景中所有 NPC 都进行碰撞检测
                                {
                                    if (m_npc[i].getSceneID() == 1 &&   //是否是大场景中的一个NPC
                                        RectInRect(m_posX - 6 - 16, m_posY + 16, 18, 32, m_npc[i].getPosX() + 6, m_npc[i].getPosY() + 3, 8, 14))
                                    {
                                        collide = true; //与第 i 个 NPC 碰撞
                                        m_nextCollideNPC = m_npc[i].getID();
                                        break;
                                    }
                                }
                                if (!collide)

⌨️ 快捷键说明

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