「FIRST-自機の作成」の編集履歴(バックアップ)一覧はこちら
「FIRST-自機の作成」(2017/06/27 (火) 01:40:10) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*自機の作成
----
自分で操作する自機を作っていきます。
機能は上下左右の移動、描画(見た目)は青色の正方形(25x25)とし、
最初に言った通り[[DJGL-環境構築>>DJGL-環境構築]]でウインドウを開くところまでは出来ているものとします。
----
新規クラス「Player」を作成し、以下のソースコードを打ち込んで下さい。
初期配置や移動スピードとなる数値は自由に変更してもらって構いません。
**ソースコード
----
#highlight(linenumber,java){{
import java.awt.Color;
import java.awt.event.KeyEvent;
import densan.s.game.drawing.Drawer;
import densan.s.game.input.KeyInput;
import densan.s.game.object.GameObjectBase;
//自機
public class Player extends GameObjectBase{
public Player() {
super(25, 450, 25, 25); //左から「初期x座標」「初期y座標」「横の大きさ」「縦の大きさ」
}
//それぞれの方向キーを押している間、addX()の()内の数値だけx座標を移動させる。
//x座標が正の時は右方向、y座標が正の時は下方向に加算している。
@Override
public void update() {
if(KeyInput.isPressing(KeyEvent.VK_RIGHT)){
addX(5);
}
if(KeyInput.isPressing(KeyEvent.VK_LEFT)){
addX(-5);
}
if(KeyInput.isPressing(KeyEvent.VK_UP)){
addY(-5);
}
if(KeyInput.isPressing(KeyEvent.VK_DOWN)){
addY(5);
}
}
@Override
public void draw(Drawer d) {
//青色、BLUEの部分を変えると別の色に
d.setColor(Color.BLUE);
//長方形の描画、それぞれ上のsuperの値を使っている
d.fillRect(getX(), getY(), getWidth(), getHeight());
}
}
}}
----
続いて、実際にゲームをするシーン(ステージ1とか)を表すクラス「Stage」を作成します。
----
#highlight(linenumber,java){{
import densan.s.game.drawing.Drawer;
import densan.s.game.manager.Updatable;
//ゲームシーン
public class Stage implements Updatable{
//Playerクラスの変数playerを作成(これだけだと変数playerは空の状態)
Player player;
public Stage(){
//変数playerにPlayerのインスタンスを参照、今は言葉を理解出来なくて良い
player = new Player();
}
@Override
public void update() {
//Playerクラスのupdate()メソッドを使えるようにする
player.update();
}
@Override
public void draw(Drawer d) {
//Playerクラスのdraw()メソッドを使えるようにする(playerを描画する)
player.draw(d);
}
}
}}
----
最後に、環境構築の時に作ったメインクラス(環境構築では「TestGame」)のメインメソッドに変更を加える
----
#highlight(linenumber,java){{
public static void main(String[] args) {
GameManager gm = GameManager.getInstance();
gm.createFrame(800, 600, "テストゲーム");
//ここが変わっている
gm.setUpdatable(new Stage());
}
}}
----
これでメインクラスを実行させると、真っ白の画面に青い正方形だけが出てくる状態となり、
方向キーでそれぞれの移動に動かすことが出来ると思います。
**まとめ
----
次回はゴールの作成、およびゴールの衝突判定を行います。
自機のスピードや色を変えたり、文字を表示させたりして遊んでてください。
----
#comment_num2