開発環境
OSはwindows11。IDEはVisual Studio 2022です。
参考書
ゲームプログラミングC++ 単行本(ソフトカバー) – 2018/12/5 Sanjay Madhav (著), 今給黎 隆 (監修), 吉川 邦夫 (翻訳)
ただ、こちらの本 github見てぐぐって頑張れ!みたいな感じで むずかしいのと、5000円くらいするので、一緒にプログラムを見て勉強しようという記事。いや自分の勉強のため。
Visual Studioの導入とSDLのダウンロード
下のリンクから Visual Studio 2022 のコミュニティをダウンロードします。
ダウンロードできたら、インストールexeを起動して、はい・続行をすすめるとこうなります。
この画面の左下にもある、c++によるデスクトップ開発をチェックしてインストールすれば大丈夫です。あとからインストールできるので他の気になった開発環境を今、入れる必要はないです。
インストールできたら、起動していただいて、新しいプロジェクトの作成から(N)を選択します。
そしたら空のプロジェクトを選択して、プロジェクトを立ち上げます。プラットフォームはx64で行います。
SDLのダウンロード
SDLをダウンロードします。ゲームのための基礎的なライブラリでウインドウやオーディオ、入力処理などの機能をサポートしてくれます。(C言語で書かれて軽量)
Development LibrariesのSDL2-devel-2.0.18-VC.zipをダウンロードして解凍します。ファイルの場所は自由でいいですが、パスが必要なので覚えましょう。この記事では Cドライブの直下とします。なお私のgithub上ではプロジェクトディレクトリ一つ戻りのExternalディレクトリにあります。
Visual Studioに戻って、ソリューション名のプロジェクト名を右クリックします。
追加 -> 新しい項目からc++の新しいファイルをつくります。
もう一度、 ソリューション名のプロジェクト名を右クリックします。
プロパティ-> C/C++ -> 全般 -> 追加のインクルードディレクトリ -> 編集から インクルードディレクトリ を変更していきます。パスしだいで変わります。SDL2がインクルードできるようになります。
C:\SDL2-2.0.18\include
私のgithub上
..\..\external\SDL2-2.0.18\include
同じように プロパティ-> リンカー->全般->追加のライブラリディレクトリ->編集にも追加します。
C:\SDL2-2.0.18\lib\$(PlatformTarget)
私のgithub上
..\..\external\SDL2-2.0.18\lib\$(PlatformTarget)
同じように プロパティ-> リンカー->入力->追加の依存ファイル->編集にも追加します。
SDL2.lib
SDL2main.lib
同じように プロパティ-> ビルドイベント->ビルド後のイベント->コマンドライン->編集に追加。
xcopy "C:\SDL2-2.0.18\lib\$(PlatformTarget)\*.dll" "$(OutDir)" /i/s/y
私のgithub上
xcopy "..\..\external\SDL2-2.0.18\lib\$(PlatformTarget)\*.dll" "$(OutDir)" /i/s/y
同じように プロパティ-> リンカー->システム からサブシステムをコンソールに設定。
これにより、SDL.dllをビルド時に開発ディレクトリにコピーできます。
※$(PlatformTarget)の後ろに\が必要ない環境の方とかあるかもしれません。
Helloウィンドウ作成
はじめに作ったcppファイルを(ソース1.cpp)Hello.cppに名前変更した上で次のように変更します。
#include "SDL.h"
int main(int argc, char** argv) {
// 初期化
if (SDL_Init(SDL_INIT_VIDEO) != NULL) {
// error
SDL_Quit();
return 1;
}
// Windowを生成する
SDL_Window* window = SDL_CreateWindow(
"Hello world",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
640, 480, 0
);
if (window == NULL) {
// error
SDL_Quit();
return 1;
}
// 3秒待つ
SDL_Delay(3000);
// 後処理
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
ローカルデバッカーをクリック、もしくはデバック->デバックの開始をするとウィンドウが3秒現れてとじるはずです。
コメント