する、かんがえる、つくるゲーム
私は中学生でテレビ番組を見てそれを知ってから友達とやりつくし、高校生ではその必勝法を分析し、大学生になってプログラミングに触れ自作にチャレンジしたそんなゲーム。
ヌメロンの紹介をしてみる。
初めてnoteのお題企画 #全力で推したいゲーム への投稿。
タイトルにもあるが今まで出会ったゲームの中でこんな色んな側面から味わい尽くせるのはなかなかない。こんな万能なゲーム他にあるでしょうか...。
やり込みたい人、作りたい人、ゲームに関わる全ての人に推せます。
第0章 ヌメロンとは
※知ってる方は流し読みして構いません。
一言でいえば「相手が決めた数を当てるゲーム」。ヒットアンドブロー、マスターマインドとも言うらしい。
お互いに3桁(または4桁)の番号を決め、交互に相手の番号を予想する。まず先攻が相手の番号を予想し宣言。
それに対して後攻は自分の数字と見比べ
数字と桁が一致・・・「EAT(イート)」
数字のみ一致 ・・・「BITE(バイト)」
がいくつあるのかを発表する。
例えば、相手の番号が925で宣言された数字が529なら、2が数字と桁も一致していて、5と9は桁が違えど数字は一致しているので、「1EAT- 2BITE」となる。
これを交互に行い、先に完全一致「3EAT」したら勝ち。
ルールとしてはとてもシンプル。一戦やれば誰でも理解できるはず。
それがこのゲームの1番の面白さであり私の人生でこのゲームに関するエピソードが多い所以でもある。
ここから私とヌメロンの歩みを振り返りつつその奥深さを紹介します。
第一章 出会い編
まずヌメロンとの出会いはフジテレビで放送されていた番組。バナナマン司会でオリエンタルラジオの中田さんが準レギュラーとして出演。
深夜番組でしたがオリエンタルラジオの中田さんがXENO(ゼノ)を作ったきっかけになったはずの番組です。中田さんのYouTubeに上がっているXENOの動画は完全にヌメロンの番組を意識して作られてます。
番組内で最強とされていた中田さんが対戦相手に余裕の表情で勝つ時もあれば、追い詰められてボコボコにされる。そんな毎回どっちが勝つか最後までわからないヒリヒリ感が好きでした。
このゲームのいいところは戦略に絶対的な正解がないところ。
もちろん答えとなる候補を絞る方法には良し悪しがあるが、相手の数字をズバリ当てるには運も必要。その証拠にこの番組内では相手の3桁を一回で当てた試合も存在します。(確率で言うと0.14%)
↑この時は番組独自のアイテムがあり確率は1%
第二章 乱戦&研究編
そんなヌメロンにハマった私は学校の友達とやりまくりました。休み時間はもちろん、帰ってからガラケーのメールでもやりあうことに...
私「321」
友達「0-1 , 316」
私「1-0, 234」
友達「1-0 , 872」
私「0-0 , 192」・・・
何も知らない人から見たら怖いですね。サッカー賭博でもしてるようにも見えますし。この頃もしLINEがあればどんなに便利だっただろうか...。
その頃学校の数学の授業は「場合の数」の範囲に。「サイコロ2個振って和が6になるの何通り??」とかってやつです。
勘の言い方は気づくと思いますがこれヌメロンにめちゃくちゃ使えます。
3桁の場合、全て異なる数字だとしてその総数は10*9*8= 720通り。そこから例えば次に宣言した数字が「1EAT - 0BITE」だったら場合の数の考え方を用いて126通りにまで絞られます。具体的な計算方法はここでは省略します。
初めて学校で学んだ数学が直接生活に役立った瞬間でした。そこから実際に今の時点であと何択になってるかわかるようになりました。「理系脳」に目覚めた瞬間かもしれません。
そんなこんなしているうちに友達とやってるヌメロンもかなりの勝率をあげるようになりました。やっぱりこの時の頭の回転って思考力を伸ばすのにいい訓練になってた気がします。
第三章 製作編
そして、大学生になりプログラミング を学ぶように。理系の大学生ならよくわかると思いますが、授業でやるものはただコードの写経でつまらないなぁと感じつつ、せっかくなら何かを作りたい!!
そこで思い出したのがこのヌメロンでした。対戦形式にするのは難しいけどコンピュータがランダムに決めた数字を自分が当てるなら簡単そう!と思い自作してみることに。
実際、こんな記事にもあるように数あるゲームの中でヌメロンはかなり簡単に作れる方です。習いたての私でも文法を調べながら作ることができました!初めて1から書いたプログラミングってすごく達成感がありますよね。
一応やった証明にコード載せときます(Python)。だいぶ前のですが...
import math
import random
## CALL出来る数字か判定
def numbergate(num):
gate = 0
num1 = num // 100
num2 = ( num % 100 )//10
num3 = num % 10
if num1 == num2:
pass
elif num2 == num3:
pass
elif num3 == num1:
pass
else:
for i in range(10):
if num1 == i:
for k in range(10):
if num2 == k:
gate=1
break
return gate
############################
##数字を自分で決める場合
#Ans = int(input("set your number:" ))
#A1 = Ans // 100
#A3 = Ans % 10
#A2 = (Ans - A1*100 - A3) /10
#############################
##数字をランダムで決める場合
choose = 0
while choose == 0:
A1 = random.randrange(0,10)
A2 = random.randrange(0,10)
A3 = random.randrange(0,10)
if A1 != A2:
if A2 != A3:
if A3 != A1:
choose = 1
Anslist = [A1, A2, A3]
#############################
time = 0
while time == 0:
call = int(input("Number call:"))
gate = numbergate(call)
if gate ==1:
eat = 0
bite = 0
if call == 100*A1 + 10*A2 +A3:
print("Numeron!!")
time += 1
break
c1 = call // 100
c3 = call % 10
c2 = (call - c1*100 - c3) /10
calllist = [c1,c2,c3]
for i in range(3):
if Anslist[i] == calllist[i]:
eat += 1
for i in range(3):
for j in range(3):
if i != j:
if Anslist[i] == calllist[j]:
bite += 1
print(eat,"eat","-",bite,"bite")
else:
print("eroor")
こんな感じでヌメロンはただ教えられただけの勉強が"楽しい"って思えるようになったきっかけのゲームかもしれません。複雑なゲームももちろん面白いですが、こういうシンプルだけど奥深い、そんなゲームもいいよ!って紹介でした。
◉関連記事