MENU

Code of Genius

定期コースに
申し込む
開催中の
イベント

オリジナル作品紹介「横スクロールアクションゲーム」

コラム記事
オリジナル作品紹介「横スクロールアクションゲーム」

コードオブジーニアスでは、「プログラミングを通して、アイデアをカタチにする」をテーマにプログラミング学習を進めています。

プログラミングを知っているだけではなく、プログラミングを使って何かを創り出せるような人になることを目指して日々プログラミング学習に励んでいます。

各プログラミング言語を学習したタイミングで、それぞれオリジナル作品を作ることにチャレンジしています。

ここでは、生徒が実際に作ったオリジナル作品を紹介していきます。

作品紹介

今回紹介する作品は、以下のようなゲームです。

作品名 横スクロールアクションゲーム
作者 Y.H.さん(高校2年生)
プログラミング言語 JavaScript
どんなゲーム? 横スクロールアクションゲームです。星や宝箱を集め、一定スコア以上を取るとゴールできます。途中の仕掛けが楽しいです。

実際の作品はこちら。

さらに作品について掘り下げて見ていきたいと思います。
このゲーム、どんなプログラムの工夫がされているのでしょうか?
ここからは、プログラムで工夫されているところについて紹介したいと思います。

プログラムの工夫

消える足場

プレイヤーが乗ると、一定時間後に消える足場があります。消える足場
消える足場は、あらかじめマップレイヤーとして作成してあります。
プレイヤーが消える足場にぶつかったら、1秒後に足場を消すタイマー処理を呼び出すようにセットします。
これにより、プレイヤーが足場に触れると、1秒後に足場が消える動きを実現しています。
衝突処理と、タイマー処理をうまく組み合わせてプログラムが作られています。

  
    // 衝突処理の設定部分
    this.physics.add.collider(this.player,this.bigBallLayer,this.hitBigBall,null,this);

// --------------------------------------------

// 衝突後に呼ばれるメソッド
mainScene.hitBigBall = function(player,ball){
    // タイマー処理の設定、1秒後に、メソッド「removeBigBall」を呼び出す
    this.time.addEvent({
        delay:1000,
        callback: this.removeBigBall,
        args: [ball],
        loop:false,
        callbackScope:this
    });
}

// 衝突後にタイマー処理で呼ばれるメソッド
mainScene.removeBigBall = function(ball) {
    this.map.removeTile(ball);
};
  

アイテムを取るとスピードアップ

ゴール手前の谷は、通常だと飛び越えることができません。谷の手前にあるアイテムを取得してスピードアップをすることで飛び越えることができるようになります。
スピードアップ
プログラム自体はとても単純です。アイテムを取るとプレイヤーのスピードをアップします。
プログラムは単純でも、プレイヤーの速度を速くすることで、飛び越えられなかった谷を越えられるようになるというアイデアが素晴らしいと思いました。

  
// プレイヤーとアイテムが衝突した時に呼ばれるメソッド
mainScene.hitGem = function(player,gem){
    // アイテムを削除
    gem.destroy();
    // プレイヤーの速度を速くする
    this.runSpeed = 500;
}
  

アイテムの登場の仕方

最後は、アイテムの登場についての演出です。アイテム登場
ただアイテムをパッと登場させることもできますが、ここではひと手間加えて、少しアイテムが上にとんでから落ちます。
こちらもプログラムとしては、そこまで複雑ではないですが、このひと手間でゲームとしてのクオリティが格段と上がります。
こういった細かいところまで作りこめるのは素晴らしいです。

  
// アイテムを出現させるメソッド
mainScene.createGem = function(player,box){
    // アイテムの出現位置を計算。ここでは、ボックスの少し上に配置。
    var x = box.body.center.x;
    var y = box.body.top - 35;
    var gem = this.gemGroup.create(x,y,'gem70')

    // アイテムがボックスにぶつかった時の跳ね返りを設定
    gem.setBounce(0.5)
    gem.body.setSize(50,50)
    gem.setDisplaySize(80,80)

    // アイテムに上方向の加速度を設定。これでアイテムが少し跳ねているように見えます
    gem.setVelocityY(-100)

}
  

上記の工夫はどれもレッスンの中で学習したものではなく、学習した内容を応用して、自分で考えたアイデアです。
プログラムの基礎が分かれば、それを応用して使えるようになります。

気になる方は、以下から定期受講コースの詳細をご確認ください。


お気軽にご参加くださいPROGRAMMING CHALLENGE

プログラミング教室への入会を
ご検討中の
中学生・高校生・保護者様へ

コードオブジーニアスでは、プログラミング学習を通した人材育成を意識して行っております。例えば、プログラミングの書き方は千差万別でいろいろな書き方があります。では、どんな書き方でも動けば良いのか?といえば決してそうではありません。他の人が見ても見やすい、処理が早く終えることができる等、良い書き方が存在します。これは武道や茶道といった「道」を極めることと似ているのかもしれません。

今、AI時代が到来しています。何ができるか?よりも、もっと大切なことを若者が大好きな方法で伸ばしてあげるのが大人の役割に感じております。一人ひとりの未来を創り出すのは、あくまで一人ひとりの行動と決断の結果です。未来に向けたチャレンジを私たちはお待ちしております。

ご相談はお気軽にどうぞ

お問い合わせ

お電話はこちら(受付:10時~19時)

050-3138-2090
PAGE
TOP