プログラミング始めるなら覚えておきたい基礎知識

ここではUnityでゲーム開発をすることを想定し、言語はC#を基準に書いています。
なお最新情報でない場合もあります。

型と演算子

プログラム内でやりとりされるデータにはと呼ばれるデータの書式があります。
そのデータが文字なのか数字なのかあるいはそれ以外か識別するものです。基本的な書式からゲーム開発専用、オリジナルの型を作ることまであります。

変数

型を元に実際に使用されるデータを変数といいます。
たとえばゲームキャラクターの体力ステータスを作りたいとき、整数型の変数”HP”を作れば良いわけです。
変数は自分で用意してプログラム内で動かすもののため名前は自由に付けることができます。

変数は、

  • 型は何か?
  • 名前は何か?
  • 中にはどんなデータ(数値)が入っているか?


の3つの情報が含まれます。

型を合わせる

変数の中にはデータが入っています。これは実際動かすとき、プログラムによって書き換えることができます。
ゲームキャラクターがダメージを受けたとき、ダメージの数値分だけHPを減少させられます。
しかし、これはダメージとHPがどちらも同じ型であることが条件になります。
文字などの数字以外の型が混ざっていると計算ができないのは当然ですね。

細かいですが、整数型と少数型など同じ数字でも不都合なエラーが発生する場合もあるので型は揃えるようにしましょう。同じ数字であればエラーを回避するよう変換することもできます。

ここではC#の基本的な範囲でよく使われる型を紹介します。
Unityなどでは他にも型が使用されています。

  • 文字列”string” 文字を入れます。
  • 整数”int“ 整数の数値を入れます。
  • 少数”double“ 少数の数値を入れます。
  • 少数”float“ 少数の数値を入れます。
    doubleとfloatはどちらも少数型ですが、doubleは8バイト(64ビット)、floatは4バイト(32ビット)とfloatの方が入るデータ量が少ないです。
    容量を確保するか計算の速さを優先するかなど相談しながら使い分けることになります。
  • 論理型”bool“ true/falseの2つの判定が入ります。「はい/いいえ」で識別したいときなどに使います。

演算子その1(四則演算)

変数はデータを書き換えられます。
つまり足し算や引き算など四則演算もできるということです。

たとえばHPを10増やしたいとき、
HP=HP+10;
と書けます。=の左側が計算結果になり、足したものを忘れずHPに入れる必要があります。
この場合HPは上書きされるので元の数字を取り出すことはできなくなります。(保存しているわけではないので起動中の話です)

この計算に使われる”+”などを演算子といいます。
よく使う演算子はこれです。

  • = 代入
  • + 加算
  • - 減算
  • * 乗算
  • / 除算
  • % 剰余
  • ++ インクリメント
  • -- デクリメント

インクリメントデクリメントとは数字の変数を1つプラスするか1つマイナスする演算子です。
カウントしたいときなどに、カウント用変数を用意し(たとえばcount)、count++;と書くたびに1カウントすることができます。
インクリメントとデクリメントはそのまま上書きされるので=で改めて計算した数値を入れる必要はありません。
内容としては、count=count+1;と同じですね。

演算子その2(論理演算)

型に論理型”bool”があるように、プログラムでは論理計算も行います。(どちらかといえば四則演算よりこっちがメインです)

論理演算とは複数の条件から結果を絞り込む計算と考えれば良いでしょう。
条件Aかつ条件B、条件Aまたは条件B、などといった計算のことです。

よく使う演算子はこれです。

  • > ~より大きい 
  • >= ~以上
  • < ~より小さい、~未満
  • <= ~以下
  • == 等価、2つは等しい
  • != 非等価、≠、2つは異なる
  • && ~かつ~、~ AND ~
  • || ~または~、~ OR ~

論理演算で計算された結果は論理型boolで結果が出されます。
HPが50以下になったことを判定したいとき、HP<=50と書くと、条件を満たすときtrue、満たさないときfalseが結果として返されます。この計算結果をbool型の変数に入れて使うこともできます。

処理制御

プログラミングでは演算子を使ってより高度な制御を行うことができます。

条件分岐 if文

論理演算で判定した条件を元に処理を分岐させるときif文を使います。
指定した条件を満たすときと満たさないときで処理を分岐させます。

if ( 論理演算1 )
{
条件1を満たすときの処理
}
else if ( 論理演算2 )
{
条件2を満たすときの処理
}
else if ( 論理演算3 )
{
条件3を満たすときの処理
}
else
{
条件を満たさないときの処理
}

このように書くと論理演算の条件によって複数の処理を分岐させることができます。
分岐は上から順番に判定されるため、複数の条件に当てはまる結果の場合、上の分岐が優先され下の条件は判定されずに終わります。

繰り返し処理 for文

同じ処理を複数回繰り返したいときfor文を使います。
for文では判定用の変数を用意し(すでにある変数でも良い)、その変数が条件を満たす限り繰り返します。

for ( 繰り返し前に用意する処理; 繰り返すを継続させる条件; 状況を変化させる処理; )
{
条件を満たすときの処理
}

と書きます。
たとえば6回繰り返したいとき、

for (int i = 0; i < 6; i++;)

と書くと、整数int型の変数iを0から始めてiが6より小さい限りiを1増やして繰り返す、という処理になるわけです。

for (int i = 1; i <= 6; i++;)
for (int i = 5; i >= 0; i–;)
と書いても似たような処理にできます。(デクリメントの方は繰り返し順序が逆になりますが)

ここで用意したiはfor文の中だけで用意されたものなので、for文が終わると消えてしまいますが、for文の中では自由に使うこともできます。
繰り返しが何回目か確認したいときにiを呼び出せば良いですし、繰り返しを飛ばしたいときはiを直接書き換えれば繰り返しを強制的に変化させられます。ただし変化させる場合は次の繰り返し以降が変わるだけです。
今の繰り返し回を途中で強制的に終わらせて次の繰り返し回に飛びたい場合はcontinue;を使います。

繰り返し処理 while文

特定の変化に対応した回数ではなく、条件を満たす限り何度でも繰り返したい場合while文を使います。

while ( 論理演算 )
{
条件を満たす限り繰り返す処理
}

または

do
{
条件を満たす限り繰り返す処理
} while ( 論理演算 );

と書きます。
基本的にはいつかは繰り返しが終わる処理なので、中で動く処理で変化するものを条件にします。(条件に直接trueを入れるなど絶対に変わらないものを条件にしてほぼ永久に繰り返すこともできます。)
whileが上にあるものと下にあるものの違いは繰り返しの前に条件を判定するか後に判定するかの違いになります。


コメント