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参照のままでも問題なく動きます。
・トップページへ戻る