📄 rollercanvas.java
字号:
// Decompiled by DJ v3.8.8.85 Copyright 2005 Atanas Neshkov Date: 2005-8-14 11:30:47
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: RollerCanvas.java
package stone;
import com.nokia.mid.ui.*;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Random;
import javax.microedition.lcdui.*;
// Referenced classes of package stone:
// TonePlayer, RollerLogic
public class RollerCanvas extends FullCanvas
{
class Col
{
int x;
int y;
int z;
int mx;
int my;
int pow;
int pow2;
int team;
int rangex;
int rangey;
int rangez;
Col()
{
}
}
class Thing
{
int id;
int life;
int team;
int dirx;
int aidirx;
int x;
int y;
int z;
int walktox;
int walktoy;
int backupx;
int backupy;
int X;
int Y;
int Z;
int mx;
int my;
int mz;
int imageno;
int skin;
int action;
int backupaction;
int anim;
int frames;
int life2;
int handlex;
int handley;
int invtimer;
Thing()
{
}
}
RollerCanvas(RollerLogic m_Logic)
{
bPaused = false;
animationThread = null;
bPRequested = false;
m_LoseFocus = false;
maxprioritylist = 100;
prioritylist = new byte[maxprioritylist + 1];
maxsprite = 180;
sprite = new Image[maxsprite + 1];
ranObj = new Random();
vieww = 180;
viewh = 210;
testx = 0;
testy = 0;
timexxx = 0;
time200 = 0;
time100 = 0;
time50 = 0;
time40 = 0;
time30 = 0;
time20 = 0;
time10 = 0;
time8 = 0;
time12 = 0;
time5 = 0;
time2 = 0;
showstageclear = 0;
showready = 0;
showdie = 0;
showfadeout = 0;
showfadein = 0;
showgameover = 0;
showcongratulations = 0;
showtimeover = 0;
showtitle = 0;
titlex = 0;
stage = 0;
lives = 0;
DEAD = 0;
GIRL1 = 1;
DUMMY = 2;
TREE = 3;
CONTROL = 4;
DROP = 201;
SLASH1 = 202;
SPLASH = 203;
JUMP = 204;
RUNNINGSTAB = 205;
STAB = 206;
STUN = 207;
PK = 208;
BARGE = 209;
GIRL2 = 301;
SOLDIER1 = 302;
BOSS1 = 303;
BOSS2 = 304;
BOSS3 = 305;
BOSS4 = 306;
RUNNINGATTACK = 307;
JUMPATTACK = 308;
SHORTATTACK = 309;
WAIT = 101;
BOSSWAIT = 102;
gridx = 10;
gridy = 10;
myman = 0;
arealeft = 50;
areatop = 50;
arearight = arealeft + 1000;
areabottom = areatop + 260;
areaw = arearight - arealeft;
areah = areabottom - areatop;
maxmen = 30;
usedmen = 0;
maxlist = 1000;
maxcol = 3;
col = new Col[maxcol + 1];
list = new byte[maxlist + 1];
man = new Thing[maxmen + 1];
maxdrawlist = 150;
useddrawlist = 0;
drawlist = new Thing[maxdrawlist + 1];
bit = new byte[151][51];
numsprite = new Image[12];
loadbarw = 0;
loadstage = 0;
imageReady = false;
this.m_Logic = m_Logic;
}
void DoAIWalk(Thing m, int mx, int my)
{
int attack = 0;
int rangey = 5;
if(ailevel > 1)
{
mx++;
my++;
}
if(ailevel > 2)
my++;
int b = 0;
int t = myman;
m.frames++;
if(m.frames == 1)
{
int left = 0;
int right = 0;
if(m.x < man[t].x)
left -= GetRandomNo(4);
else
right -= GetRandomNo(4);
for(int i = 1; i <= usedmen; i++)
{
if(man[i].action <= 0)
continue;
if(man[i].aidirx < 0)
left++;
if(man[i].aidirx > 0)
right++;
}
m.aidirx = -1;
if(left > right)
m.aidirx = 1;
}
if(time20 == 1)
{
m.walktox = man[t].x + m.dirx * 80 + GetRandomNo(30);
m.walktoy = (man[t].y - 20) + GetRandomNo(40);
}
if(bit[m.x / gridx][m.y / gridy] * gridy > m.z)
{
if(bit[m.x / gridx][m.y / gridy] * gridy > 0)
{
m.x -= m.mx;
m.mx = 0;
}
if(bit[m.x / gridx][m.y / gridy] * gridy > 0)
{
m.y -= m.my;
m.my = 0;
}
}
if(bit[m.x / gridx][m.y / gridy] * gridy > m.z)
{
System.out.println(String.valueOf(String.valueOf((new StringBuffer("floor=")).append(bit[m.x / gridx][m.y / gridy]).append(" m.z=").append(m.z))));
InitAction(m, DROP);
return;
}
b = bit[(m.x + m.mx) / gridx][(m.y + m.my) / gridy] * gridy;
if(b < m.z && b > m.z - 50)
{
InitAction(m, JUMP);
m.my /= 2;
}
if(m.x == m.backupx && m.y == m.backupy)
{
m.walktoy = (short)(m.y + 20);
if(time20 > 10)
m.walktoy = (short)(m.y - 20);
}
m.backupx = m.x;
m.backupy = m.y;
m.mx = 0;
m.my = 0;
m.dirx = 1;
if(m.x > man[t].x)
m.dirx = -1;
if(m.x + mx < m.walktox)
m.mx = mx;
if(m.x - mx > m.walktox)
m.mx = -mx;
if(m.y + my < m.walktoy)
m.my = my;
if(m.y - my > m.walktoy)
m.my = -my;
if(m.mx != 0 || m.my != 0)
m.imageno = m.skin + walkanim;
if(ailevel == 1 && time5 == 1)
attack = 1;
if(ailevel == 2 && (time5 == 1 || time5 == 3))
attack = 1;
if(ailevel == 3)
attack = 1;
if(attack > 0 && man[myman].action != PK)
{
int rangex;
if(GetRandomNo(100) < 15)
{
rangex = 150;
if(m.backupaction >= BOSS1)
rangex = 100;
if(m.backupaction == BOSS3)
rangex = 0;
if(m.x + rangex > man[t].x && m.x - rangex < man[t].x && m.y + rangey > man[t].y && m.y - rangey < man[t].y)
{
InitAction(m, BARGE);
if(ailevel == 1 && m.backupaction < BOSS1 && GetRandomNo(10) < 7)
m.frames -= 6 + GetRandomNo(3);
if(ailevel == 2 && m.backupaction < BOSS1 && GetRandomNo(10) < 5)
m.frames -= 3 + GetRandomNo(3);
}
}
rangex = 50;
if(m.backupaction >= BOSS1)
rangex = 60;
if(m.backupaction == BOSS3)
rangex = 80;
if(m.x + rangex > man[t].x && m.x - rangex < man[t].x && m.y + rangey > man[t].y && m.y - rangey < man[t].y)
{
InitAction(m, SLASH1);
if(ailevel == 1 && m.backupaction < BOSS1 && GetRandomNo(10) < 8)
m.frames -= 7 + GetRandomNo(3);
if(ailevel == 2 && m.backupaction < BOSS1 && GetRandomNo(10) < 7)
m.frames -= 4 + GetRandomNo(3);
if(m.backupaction == BOSS1)
m.frames -= 2;
}
}
}
public synchronized void loadImage()
{
try
{
switch(loadstage)
{
default:
break;
case 0: // '\0'
sprite[0] = LoadImage("/blank.png");
sprite[1] = LoadImage("/title.png");
sprite[2] = LoadImage("/title2.png");
sprite[11] = LoadImage("/ready.png");
break;
case 1: // '\001'
sprite[12] = LoadImage("/gameover.png");
sprite[13] = LoadImage("/stageclear.png");
sprite[16] = LoadImage("/congratulations.png");
break;
case 2: // '\002'
for(int i = 0; i <= 9; i++)
numsprite[i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/num")).append(i).append(".png"))));
numsprite[10] = LoadImage("/score.png");
break;
case 3: // '\003'
for(int i = 1; i <= 10; i++)
sprite[20 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/back")).append(i).append(".png"))));
for(int i = 11; i <= 19; i++)
sprite[20 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/back")).append(i).append(".png"))));
break;
case 4: // '\004'
for(int i = 21; i <= 22; i++)
sprite[20 + i] = LoadImage("/back21.png");
for(int i = 1; i <= 5; i++)
sprite[50 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/area")).append(i).append(".png"))));
break;
case 5: // '\005'
for(int i = 1; i <= 9; i++)
sprite[100 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/a")).append(i).append(".png"))));
for(int i = 1; i <= 9; i++)
sprite[120 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/a")).append(i).append(".png"))));
break;
case 6: // '\006'
for(int i = 1; i <= 7; i++)
sprite[130 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/c")).append(i).append(".png"))));
for(int i = 1; i <= 7; i++)
sprite[140 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/e")).append(i).append(".png"))));
break;
case 7: // '\007'
for(int i = 1; i <= 7; i++)
sprite[150 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/e")).append(i).append(".png"))));
for(int i = 1; i <= 8; i++)
sprite[160 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/e")).append(i).append(".png"))));
break;
case 8: // '\b'
for(int i = 1; i <= 7; i++)
sprite[170 + i] = LoadImage(String.valueOf(String.valueOf((new StringBuffer("/e")).append(i).append(".png"))));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -