前回お話しました通り、ゲーム制作においては、まずはやりたいことを紙に書き出して細分化して、自分が何をしたいのかをより具体的にすることが重要になります。
たとえば文法がわかっていないまま洋楽の歌詞を見ながらノリノリで踊ってみたりするのと同じように、プログラミングの文字列の暗記はあまり重要ではありません。
ただ、文字列というのは、パズルのピースのような、どのようなことができるのかを知っていなくてはただ無駄に妄念を紙に書き出して捨てるの繰り返しになってしまうのです。
そこで、今回は簡単な(基礎的な)文字列の理解から入り、ゲーム制作の下準備までをお話したいと思います。
本講座ではC#というプログラミング言語を使用します。
C#について
C言語という言語について前回名前だけ出しましたね。
C言語は適応力が高く動作が軽いので、駅の改札からゲームまでなんでも来いといった感じです。
そのただでさえ応用の利くC言語に、オブジェクト指向(なんか便利)を取り入れたものがC++です。
一方その頃、Javaという言語にも注目が集まりました。
それで合体させてしまえば最強のものが作れそうというロボット戦隊の合体のようなことが起こってC#が誕生したのです。
名前が似ていますが、文法が多少違ったりするので、別の言語として扱ってしまって良いと思います。
ちなみにC言語と同じ処理をC++やC#でする場合には、書く文字が少なくて済んだりします。
今回から用意していただくものは、UnityというゲームエディタとVisual Studioというテキストエディタです。もちろん両方とも無料での利用が可能です。
説明
Unity (https://unity3d.com/jp/unity)
Unityはゲームエンジンと呼ばれているもので、RPGツクールなどのような、ゲーム制作を劇的に楽にしてくれるものです。
この講座ではUnityを利用しますが、他にも多数ゲームエンジンは存在します。
発売されているゲームも、各会社のゲームエンジンを用いて作られていたりします。
ゲームエンジン無しでもゲームの製作はできますが、ゲームエンジンを使うと時間がかからなかったり、視覚的に判断できるので非常に便利です。
そしてUnityにはAsset Storeというゲームの素材が手に入るストアがあります。
ドット絵を1から描いたり、3Dモデリングをやっていたら面倒ですよね。
もちろん最終的にはそうしてオリジナルゲームを作るわけですが、基礎理解のためであればその必要はありません。
余談ですが、私も以前は3Dモデリングの経験がなく、3D向けだと誤解していたので、Unityを敬遠していましたが、2Dにも対応していて便利だったので、今では全てUnityで作っています。
Visual Studio 2015 (https://www.microsoft.com/ja-jp/dev/products/visual-studio-2015.aspx)
Visual Studio(以降VSと表記)は、本当はテキストエディタではなく、コンパイラという部類に入るものです。
しかし、テキストエディタとしてとても優れているので今回利用します。
その利点は、ソリューションの表示です。私は現在VSは起動が遅いため、Sublimeという別のテキストエディタを使っていますが、プログラミングに精通している人も使っています。
先述したとおり、少しでも文法がおかしいというところには赤線が引かれ、ソリューションが表示されます。
プログラミングを始めたばかりの頃は、ソリューションを読むことでも文法を理解することができます。
ただ、そのソリューションを読み込むのに時間がかかるので、パッとした修正などの時には少し鬱陶しく感じてしまうかもしれません。
では早速お待ちかねのプログラミングについて触れていきましょう。
まずは3つの簡単なステートメント(文字列の中でも処理をするもの)を理解しましょう。
この3つのステートメントはある意味3種の神器といわれるもので、色々なところで使います。
ステートメント3種の神器
If
これは最も使うといっても過言ではありません。
炒め物のごま油のように何にでも使えますし、応用の幅が太平洋より広いです。本当です。
正式にはIf-elseステートメントといい、elseとセットで扱います。
意味は読んで字の如くといった感じに、条件を与えるものです。
たとえば、前回私の書いた自分のキャラクターの移動に赤い文字が書いてあったのを覚えていますか?
あのように、If ( 条件 ){ 実行させたいもの }の型で、「~~したら」や、「~~のとき」のように指定したタイミングで実行させるステートメントです。
では試しに何か処理を考えてみましょう。
「任意の整数nが3以上なら画面に表示する」というプログラミングを考えてみましょう。
任意の整数nや画面に表示という部分は日本語で構いませんので、書いてみましょう。
VSに慣れるためにもVSを用いて書いてみましょう。
それと、実行したい文字列の最後には;(セミコロン)をつけることをお忘れなく。
If ( n>3)
{
画面に表示;
}
else
{
表示しない;
}
このように使うことができます。
画面に表示などのところは、追々話して行きますが、上昇志向の方は調べて埋めてみてください。
While
これもIf同様よく使います。
Ifを用いて書くこともできますが、それはまた後でお話しましょう。
これも読んで字の如くですが、Ifの条件の間ずっと処理を繰り返します。
「~~の間」や「~~していたら」のようにIfと少し似ていますね。
Ifでも代用が利くといいましたが、gotoを用いて再現してみましょう。
gotoは、普通上から読むように実行しているプログラミングの、文の指定したところに処理を持って行くことができます。このとき、行きたいところには目印として:(コロン)をつけましょう。
Ifを用いてWhileを書いてみましょう。
行ったり来たり訳がわからなくなるので、通常はgotoを用いずにWhileを使いますが、その逆ももちろんできるので、それを通してWhileの便利さや簡単さを知ってもらおうと思います。
「任意の整数nが10未満ならnに1を足し、10以上になったら画面に表示」というプログラミングを考えてみましょう。
これも先ほどと同じで、Ifとgoto以外の処理は日本語で構いません。
Loop :
If ( n<10 )
{
nに1を足す;
goto Loop;
}
else
{
画面に表示;
}
冒頭の整数nが10未満のときは1を足した後でLoopに戻るようにしています。
戻らなかった場合は下の処理を実行してしまったりします。
プログラミングはパソコンの画面に表示する処理と同じタイミングで更新されています。
私は144Hzなので、1秒間に144回処理をしていることになります。
ここで、Whileを用いた文を考えてみましょう。
While ( n<10 )
{
nに1を足す;
}
画面に表示;
これが先ほど書いたものと同じ動きをします。
とても短いですよね。とても楽ですよね。
goto
これは先ほどWhileのついでに触れたので、軽く触れて済ませようと思います。
指定したところに移動するステートメントです。
先ほどは上にジャンプしましたが、別に下に移動したって構わないわけなのです。
使用方法は先ほど説明したので、ここでは先ほどと違った使い方をしてみましょう。
「任意の整数nが10未満ならnに1を足すが、nが5になったら画面に表示する」というプログラミングを考えてみましょう。
もちろん習ったIfやWhileはご自由にお使いください。
使って使って使いこなせるようになれば十分ですので、今後は指示がなくとも使っていただいて結構です。
While ( n<10 )
{
nに1を足す;
If ( n=5 )
{
goto Draw;
}
}
Draw :
画面に表示;
このように、3つを使うことでnが5のときに画面に表示することができました。
最後の最後に習った3つを総動員するってなんかRPGのラストみたいでわくわくしますよね!
今回は少し頭を使ってプログラミングを書いてみました。
前回のように紙に書き出したときに、具体的なソリューションが書き出すことが、少しなりできたはずです。
それでは次回以降はUnity及びVSを用いると思うので、一通り触れたりしてみてください。
次回は変数について触れようと思います。
それではお疲れ様でした。