MAGI JAVA -Make a game in Java-
JAVA Game作成講座 002回 上下移動を加える


RPGkouza002 ZIPファイル



[44 - 46 行目]
public BufferedImage playerGra=null;
public int pShift=0;
public int my=0;

public int my を追加します。
y方向の加速度を保持する変数になります。
すでにx方向の変数は mx として作られていますので、
それにならいます。

[132 - 149 行目]
//pShift=8; // ??????A if(isKeyCodePressed(KeyEvent.VK_UP)){

pShift=8;
my--;


}

if(isKeyCodePressed(KeyEvent.VK_DOWN)){

pShift=2;
my++;


}
if(isKeyCodePressed(KeyEvent.VK_LEFT)){

// ???????????
//muki = 2;
pShift=4;
// ????????
mx = mx - 1;


}

132行目 //pShift=8; 地味な変更点。ニュートラルにすると向きを上にしていたのを、
無効化します。これで向きを保持したまま動かすことができます。

134行目
"KeyEvent.VK_LEFT" の上に、二つキーイベントを追加しました。
VK_UPは↑を押したときに起きるイベント。
VK_DOWNは↓、ということです。
向きを表すpShiftを切り替え、
myをその方向へ加速させます。

「キーイベントとか訳分からないんだよ!」
という方も居ると思いますが、
こう設定するとこう動く、と覚えるしかありません。


[163 - 188 行目]
if(time % 2 == 0){

// ???????
x = x + mx;
y +=my; ←@yに加速度を加えています。
// ????????????A
if(x < 0){
x = 0;
mx = 0;

// ???E????????A
}else if(x > this.getWidth() - 32){
x = this.getWidth() - 32;
mx = 0;
}

if (y < 0) {
y=0;
my=0;
} else if (y > this.getHeight()-32){
y= this.getHeight()-32;
my=0;
}



// ?\???^?C?~???O
}else{

Aあと手を加えたのは、if (y < 0)以降の部分です。
xで行っている処理をそのままyに置き換えただけです。
画面端まで行ったら座標を固定、
それ以上先に進まないようにさせる処理です。

this.getWidth()を this.getHeight()にしていますが、
ゲーム画面の横幅ではなく縦幅を参照している、
ということです。

現時点では800*800になっているので、
58行目 super.setPreferredSize(new Dimension(800, 800));
Width参照のままでも問題なく動きます。



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