【C++を活用したゲーム開発入門】Visual StudioとSDLを使用したテトリスの実行(exeファイル生成まで)

C++

【対象の方】
・Windows10のユーザーの方
・C++を学習中もしくは興味がある方
・Visual Studioを活用したゲーム開発に興味がある方

【C++を活用したゲーム開発入門】Visual StudioとSDLを使用したテトリスの実行(exeファイル生成まで)

SDL(Simple DirectMedia Layer)を利用するとC++でゲームを作成できます。今回はVisual StudioやSDLの詳細を理解していなくても、とりあえず実行してC++でこのようなことができるというご紹介をさせて頂きたいと思います。

SDLを使用して作成するゲーム

完成形はこちらのテトリスです。今回は海外の方がすでに作成されたソースコードを利用させて頂きます。

<操作方法>
・スペースキー:落下
・↑:回転
・→:右に移動
・←:左に移動

開発環境

・OS : Windows10 64bit
・IDE: Microsoft Visual Studio Community 2019(Version 16.6.5)
※インストール方法はこちら

GitHubからファイルのダウンロード

こちらからZipファイルをダウンロードします。
https://github.com/odyssjii/tetris

・Code→Download ZIPをクリックします。
・tetris-masterを適当な保存場所に展開します

Visual Studioのプロジェクト作成およびソースファイル・ヘッダーファイルの追加

「ファイル→新規作成→プロジェクト」を選択します

『空のプロジェクト』を選択します。違うプロジェクトを選択すると実行できないので注意してください(設定変更で後からも変更できますが空のプロジェクトを強くおすすめします)

以下のプロジェクトを作成します。
・プロジェクト名:tetris
・場所:C:\
上記を入力して『作成』をクリック
※プロジェクト名、場所はお好みでも構いませんがこの記事ではパスをご紹介するため上記をおすすめします。

GitHubからダウンロードし、展開したフォルダのsrc(tetris-master\src)に入っている以下の2点のファイルを「C:\tetris\tetris」に保存します。
・tetris.cpp
・colors.h
※今回は「tetris.c」は使用しません

「tetris-master\build」の中に入っている『novem___.ttf』を「C:\tetris\tetris」にコピーします。

Visual Studioの画面で右の『ソリューションエクスプローラー』のソースファイルを選択している状態で「右クリック→追加→既存の項目」をクリックしてください。

「C:\tetris\tetris」の『tetris.cpp』を選択して追加をクリックして下さい。

プロジェクトに『tetris.cpp』が追加されます。

右の『ソリューションエクスプローラー』のヘッダーファイルを選択した状態で「右クリック→追加→既存の項目」を選択してください。

「C:\tetris\tetris」の『colors.h』を選択して追加をクリックして下さい。

・ソースファイル:tetris.cpp
・ヘッダーファイル:colors.h
上記2点がプロジェクトに追加されていることを確認します。

現在の状態で『tetris.cpp』を開くとSDL.hとSDL_ttf.hがインクルードされていないのでエラーが発生しています。次はSDLとSDL_ttfを追加していきます。

SDLとSDL_ttfの追加

こちらから『SDL』をダウンロードします。今回は2.0.14を使用します。Development Librariesから『SDL2-devel-2.0.14-VC.zip』を選択してダウンロードして解凍し、できた『SDL2-2.0.14』をC:\に移動します(慣れておられる方はご希望のフォルダでも構いません)

こちらから『SDL_ttf』をダウンロードします。今回は2.0.15を使用します。Development Librariesから『SDL2_ttf-devel-2.0.15-VC.zip』を選択してダウンロードして解凍し、できた『SDL2_ttf-2.0.15』をC:\に移動します(慣れておられる方はご希望のフォルダでも構いません)

以下の2つのフォルダがC:\に保存されていることを確認します。
・SDL2-2.0.14
・SDL2_ttf-2.0.15

右のソリューションエクスプローラーのプロジェクタ名(tetris)を選択した状態で右クリック→プロパティを選択してください

構成プロパティ→C/C++→全般→追加のインクルードディレクトリ→編集を選択してパスを通します(1行ずつ入力します)
C:\SDL2-2.0.14\include
C:\SDL2_ttf-2.0.15\include

構成プロパティ→リンカー→全般→ライブラリ依存関係のリンク→編集を選択してパスを通します(1行ずつ入力します)
C:\SDL2-2.0.14\lib\x86
C:\SDL2_ttf-2.0.15\lib\x86

構成プロパティ→リンカー→入力→追加の依存ファイル→編集を選択して以下を入力します(まとめてコピペでも構いません)
SDL2.lib
SDL2main.lib
SDL2test.lib
SDL2_ttf.lib

構成プロパティ→リンカー→システム→サブシステムが『コンソール』になっていることを確認して『OK』をクリックして閉じます。Windowsなどになっている場合はコンソールを選択します。

以下のdllを「C:\tetris\tetris」にコピーします
・保存元:C:\SDL2-2.0.14\lib\x86
SDL2.dll
・保存元:C:\SDL2_ttf-2.0.15\lib\x86
SDL2_ttf.dll
libfreetype-6.dll
zlib1.dll

Visual Studioで『tetris.cpp』の802行目を以下のように書き直して上書き保存します。

//変更前
main()

//変更後
main(int argc, char* argv[])

メニューの「デバッグ→デバッグなしで開始」を選択します。

問題なければテトリスが立ち上がります。スペースキーで開始します。

exeファイルを作成して実行する

図の赤枠内をDebugから『Release』に変更します。

メニューの「ビルド→ソリューションのビルド」を実行します。

ビルドが成功するとC:\tetrisの中に『Release』のフォルダが生成されます。

「C:\tetris\Release」に以下のファイルをコピーします。「C:\tetris\tetris」からコピーすると楽です。
・novem___.ttf
・libfreetype-6.dll
・SDL2.dll
・SDL2_ttf.dll
・zlib1.dll
※注記:「C:\tetris\tetris\Release」ではなく「C:\tetris\Release」に追加してください。
これでReleaseの中の『tetris.exe』を実行できます。exeファイルを移動させる場合はこのフォルダごと移動させてください。フォルダ名はReleaseから別の名前に変更させることが可能です。