MAGI JAVA -Make a game in Java-
JAVA Game作成講座 005回
クラスに処理を分担する 2


kouza005 jarファイル



4回目から少しだけ改造したもの。
・pPlatformの座標を使ってpaintしている
・無限に加速するのをやめてスピードの上限を設定
・ARPanel内でやっていたx,yの増加、キー入力の受け付けがもういらないので、
コメントに変化させて無効化


[ARPanel のpaintをpPlatformから座標を取る形に変更] int picSize=32;
int oxy[]=gData.pPlatform.getxy(); //getxy()というのはPlayerPlatform内に作成してある。
//具体的な効果は、pPlatform内の変数 {x,y,shift}の3つを返すだけの処理。
if (oxy[2]==8) sy=148;
if (oxy[2]==2) sy=0;
if (oxy[2]==4) sy=48;
if (oxy[2]==6) sy=96;
//従来型はコメントにして無効化した //g.drawImage(gData.pPlatform.gra,x,y-16,x+picSize,y+picSize,sx,sy,sx+picSize,sy+picSize+16,this);
//以降この方式で描画する。oxy[0]はpPlatformのxがgetxyで入力済み。oxy[1]はyが入っている。 g.drawImage(gData.pPlatform.gra,oxy[0],oxy[1]-16,oxy[0]+picSize,oxy[1]+picSize,sx,sy,sx+picSize,sy+picSize+16,this);


[PlayerPlatform - gData.pPlatformクラス]
private int speedMax=8;
public void move(GameData gData) {

//移動速度に制限をかける
if (vx>=speedMax) vx=speedMax;
if (vx<=-speedMax) vx=-speedMax;
if (vy>=speedMax) vy=speedMax;
if (vy<=-speedMax) vy=-speedMax;

//speedMax +8 以上、マイナス方向は-8以上にvx,vyは増える事がなくなった。
//宇宙空間のゲームじゃないんだからこれでいい。

ARPanelでpPlatform.getxy()をやると、PlayerPlatformクラスからこの関数を呼び出す。
クラス内部でx,yはdoubleで数値を管理している。(int)型にキャストしてから返すわけ。
doubleで管理せずにintで管理すればもっと楽なんだけど、
そうできない理由がある。
次回の講座6でキーを離したときにプレイヤーの動きを止める処理を作るが、
摩擦を計算する数値が小数点以下の掛け算を行うからだ。

public int[] getxy() {

int gxy[]= {(int)x,(int)y,shift};
return gxy;


}


次は、無限移動を無くす。
移動キーを押していないときはピタッと止まるように変更する。
vx,vyを延々足し続ける方法をやめるわけだ。

必要になるのはキーを押しているか、押されていないかを判断する材料。
変更するのはPlayerPlatformクラスのkeyCheck関数。

・トップページへ戻る
inserted by FC2 system