Go言語 ポートフォリオ

【第3回】Go言語(engo)でゲーム作成してみた【機能拡張してみる】

【第3回】Go言語でゲーム作成してみた

こんにちは!今回はGo言語を使ったゲーム作成の第3回です。第3回では、敵キャラ、文字表示、リトライ機能を追加していきます。
 
 
まだ第1回第2回読んでいない人は、先に読むことをおすすめします!

【第1回】Go言語でゲーム作成してみた
参考【第1回】Go言語(ゲームエンジン:engo)でゲームを作成してみた

こんにちは!近年、多くのプログラミング言語の中で「稼げる言語」として人気が爆発しているのは、Googleが開発したGo言語です。本記事では、2Dゲームエンジンのengoを使用してゲームを作成していきます。プログラミング初心者の方でも分かりやすいように、ソースコードの説明もしっかり行いたいと思います。

続きを見る

【第2回】Go言語でゲーム作成してみた
参考【第2回】Go言語(engo)でゲーム作成してみた【実装〜完成まで】

こんにちは!近年、多くのプログラミング言語の中で「稼げる言語」として人気が爆発しているのは、Googleが開発したGo言語です。そんなGo言語を使って、ゲームを作成してみた記事の第2回です。プログラミング初心者の方でも分かりやすいように、ソースコードの説明もしっかり行いたいと思います。

続きを見る

それではいきましょう!

ディレクトリ構成

今回は、新しく「enermySystem」と「hudTextSystem」を追加します。

敵キャラの作成

パックンフラワーの作成

パックンフラワー

敵キャラは、スーパーマリオブラザーズでお馴染みのパックンフラワーを作成します。

グローバル変数、Entity、System

まずは、グローバル変数、Entity、Systemなど必要な変数を定義します。また、リソースの都合上、画像サイズと実物のサイズがイコールではないので、縦横それぞれ余分サイズを定義します。

New()

パックンフラワーは土管上に作成します。パックンフラワーに触れるとゲームオーバーになるように、作成時に位置を記録します。

Update()

 

パックンフラワーは土管から出てきたり、引っ込んだりを周期的に繰り返します。プレイヤーの左右の足がパックンフラワーに触れたらゲームオーバーです。

 
 
Update()は毎フレームで呼び出されます。そこで、フレーム毎にカウントをインクリメントすることで、パックンフラワーの動きを制御します。最後にカウントを0にリセットします。

PlayerSystemの編集

プレイヤーとパックンフラワーが触れた時は、「GameOver」の表示と、PlayerSystemの削除を行います。PlayerSystemに新しく「PlayerDie()」を設けます。

 
 
落とし穴に落ちた場合も同じくPlayerDie()を呼び出すように修正します。

 
 
「ifGameOver」はグローバル変数で定義します。

Worldに追加

EnermySystemをWorldに追加して完了です。

テキストの作成

GAMESTART!

次に画面に表示するテキストを作成します。まずはキーボード同様、main.goのSetup()で、事前にフォントをロードします。使用フォントはGo言語独自のフォントです。

フォント読込

グローバル変数、Entity、System

同じく定義していきます。今回は以下の3つのテキストを表示します。

・GAME START!
・GOAL!!
・GAME OVER

New()

表示テキストは、場面によって文言を変化させたいので、New()には最低限の処理のみ記述します。ゲーム開始時は「GAME START!」を表示します。

TextInit()

New()はSystemをSceneに追加した時に呼び出される関数です。いつでも初期化を実行できるように、代わりにTextInit()を設けます。さらに、テキストNoで表示テキストが変更されるようにします。

 
 
フォントは、事前にロードした「go.ttf」をURLに指定して、font.CreatePreload()を実行します。最後にロードしたフォントをRenderComponentに設定して完了です。

Worldに追加

同じくWorldにSystemを追加して完了です。

リトライ機能の作成

ゲームオーバーになった時と、ゴールした時にリトライできる機能を追加していきます。

playerSystemの編集

リトライ時はEntityの値を初期化したいので、hudTextSytemと同じようにPlayerInit()を設けます。

 
 
最後に、カメラ移動の設定を行います。これで、リセット時にカメラの位置が初期位置に戻ります。

New()

New()は以下のように修正します。

hudTextSystemの編集

リトライは「GameOver」または「GOAL!!」が表示されている時に、「Enter」クリックで実行されます。

スタート時はEnterクリック

また、ゲーム起動時も「Enter」クリックで開始されるようにします。

完成

これで完成です!段々と一般的なゲームに近づきつつあるので、今後も色々と機能を追加できればなーと思います。
 
 
最後まで読んで頂きありがとうございました!
ではまた!

 

 

-Go言語, ポートフォリオ
-,

© 2022 まいふぁんず