Skip to main content

比較

練習課題

記入できるファイルをダウンロード

C#を読みましょう

以下の表は、C#で書いた命令とその日本語の意味が書いてある。空枠を完成してください。

C#

日本語

a > b

変数「a」は変数「b」よりも大きい?

i <= 10
答え

変数「i」は「10」以下?

答え

 

playerHP > 0

プレーヤーの体力は残っている?

stageSelect == "Tutorial"
答え

選択されたステージはチュートリアルであるか?

coinCount >= itemCost
答え

持っているコイン数はアイテム価格を超える?

答え

 

keyCount == 3

鍵がちょうど3個ある?

答え

 

time < 60

残りの時間は60秒未満?

player != "CPU Player"
答え

プレーヤーはCPUプレーヤーではないね?

比較を評価

以下の比較を確認し、「true」(真・はい)または「false」(偽・いいえ)をチェックしてください。ただし、事前に以下の変数をすでに作成されている:

int a = 100;
int b = 20;
float c = 5.0f;
比較 true false
a == 100;

b < c
答え

falseでした! >>

 

・b は 20

・c は 5

・b は c 未満 (<) ではない


答え

c >= a / b;
答え

答え

 << trueでした!

 

・c は 5

・a / b ⇒ 100 /20 ⇒ 5

・5は5以上( >= )である

c * 6 < b * 2;
答え


 

答え

 << trueでした!

 

・c×6 ⇒ 5×6 ⇒ 30

・b×2 ⇒ 20×2 ⇒ 40

・30は40未満(<)である

a == b * c;
答え

答え

 << trueでした!

 

・aは100

・b×c⇒ 20×5 ⇒ 100

・同じ(==)である

b != a - 80;
答え

 falseでした! >>

 

・b は 20

・a - 80 ⇒ 100 - 80  ⇒ 20

・異なる(!=)のではない

答え

論理演算子で条件を連結:「かつ」と「または」

ゲームを開発しているときに、if文で同時に2つのことを確認したい場合もある。

例えば、レースゲームの勝利条件は:

  • ゴールに着いた
  • 時間がまだ残っている

両方とも同時に「true」だったら、ゲームの勝ちになる。2つの条件同時に満たさないといけない場合は「AND演算子」を使いましょう

「かつ」演算子:AND(アンド):&&

この演算子で両方の条件を満たさないと「true」にならない。2つの条件「A」と「B」があるとしたら:

A B A && B
false false false
true false false
false true false
true true true

つまり、いずれかの条件が「false」でしたら、すべて「false」になる。上記の例で、C#にすると:

// 走行距離
float runDistance = 1235.0f;

// ゴールまでの距離
float goalDistance = 1200.0f

// 残りの時間
float timeLeft = 35.7f;

// 走行距離はゴールよりも大きく「かつ」残りの時間が0以上だったら
if (runDistance >= goalDistance && timeLeft > 0)
{
  Debug.Log("勝ち!");
}

これで、必ず2つの条件を満たしたら、ゲームクリアになることを保証できる。

「または」演算子:OR(オア):||

もう一つのパターンは「いずれかの条件が true だったら、すべて true になる」かある。例えば、あるゲームの中で2つのドアの開き方がある:

  • ドアの鍵を持っている
  • プレーヤーの力が十分だったら、自力で壊す

この場合は、1つだけの条件を満たしたら、ドアを開くことができるので、「または」の演算子を使えば良いでしょう。

A B A || B
false false false
true false true
false true true
true true true

上記の例で、C#にすると:

// プレーヤーの力
float playerPower = 30;

// 今持っている鍵の数
int keyCount = 0;

// ドアの固さ
float doorHardness = 25;

// 鍵があれば「または」力は固さよりも大きければ…
if (keyCount > 0 || playerPower >= doorHardness)
{
  Debug.Log("ドアを開ける!");
}

この例だと、鍵がなくても力で壊せるので、ドアを開くことができる!

練習

以下、使った「かつ」と「または」の比較を確認し、「true」(真・はい)または「false」(偽・いいえ)を書いてください。ただし、事前に以下の変数をすでに作成されている:

int coin = 230;       // コインの数
int maxItem = 10;     // 最大のアイテムの数
int nowItem = 9;      // 現在持っているアイテムの数
int potionCost = 100; // ポーションのコスト

1. 比較:

coin > potionCost && nowItem + 1 <= maxItem
true false
答え

答え

<< trueでした!

 

コインは230でポーションは100なので

 

coin > potionCost

true(真)である

 

で、持っているアイテムは9個で、最大10個なので

 

nowItem + 1 <= maxItem 

true(真)である

 

両方とも「true」であり、「true かつ true」は「true」

 

2. 比較:

potionCost > coin || nowItem >= maxItem
true false
答え

falseでした!>>

 

ポーション(100)はコイン(230)を超えないので

 

potionCost > coin

は「false」である。

 

で、持っているアイテムの数(9)最大アイテム以上ではないため

 

nowItem >= maxItem

も「false」である

 

「false」または「false」(両方も「偽」)であるため、結果は false である

答え

3. 比較:

potionCost * 2 <= coin && maxItem >= nowItem + 2
true false
答え

false でした!>>

 

ポーション2個は200で、もっといるコインは230なので

 

potionCost * 2 <= coin

true(真)である

 

だが、持っているアイテム(9個)にさらに2つを増やすと、最大数(10個)を超えてしまうので

 

maxItem >= nowItem + 2

false(偽)である

 

「かつ」(&&)は両方とも「true」じゃないとだめなので、最終結果は「false」になってしまう。

 

答え

4. 比較:

nowItem == 0 && coin != 0
true false
答え

false でした!>>

 

持っているアイテムは0ではなく、9個なので

 

nowItem == 0

false(偽)である

 

「かつ」(&&)は両方とも「true」じゃないとだめなので、もう一つの条件は関係なく、最終結果は「false」になってしまう。

 

答え

5. 比較:

maxItem - nowItem > 9 || coin > 0
true false
答え

答え

<< trueでした!

 

maxItemは10で、nowItemは9なので

 

maxItem - nowItem ⇒ 10 - 9 ⇒ 1

 

で、1 は 9 以上ではないので、

 

maxItem - nowItem > 9

false(偽)である

 

だが、コインの数(230)は0以上なので

 

coin > 0

true(真)である

 

「または」( || ) の場合は、いずれか真だったら、すべて真になるため、この比較は「true」である。