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

📄 rpgcanvas.java

📁 J2ME开发的手机游戏需要安装诺基亚手机模拟器才能正常运行
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                if (mrole.directionup > 15)
                    mrole.directionup = 12;

                if (mrole.y - 4 <= 0)
                    mrole.y = 0;
                else
                    mrole.move(0, -4);

                //			    屏幕向上移动算法
                if (screeny - 4 > 0)
                    screenmove(0, -4);
                else
                    screeny = 0;
            }

            //			向下按键
            if ((key & DOWN_PRESSED) != 0) {
                //			    主角向下移动
                mrole.setFrame(mrole.directiondown++);
                if (mrole.directiondown > 3)
                    mrole.directiondown = 0;

                if (mrole.y + 24 + 4 >= imgbackgroundheight)
                    mrole.y = imgbackgroundheight - 24;
                else
                    mrole.move(0, 4);

                //					屏幕向下移动算法
                if (screeny + 4 + screenheight < imgbackgroundheight)
                    screenmove(0, 4);
                else
                    screeny = imgbackgroundheight - 3 - 177;
            }

            //			向左按键
            if ((key & LEFT_PRESSED) != 0) {

                //			    主角向左移动
                mrole.setFrame(mrole.directionleft++);
                if (mrole.directionleft > 7)
                    mrole.directionleft = 4;

                if (mrole.x - 4 <= 0)
                    mrole.x = 0;
                else
                    mrole.move(-4, 0);

                //			    屏幕向左移动算法
                if (screenx - 4 > 0)
                    screenmove(-4, 0);
                else
                    screenx = 0;
            }

            //			向右按键
            if ((key & RIGHT_PRESSED) != 0) {

                //			    主角向右移动
                mrole.setFrame(mrole.directionright++);
                if (mrole.directionright > 11)
                    mrole.directionright = 8;
                if (mrole.x >= imgbackgroundwidth - 16 - 4)
                    mrole.x = imgbackgroundwidth - 16;
                else
                    mrole.move(4, 0);

                //					屏幕向右移动算法
                if (screenx + 4 + screenwidth < imgbackgroundwidth)
                    screenmove(4, 0);
                else
                    screenx = imgbackgroundwidth - 4 - screenwidth;
            }
        }
        /*
         * 
         */
        else if (inputmode == 1) {

            if ((key & DOWN_PRESSED) != 0) {
                selecty += 10;
                if (selecty >= 162) {
                    selecty = 162;
                }
            }
            if ((key & UP_PRESSED) != 0) {
                selecty -= 10;
                if (selecty <= 152) {
                    selecty = 152;
                }
            }
            if ((key & FIRE_PRESSED) != 0) {
                if (selecty == 152) {
                    mainroleanswer = true;
                    missionmessage = "帮助老人找他的猫";

                }

                if (selecty == 162)
                    mainroleanswer = false;
                inputmode = 0;
            }
        }
        /*进入后按键控制主角移动的算法
         * 
         */
        else if (inputmode == 2) {
            if ((key & UP_PRESSED) != 0) {
                mrole.setFrame(mrole.directionup++);
                if (mrole.directionup > 15)
                    mrole.directionup = 12;
                if (mrole.roomy - 4 <= 0)
                    mrole.roomy = 0;
                else
                    mrole.moveroom(0, -4);
            }

            if ((key & DOWN_PRESSED) != 0) {
                mrole.setFrame(mrole.directiondown++);
                if (mrole.directiondown > 3)
                    mrole.directiondown = 0;
                if (mrole.roomy + 24 + 4 >= 177) {
                    mrole.roomy = 177 - 24;
                } else
                    mrole.moveroom(0, 4);
            }
            if ((key & LEFT_PRESSED) != 0) {
                mrole.setFrame(mrole.directionleft++);
                if (mrole.directionleft > 7)
                    mrole.directionleft = 4;
                if (mrole.roomx - 4 <= 0)
                    mrole.roomx = 0;
                else
                    mrole.moveroom(-4, 0);
            }
            if ((key & RIGHT_PRESSED) != 0) {
                mrole.setFrame(mrole.directionright++);
                if (mrole.directionright > 11)
                    mrole.directionright = 8;
                if (mrole.roomx >= 180 - 16 - 4)
                    mrole.roomx = 180 - 16;
                else
                    mrole.moveroom(4, 0);
            }

        }
    }
 
    
    void collidetest() {
        mrole.setPosition(mrole.x, mrole.y);
        //		mrole.setPosition(mrole.roomx, mrole.roomy);

//        判断是否碰撞了小猫
        if (mrole.collidesWith(load.property[0], true)) {
            screenunmove();
            mrole.unmove();
            mrole.setPosition(mrole.x, mrole.y);
            catchcat = true;

        } else {
            catchcat = false;
        }
        

//        判断是否碰撞了农场上的建筑物
        if (mrole.collidesWith(load.imgmap1, true)) {
            screenunmove();
            mrole.unmove();
            mrole.setPosition(mrole.x, mrole.y);
        }

        if (mrole.collidesWith(load.maproom1layer2, false)) {
            scene = 1;
            inputmode = 0;
        }
        if (mrole.collidesWith(load.maproom1layer1, true)) {
            mrole.unmoveroom();
        }
        if (mrole.collidesWith(load.imgmap3, true)) {
            scene = 2;
            inputmode = 2;
            			load.maproom1layer2.setVisible(true);
            			load.maproom1layer1.setVisible(true);
            			load.maproom1ground.setVisible(true);
        }
        for (int i = 0; i < load.vectornpc.size(); i++) {
            Npc npc = (Npc) load.vectornpc.elementAt(i);
            if (mrole.collidesWith(npc, true)) {
                tempx = mrole.x;
                tempy = mrole.y;
                mrole.unmove();
                screenunmove();
                mrole.setPosition(mrole.x, mrole.y);

                if (npc.name == "老人" && catchcat2 == true) {
                    String temp2 = npc.name + ":" + npc.message2;//加入npc对话
                    vectormessage.addElement(temp2);
                    Image tempimage2 = npc.img;
                    vectorpicture.addElement(tempimage2);
                    missionmessage = "任务完成";
                } else if (npc.name == "老人") {
                    String temp = npc.name + ":" + npc.message1;//加入npc对话
                    vectormessage.addElement(temp);
                    Image tempimage = npc.img;
                    vectorpicture.addElement(tempimage);
                    iscollide = true;
                } else {
                    String temp = npc.name + ":" + npc.message1;//加入npc对话
                    vectormessage.addElement(temp);
                    Image tempimage = npc.img;
                    vectorpicture.addElement(tempimage);
                }
            }
        }
    }
    
 /**屏幕移动函数
  * 
  */
    public void screenmove(int increasex, int increasey) {

		screenx = screenx + increasex;
		screeny = screeny + increasey;
		lastscreenx = increasex;
		lastscreeny = increasey;
	}

