トラック
/
Gleam
Gleam
/
演習
/
パックマンのルール
パックマンのルール

パックマンのルール

学習演習

はじめに

真偽値

Gleamは、真偽の値をBool型で表します。値はTrueとFalseの2つだけです。これらの値は変数に束縛できます。

let true_variable = True
let false_variable = False

&&、||、!の各演算子を使うと、真偽値を操作できます。

True && True  // -> True
True && False // -> False

False || True  // -> True
False || False // -> False

!False // -> True
!True  // -> False

&&と||演算子は短絡評価を使います。これは、演算子の右側の式が必要なときだけ評価されるという意味です。

それぞれの演算子には異なる優先順位があり、!は&&や||より先に評価されます。波括弧({})を使うと、式の一部を他の部分より先に評価できます。

!True && False   // -> False
!{True && False} // -> True

説明

この演習では、往年の名作ゲーム「パックマン」のルールをいくつかGleamの関数に翻訳していきます。

翻訳するルールは4つあり、いずれもゲームの状態に関するものです。

入力がどのようにして生まれるかは気にしなくて構いません。入力を組み合わせて、意図した結果を返すことだけに集中しましょう。

1. パックマンがゴーストを食べるかどうかを定義する

2つの入力(パワーエサの効果が有効かどうか_と_ゴーストに触れているかどうか)を受け取り、パックマンがゴーストを食べられるかどうかを真偽値で返すeat_ghost関数を定義します。この関数は、パワーエサの効果が有効で、かつゴーストに触れているときだけTrueを返すようにします。

eat_ghost(False, True)
// -> False

2. パックマンが得点するかどうかを定義する

2つの入力(パワーエサに触れているかどうか_と_ドットに触れているかどうか)を受け取り、パックマンが得点したかどうかを真偽値で返すscore関数を定義します。この関数は、パワーエサかドットに触れているときにTrueを返すようにします。

score(True, True)
// -> True

3. パックマンが負けるかどうかを定義する

2つの入力(パワーエサの効果が有効かどうか_と_ゴーストに触れているかどうか)を受け取り、パックマンが負けるかどうかを真偽値で返すlose関数を定義します。この関数は、ゴーストに触れていて、かつパワーエサの効果が有効でないときにTrueを返すようにします。

lose(False, True)
// -> True

4. パックマンが勝つかどうかを定義する

3つの入力(すべてのドットを食べたかどうか、パワーエサの効果が有効かどうか、ゴーストに触れているかどうか)を受け取り、パックマンが勝つかどうかを真偽値で返すwin関数を定義します。この関数は、すべてのドットを食べていて、かつパート3で定義した入力をもとに負けていないときにTrueを返すようにします。

win(False, True, False)
// -> False
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Gleam Exercism

パックマンのルールを始める準備はできましたか?

Exercismに登録すれば、33個のコンセプト122個の演習、そして本物の人間によるメンタリングとともに、Gleamを学んでマスターできます。すべて無料です。