📄 rpgcanvas.java
字号:
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 + -