C#とDXライブラリでPCゲーム作るよ

もくじ

はじめに

Visual Studio 2017 Communityのこと

C#のこと

DXライブラリのこと

お役立ちリンク

はじめに

ゲームが好きなので、一度ゲームを作ってみたいと思ってました。巷にはゲーム制作ソフトも色々とありますが、プログラミングにも少し興味があったので、自分でプログラムを書いて作ってみるよー。学んだことを忘れないように、Webページにまとめていくことにしました。

Q:なんでDXライブラリなの?

A:ネット上に日本語の解説がたくさんあるし、2Dの簡単なゲームを作るのに良さそうだったから

Q:なんでC#なの?C++じゃないの?

A:C++よりC#のほうがわかりやすそうだから

ゲームを作る準備

Visual Studio 2017 Communityをインストールする

まずはプログラムを作るためのソフト、Visual Studio 2017 Communityをインストールするよ。

ダウンロード先はここ https://visualstudio.microsoft.com/ja/

Visual Studio 2017は、必要な機能を選んでインストールするようになっています。インストーラーの「ワークロード」では「.NETデスクトップ開発」のみを選択すればOK。

Visual Studio 2017 Communityは基本無料、アイテム課金などはないけど、30日以上使う場合はアカウント登録が必要になります。

DXライブラリを使えるようにする

ゲームを動かすのに必要なDirectXを簡単に使えるようにしてくれる、DXライブラリを導入するよ。

ダウンロード先はここ http://dxlib.o.oo7.jp/dxdload.html このページの「Visual C# 用パッケージ」をダウンロードして任意のフォルダーに展開しておく。

Visual Studio 2017のメニューの「新規作成」→「プロジェクト」で「Visual C#」→「Windowsデスクトップ」→「空のプロジェクト」を選んでプロジェクト作成。

初期設定だと、デバッグ開始した時にゲームの画面と一緒にコンソールウィンドウも開くので、ゲームの画面だけ開くようにする。「プロジェクト」→「(プロジェクト名)のプロパティ」で「アプリケーション」の「出力の種類」を「Windowsアプリケーション」にする。

プロジェクトにDXライブラリのファイルを追加。(プロジェクト名)¥bin¥Debugフォルダーに「DxLib.dll」、「DxLib_x64.dll」、「DxLibDotNet.dll」をコピー。そして「プロジェクト」→「既存の項目の追加」で「DxDLL.cs」を追加。

ちゃんと動くか確認

「プロジェクト」→「新しい項目の追加」で「コード ファイル」を選んで、好きな名前をつけて追加し、以下のプログラムをコピペする。

using DxLibDLL;
using System;

namespace DxTestApp
{
    class DxTest
    {
        [STAThread]
        static void Main()
        {
            DX.ChangeWindowMode(DX.TRUE);
            DX.SetGraphMode(640, 480, 32);
            if (DX.DxLib_Init() == -1)
            {
                return;
            }
            DX.SetDrawScreen(DX.DX_SCREEN_BACK);

            while (DX.ScreenFlip() == 0 && DX.ProcessMessage() == 0 && DX.ClearDrawScreen() == 0)
                DX.DrawCircle(320, 240, 64, 0xffff);
            {
            }
            DX.DxLib_End();
            return;
        }
    }
}

「デバッグ」→「デバッグの開始」、またはツールバーの「開始」、または「F5」キー、を押してデバッグ開始。ウィンドウが開いて黒い画面に水色の円が表示されれば大成功!

Visual Studio 2017 Communityのこと

Visual Studioのテーマを変える 「ツール」→「オプション」の「環境」→「全般」→「視覚的効果」の「配色テーマ」でいくつかから選べる
書いたプログラムを整形 Ctrl+K、Ctrl+D
入力補完を再度出す Ctrl+J

C#のこと

すべてのプログラムはクラス(Class)という枠組みの中に書く

プログラムを実行すると、static void Main(){}から処理が始まる

文字列は「”(ダブルクォーテーション)」で括る

命令の最後には「;(セミコロン)」を付ける

hello, world

プログラミングを始める時の通例だそうな

using System;

class HelloWorld
{
    static void Main()
    {
        System.Console.WriteLine("hello, world");
    }
}

実行すると「出力」欄に「hello, world」と表示される

コメント文

処理に影響しない注釈文を書き込める

//一行コメント

/*
    複数行コメント
*/

ブロック文

複数の文をまとめる

{
    //{}で括った文はひとまとめで扱われる
    //ブロック文の中に書く文は、見やすいようにインデントする。
}

変数

数値とか文字とかの入れ物

//変数を宣言
int i;//整数
double d;//倍精度浮動小数
bool b;//ブール値(trueかfalse)フラグに使う
string s;//文字列

int ix,iy,iz;//複数の変数をまとめて宣言

//宣言した変数に代入。
i = 0;
d = 0.1;
b = true;
s = "文字";

int j = 100;//変数を宣言しつつ代入
int k = 0,l = 1;//複数の変数をまとめて宣言しつつ代入

演算

足し算とか引き算とか

a = 1 + 1;//足し算
b = 1 - 1;//引き算
c = 1 * 2;//掛け算
d = 2 / 1;//割り算
e = 2 % 1;//余り

a = (1 + 1) * 2;//()で括った式は計算が優先される

a = a + 1//aの値を1増やす
a += 1;//複合代入演算。上と同じ意味。より短く書ける。

f++//インクリメント。1増やす
f--//デクリメント。1減らす

型の違う変数同士で演算

型を変換しても値の大きさが失われない場合に限り、勝手に変換されて計算される(暗黙の型変換)。

int i = 1;
double d = 1.25;
System.Console.WriteLine(i + d);//結果は2.25

名前空間

変数や関数などの名前が有効な範囲を定める

namespace name{
 int a;
}
a = 0;//名前空間の外からは参照できずエラーになる

参照渡し

変数の中身ではなく変数への参照を渡す

int a = 0;
int b = 100;
int c;//outで受け取る場合は初期化はいらない
MethodA(ref a);
MethodB(in b);//読み取り専用
MethodC(out c);

DXライブラリのこと

とりあえずゲームの画面を出す

using DxLibDLL;
using System;

namespace DxTestApp
{
    class DxTest
    {
        [STAThread]
        static void Main()
        {
            DX.ChangeWindowMode(DX.TRUE);
            DX.SetGraphMode(640, 480, 32);
            if (DX.DxLib_Init() == -1)
            {
                return;
            }
            DX.SetDrawScreen(DX.DX_SCREEN_BACK);

            while (DX.ScreenFlip() == 0 && DX.ProcessMessage() == 0 && DX.ClearDrawScreen() == 0)
                //ここにプログラムを書いていく
            {
            }
            DX.DxLib_End();
            return;
        }
    }
}

Visual Studio 2017 Visual Studio 2017の公式サイト

DXライブラリ置き場 DXライブラリの公式サイト

GIMP 無料の画像編集ソフト

Prism このサイトのプログラム表示に使っているスタイルシート


Copyright©Hagure Youma 2018.