/**屏幕负移动函数
 * 
 */
	void screenunmove() {
		screenmove(-lastscreenx, -lastscreeny);
	}

/**添加房屋场景的各个场景图
 */
	private void append2() {
//	    添加主角
	    lmscene2.append(mrole);
//	    添加房屋内的场景图
	    lmscene2.append(load.maproom1layer2);
		lmscene2.append(load.maproom1layer1);		
		lmscene2.append(load.maproom1ground);
    }

/**添加农场场景的方法
 */
    public void append()
	{
//	    添加主角
	    lmscene1.append(mrole);
//	    添加NPC
	    lmscene1.append(load.npc[0]);
		lmscene1.append(load.npc[1]);
		lmscene1.append(load.npc[2]);
//		添加小任务NPC
		lmscene1.append(load.property[0]);
	    //添加栅栏图
	    lmscene1.append(load.imgmap1);
	    lmscene1.append(load.imgmap2);
		lmscene1.append(load.imgmap3);
	    //添加背景图
		lmscene1.append(load.mapbackground);
		
	}
    
    /**
     * 线程run方法
     */
    public void run() {
        // TODO 自动生成方法存根
        while(true) {
//            取下条信息的方法
            nextmessage();
//          按键输入方法
            input();
            
//            碰撞检测方法
			collidetest();

//          画屏幕 
            draw();
            
            
			try {
				Thread.sleep(20);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
        }
    }

}

⌨️ 快捷键说明

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