Appearance
第02回 C++入門 / ゲーム業界での立ち位置 / 描画プログラム制作
前回: 第01回 授業紹介 / PC基本操作 / AIの利用方法について / 次回: 第03回 入力と移動 / キー入力でキャラクターを動かす
前回の振り返り
この授業では C++ と DXライブラリで 2Dゲーム制作の基礎を学びます
- PC操作の基本用語とファイル管理の考え方を整理しました
Visual Studioでコードを書き、ビルド・実行する流れを扱いましたC++・DXライブラリ・Visual Studioといった用語の意味を整理しました- 今回から実際にコードを書き、DXライブラリで画面表示を行います
今回の目的
自分で書いたプログラムで文字や画像を表示する
- C++ のプログラムの基本構造を理解する
- 変数と型の基本を知る
- DXライブラリで文字や画像を表示する流れを理解する
- 画面表示の基礎を自分のコードで試せる状態にする
今回の授業内容
C++入門 / ゲーム業界での立ち位置 / 描画プログラム制作
- C++ がゲーム業界でどのように使われているか
- C++ のプログラムの基本的な構造
- 変数と型の基本
DXライブラリを使った基本的なプログラム- 文字や画像を画面に表示するプログラムを自分で書く
ゲーム業界における C++の立ち位置
今なぜC++を学ぶのか
実は結構 古い言語なのに
ゲーム業界でのプログラミング言語
目的によって使い分けられています
- ゲーム開発では、役割によって使用する言語が異なります
- ゲームエンジン・コア部分:
C++が広く使われています 処理速度が重要なグラフィックス、物理演算、ネットワークなど - ゲームロジック・スクリプト:
C#(Unity)、GDScript(Godot)など エンジンの上で動く部分は、より扱いやすい言語が使われることも多いです - ツール・インフラ:
Python、JavaScriptなど 制作支援ツールや運用まわりでは様々な言語が使われます
C++が使われている主なゲームエンジン
業界標準のエンジンはC++で作られています
- Unreal Engine : Epic Games 製の大規模ゲームエンジン エンジン本体に C++ が使われ、ゲームロジックも C++ で記述できます
- Unity : Unity Technologies 製の人気ゲームエンジン ゲームロジックは主に C# で書きますが、エンジン本体には C++ が使われています
- 独自エンジン : 大手ゲームメーカーが自社開発するゲームエンジン 高速な処理や細かな制御が必要なため、C++ が多く使われています
- DXライブラリ : 今回使う C++ 向けのゲーム制作ライブラリ C++ でゲーム制作の基本を学ぶための入り口として使います
C++が今も使われる理由
パフォーマンスと高度な制御の
- 処理速度 : C++ で書かれたコードはコンパイラによって機械語に変換され 高速に動作します 限られたリソースで高いパフォーマンスが求められるゲーム開発に適しています
- 細かな制御 : メモリや処理の流れを細かく扱えます 制約のある環境でも性能を引き出しやすくなります
- 豊富な実績 : 長年使われてきたため、ライブラリやツールが充実しています 既存のゲーム資産や開発ノウハウを活かしやすいことも強みです
DXライブラリの設定を確認する
手順の詳細は別スライドを参照してください
- DXライブラリの導入と設定はちょっと複雑ですので DXライブラリの導入と設定 2026年版 に分離しています
- 実際の設定作業は、分離したスライドを見ながら進めてください
C++のプログラムの基本構造
DXライブラリのプログラム例
- 右のコードが、DXライブラリを使う際の基本形です
- DXライブラリを
DxLib_Initで開始し、DxLib_Endで終了します - 実際の描画や入力処理は
// ここに処理を書くの位置に追加していきます
cpp
#include <DxLib.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
// DXライブラリの初期化
if (DxLib_Init() == -1) return -1;
// ここに処理を書く
DxLib_End(); // DXライブラリの終了処理
return 0;
}プログラムの構成要素
最小のプログラムに含まれる大事な部品
#include: プログラムで使いたい機能の情報を読み込む命令 ここでは DXライブラリの機能を使えるようにしていますWinMain: Windows アプリケーションの開始地点(エントリーポイント) プログラムを実行すると、最初にこの関数が呼び出されますDxLib_Init/DxLib_End: DXライブラリの開始と終了 DXライブラリを使う前後に必ず呼び出します
コメントの書き方
コードに説明をつける
cpp
// これは1行コメントです。この行はプログラムに影響しません。
/*
これは複数行のコメントです。
複数行にまたがって説明を書きたいときに使います。
*/
int x = 10; // 変数xに10を代入- コメントはプログラムの動作に影響しません ですが処理の意味を書き残すことで、後からコードを見たときに理解しやすくなります
- 何をしているのかをコメントに書く習慣はとても重要です ぜひコメントを書いてみてください
変数とは
値を入れておく「箱」のようなもの
- 変数はプログラムの中で値を保存して使いまわすための仕組みです
- 変数には 型 があります 型によって、どんな種類の値を入れられるかが決まります
cpp
int score = 0; // 整数を入れる変数
float speed = 2.5f; // 小数を入れる変数
bool isAlive = true; // 真偽値(true / false)を入れる変数- 変数は使う前に必ず名前を与える宣言 が必要です
=は代入(右辺の値を左辺に入れる)を意味します
主なデータ型
値の種類に合った型を選ぶ
| 型名 | 内容 | 例 |
|
|
|
|
|int| 整数 |0,100,-5|
|float| 小数 |1.5f,3.14f|
|double| 精度の高い小数 |3.14159265|
|bool| 真偽値 |true,false|
|char| 1文字 |'A','z'|整数と区別をつけるため、
floatの値には末尾にfをつけます最初は
intとfloatとboolを覚えましょう
変数の使い方
代入と計算
cpp
int x = 100; // xに100を代入
int y = 200; // yに200を代入
int sum = x + y; // xとyを足してsumに代入 → 300
x = x + 10; // xに10を加算して上書き → 110
x += 10; // 上と同じ意味(省略形)
int hp = 100;
hp -= 30; // hpから30を引く → 70- 同じ変数に何度でも値を代入し直せます
+=、-=、*=、/=は値の更新によく使う省略形です
実習1: 変数を使ってみる
コードを書いて確かめる
プロジェクトを開く
次の変数を
WinMainの中に書くcppint playerX = 320; int playerY = 240; float speed = 2.5f; bool isAlive = true;ビルドしてエラーが出ないのを確認してから 変数の値を変えて再度ビルドしてみる
- ※ここではビルドが通ることを確認ただけで、まだ画面には何も表示されません
座標の考え方
画面の左上が原点 (0, 0)
- 画面の左上を
(0, 0)として、右に行くとXが増え、下に行くとYが増えます - デフォルトのウィンドウサイズは
640 × 480ピクセルです
text
(0, 0) ──────────── (640, 0)
│ │
│ 画面の中央 │
│ (320, 240) │
│ │
(0, 480) ───────── (640, 480)- ゲーム画面の座標系は原点が左上でY軸が下向きになることが一般的です 数学のグラフとは異なりますので注意してください
文字を表示する
DrawString を使う
cpp
// DrawString(x座標, y座標, 文字列, 色)
DrawString(100, 100, L"Hello, Game!", GetColor(255, 255, 255));DrawString(x, y, 文字列, 色): 指定した座標に文字を表示します- この授業のコードでは、DXライブラリに渡す文字列を
L"..."の形で書きます GetColor(R, G, B): 赤・緑・青の値(0〜255)から色を作りますGetColor(255, 255, 255): 白GetColor(255, 0, 0): 赤GetColor(0, 255, 0): 緑
DrawFormatString を使う
変数の値を表示する
cpp
int playerX = 320;
int playerY = 240;
// DrawFormatString(x, y, 色, フォーマット, 値...)
DrawFormatString(10, 10, GetColor(255, 255, 0),
L"座標: X=%d Y=%d", playerX, playerY);DrawFormatStringはprintfのように書式を指定できます ここではplayerXとplayerYの値を文字として表示しています- 次回はこの表示を使って、動かした座標を確認します
実習2: 文字を表示する
DrawString と DrawFormatString を試す
DrawStringを使って好きな文字を表示する- 余裕があれば
DrawFormatStringを使ってplayerXとplayerYの値も表示する - 表示する文字列や座標、色を変えて結果を確認する
- ビルドして実行し、画面に文字が出ることを確認する
- うまく表示されない場合は、文字列の書き方や
;の付け忘れを確認しましょう
画像を表示する
LoadGraph と DrawGraph を使う
cpp
// 最初に画像を読み込む
int playerHandle = LoadGraph(L"Images/Player.png");
// 表示したい場所に画像を描画する
DrawGraph(playerX, playerY, playerHandle, TRUE);LoadGraph(ファイルパス): 画像ファイルを読み込み、ハンドル(番号)を返すDrawGraph(x, y, ハンドル, 透過処理を有効にするか): 指定座標に画像を表示する- 最後の引数
TRUE: 画像の透過処理を有効にする設定です LoadGraphは画像を使う前に読み込む処理、DrawGraphはその画像を表示する処理です
画像を1枚表示するコードの例
処理内容のポイント
LoadGraphで画像を読み込みますDrawGraphで指定した座標に画像を表示しますScreenFlipで描いた内容を画面へ反映しますWaitKeyでキー入力を待ってから終了します
cpp
// 画像を1枚表示する最小コード
#include <DxLib.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
// 画像を読み込む
int playerHandle = LoadGraph(L"Images/Player.png");
int playerX = 320;
int playerY = 240;
// 描画処理
ClearDrawScreen();
DrawGraph(playerX, playerY, playerHandle, TRUE);
ScreenFlip();
// キー入力を待ってから終了する
WaitKey();
DxLib_End();
return 0;
}ファイルパスの指定
画像ファイルの場所を正しく指定する
text
プロジェクトフォルダ/
Images/
Player.png
Source.cppLoadGraphのパスはプロジェクトフォルダからの相対パスで指定しますImagesフォルダを作ってその中に画像を置くと整理しやすくなります 今後こうしたフォルダ分けでの管理が重要になりますので、ぜひ意識してください- ファイル名は大文字・小文字を正確に入力してください Windows 以外の環境では大文字・小文字が区別される場合があります
実習3: 画像を表示する
画像をロードして描画する流れを体験する
Imagesフォルダをプロジェクトフォルダ内に作る- 授業用の画像ファイルをそのフォルダに置く
LoadGraphで画像データを読み込むDrawGraphで画像を描画する- ビルドして実行し、画像が表示されるか確認する
- 座標の値を変えて、表示位置が動くか確認する
- 画像が表示されない場合は、ファイルパスが合っているか確認しましょう
今回のまとめ
DXライブラリで描画を扱う第一歩を踏み出しました
- C++ はゲームエンジンの中核に使われており、 今もゲーム業界の主要言語のひとつです
- 変数の型を使い分け、値を設定していくのがプログラムの基本です
- DXライブラリでは、画像を読み込み、描画して画面に反映する流れで表示を行います
DrawString/DrawFormatStringで文字を、LoadGraph+DrawGraphで画像を表示できます- 次回の入力処理につなげるため、 表示する文字・画像・座標を変えて動作を確認しておきましょう