static final int STATE_NON_ACTIVE = 0;
static final int STATE_ACTIVE = 1;
long x, y; // 位置(×100)
int dir; // 角度0〜360度
int speed; // 速度
int state; // 状態
int size; // 大きさ(ヒットテストに利用)
//* -------------------------------------------------------- */
public BaseObj() {
x = 0;
y = 0;
dir = 0; // degree 0->360
speed = 0;
state = STATE_NON_ACTIVE;
}
//* -------------------------------------------------------- */
public void init( int ix, int iy, int idir, int ispeed, int isize ) {
state = STATE_ACTIVE;
// 登場位置の確認
if( ix < 0 || ix > applet.SCREEN_DX ) x = 0; else x = ix * applet.MAGNIFI;
if( iy < 0 || iy > applet.SCREEN_DY ) y = 0; else y = iy * applet.MAGNIFI;
dir = (idir % 360);
if( dir < 0 ) {
dir = 360 + dir;
}
speed = ispeed;
size = isize;
}
//* -------------------------------------------------------- */
public int rotate( int degree ) {
dir += degree;
dir %= 360;
dir -= (dir % DGREE_RESOLUSION); // 分解能で割る
if( dir < 0 ) {
dir = 360 + dir;
}
return dir;
}
//* -------------------------------------------------------- */
public void setxy( int xx, int yy ) {
x = xx * applet.MAGNIFI;
y = yy * applet.MAGNIFI;
}
//* -------------------------------------------------------- */
public boolean hittest( BaseObj dst ) {
long dx = (x / applet.MAGNIFI) - (dst.x / applet.MAGNIFI);
long dy = (y / applet.MAGNIFI) - (dst.y / applet.MAGNIFI);
long dist = size + dst.size;
//* -------------------------------------------------------- */
public int getx() { return (int)(x / applet.MAGNIFI); }
public int gety() { return (int)(y / applet.MAGNIFI); }
public int getspeed() { return speed; }
public int getdir() { return dir; }
//* -------------------------------------------------------- */
public int distanceto( int dstx, int dsty ) {
int srcx = (int)( x / applet.MAGNIFI );
int srcy = (int)( y / applet.MAGNIFI );
int dx = Math.abs( dstx - srcx );
int dy = Math.abs( dsty - srcy );
return (int)Math.sqrt( dx*dx + dy*dy );
}
//* -------------------------------------------------------- */
public int dirto( int dstx, int dsty ) {
int distance = distanceto( dstx, dsty );
int srcx = (int)(x / applet.MAGNIFI);
int srcy = (int)(y / applet.MAGNIFI);
int dx = dstx - srcx;
int cos;
int ii;