/
507.nako3
79 lines (66 loc) · 5.04 KB
/
507.nako3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
### [作品情報]
### 掲載URL=https://n3s.nadesi.com/id.php?507
### タイトル=🐢と🐇のレース-ダイアログだけを使ってゲーム作ったよ
### 作者=クジラ飛行机(user_id=1)
### ライセンス=MIT
### 説明=ダイアログと文字だけでどれだけ遊べるゲームが作れるか実験してみました。これは原稿のサンプル用に作ったんですけどボツにしたのでここに投稿します😃
### 対象バージョン=3.2.4
### URL=
### 種類=wnako
### タグ=
### 更新日時=2021-04-30 21:37:16
###
# 変数を初期化 --- (*1)
題名=「───亀と兎の競争───」
兎=0
亀=0
勝敗=「未定」
# ゲームのメイン処理 --- (*2)
「ゴールを目指してスタート!
[キャンセル]ボタンを押すと途中で終了します。」と言う。
(勝敗=「未定」)の間繰り返す
ゲーム進行。
ここまで
勝敗を言う。
●ゲーム進行とは # --- (*3)
# 亀と兎を前に進める --- (*4)
亀=亀+(3の乱数)
兎=兎+(3の乱数)
# 兎と亀の進捗画面を表示 --- (*5)
亀進捗=「🐢」で亀の進捗取得。
兎進捗=「🐇」で兎の進捗取得。
「{題名}{改行}{亀進捗}{改行}{兎進捗}」と二択。
# キャンセルを押したらゲーム中断 --- (*6)
もし、それがいいえならば、勝敗=「中断」。
違えば、勝敗=亀と兎で勝敗判定。# --- (*7)
ここまで
●(動物で歩数の)進捗取得とは # --- (*8)
S=「」。
歩数回、S=S&「....」。
それはS&動物
ここまで。
●(亀と兎で)勝敗判定とは # --- (*9)
それは「未定」
もし(亀≧14)または(兎≧14)ならば
もし亀=兎ならば
それは「同時ゴール!!」
違えば、もし亀>兎ならば
それは「🐢亀の勝ち!!」
違えば
それは「🐇兎の勝ち!!」
ここまで。
ここまで。
ここまで
# ----
解説='
プログラムを実行すると、兎と亀の競争が始まります。「OK」ボタンをクリックすることで兎と亀が前進していきます。どちらかが右端に達すると勝者を表示してプログラムが終了します。途中で飽きてしまったら「キャンセル」ボタンを押すことで中断できます。
プログラムを確認してみましょう。プログラムの冒頭(*1)でプログラムで使う変数をまとめて初期化します。プログラムの最初にまとめて書くことでその修正が容易になります。
(*2)では『間繰り返す』構文を使って繰り返しゲームを進行します。何回目の繰り返しで競争の勝負が終わるか分かりません。そこで変数「勝負」が「未定」である間繰り返すように指定します。
(*3)では関数「ゲーム進行」を定義します。この関数は(*2)から繰り返し呼び出されます。その内容ですが、まず(*4)で亀と兎をランダムに前に進めます。変数「亀」と「兎」にどこまで進んだかを代入しています。この変数に3の乱数を足すことで前に進めます。
(*5)では亀と兎の進捗状況をダイアログに表示する処理を記述します。関数「進捗取得」を呼び出して進捗状況を表す文字列を取得します。そして「OK」「キャンセル」のダイアログを表示する「二択」関数を呼び出します。
(*6)の部分では「二択」関数の結果によりゲームを中断するように、変数「勝敗」に「中断」を代入します。そして、(*7)では勝負が継続する場合にその時点での勝敗判定を行います。
(*8)で定義している関数「進捗取得」では、指定された歩数だけ「....」の文字列と動物を表す文字を足す処理を記述しています。『N回繰り返す』構文の省略形である『回』を使っています。
最後(*9)にある関数「勝敗判定」ですが、この関数は亀と兎の値を調べてゴールである右端に達したかどうかを判定します。まだゴールに達していなければ「未定」を返し、ゴールに達していれば誰が買ったのかを返します。それぞれ14以上であればゴールに到達したことにしています。ときどき同時にゴールすることもあるので、それを考慮しつつ亀か兎のどちらが買ったのかを判定します。
なお、プログラムで特に注目したいのは(*8)の「進捗取得」関数です。引数「動物」を変えて呼び出すことで、兎と亀のそれぞれについて進捗状況を文字列で生成して戻します。関数を使う事で、兎と亀のそれぞれ似て非なるプログラムを書く必要がなく、すっきりとプログラムをまとめることができました。
'
解説を表示。