There’s been a murder in Terminal City, and TCPD needs your help.
ターミナルシティで殺人事件が起こり、警察は貴方の協力を求めている。
という冒頭から始まる捜査ゲーム。といっても、GitHubで配布しているものなので、ただのゲームなわけがありません。
インタラクティブシェル上で、テキストファイルの山からgrepやawkを駆使して捜査 (走査) して犯人を見つけるという、一風変わったものになっています。
ゲームの導入方法と序盤の様子などは続きから。
導入
- GitHubへ行き、プロジェクトをcloneするか、zipファイルで落としてそれを解凍します。
- プロジェクトのフォルダに移動します。
cat instructions
で遊びかたを読みます。
コマンドラインの使いかたを知りたいときはとりあえずcheatsheet.mdを読みましょう。
それでもわからないときはプロジェクトディレクトリのトップにある、hint1からhint8というファイルを見ましょう。
ちなみに、instractions, cheatsheet, hint以外ではテキストエディタを使ってくれるな、とのことです。
ターミナルのスクロールバックもあまりよい行為ではないかもしれません。
ゲーム風景
> cat instructions There's been a murder in Terminal City, and TCPD needs your help. To figure out whodunit, go to the 'mystery' subdirectory and start working from there. You'll want to start by collecting all the clues at the crime scene (the 'crimescene' file). The officers on the scene are pretty meticulous, so they've written down EVERYTHING in their officer reports. Fortunately the sergeant went through and marked the real clues with the word "CLUE" in all caps. If you get stuck, open one of the hint files (from the CL, type 'cat hint1', 'cat hint2', etc.). To find out the solution, open the file 'solution' (from the CL, type 'cat solution'). To get started on how to use the command line, open cheatsheet.md or cheatsheet.pdf (from the command line, you can type 'nano cheatsheet.md'). Don't use a text editor to view any files except these instructions, the cheatsheet, and hints.
とりあえず、mystery
ディレクトリに移動します。ここから捜査開始です。
> cd mystery > ls crimescene interviews/ memberships/ people streets/ vehicles
以下、ネタばれ注意
まずは事件現場から
crimescene
(事件現場) ファイルがあるので見てみましょう。
> head crimescene ******* Crime Scene Report #262227712435 ******** 'Nor I,' said the March Hare. Alice sighed wearily. 'I think you might do something better with the time,' she said, 'than waste it in asking riddles that have no answers.' 'If you knew Time as well as I do,' said the Hatter, 'you wouldn't talk > wc crimescene 13565 74683 426455 crimescene
事件現場のリポートをまとめた巨大なテキストファイルのようです。こんなものを全部読んでいられないので、instructionsにあった通りCLUE
(糸口) を調べてみましょう。
> grep CLUE crimescene CLUE: Footage from an ATM security camera is blurry but shows that the perpetrator is a tall male, at least 6'. CLUE: Found a wallet believed to belong to the killer: no ID, just loose change, and membership cards for AAA, Delta SkyMiles, the local library, and the Museum of Bash History. The cards are totally untraceable and have no name, for some reason. CLUE: Questioned the barista at the local coffee shop. He said a woman left right before they heard the shots. The name on her latte was Annabel, she had blond spiky hair and a New Zealand accent.
3つの糸口がありました。
- 犯人は背の高い男で、少なくとも6フィートある
- 犯人のものと思われる財布の中には、小銭といくつかの会員証があった。カードには名前などはなかった
- 銃声が慣る直前まで、現場近くのコーヒー屋にAnnabelというニュージーランド鈍りの女性がいた
この中で有力そうな手掛りは最後のものです。
では、Annabelさんを捜しましょう。
> grep Annabel people Annabel Sun F 26 Hart Place, line 40 Oluwasegun Annabel M 37 Mattapan Street, line 173 Annabel Church F 38 Buckingham Place, line 179 Annabel Fuglsang M 40 Haley Street, line 176
4人見つかったようですが、これらの表示にはどういう意味があるのでしょう? head
してみます。
> head people *************** To go to the street someone lives on, use the file for that street name in the 'streets' subdirectory. To knock on their door and investigate, read the line number they live on from the file. If a line looks like gibberish, you're at the wrong house. *************** NAME GENDER AGE ADDRESS Alicia Fuentes F 48 Walton Street, line 433 Jo-Ting Losev F 46 Hemenway Street, line 390
1行に4つの項目 (名前、性別、年齢、住所) が並んでおり、その人に会いたければstreets
ディレクトリ内の住所名ファイルからその行を取得すればよいとわかりました。
4人なので目視でわかりますが、タブ区切りなのでF
(女性) で搾り込んでおきます。
> grep -i Annabel people | awk -F\\t '$2=="F"' Annabel Sun F 26 Hart Place, line 40 Annabel Church F 38 Buckingham Place, line 179
目撃者への聞き込み
まずは、ひとりめのAnnabel Sunに会いましょう。Hart Place, line 40ですね。
> head -n 40 streets/Hart_Place | tail -n 1 SEE INTERVIEW #47246024
会ってインタビューした結果がこちら
> cat interviews/interview-47246024 Ms. Sun has brown hair and is not from New Zealand. Not the witness from the cafe.
どうやらコーヒー屋にいた人とは別人のようです。
続いてふたりめのAnnabel Church。
> head -n 179 streets/Buckingham_Place | tail -n 1 SEE INTERVIEW #699607 > cat interviews/interview-699607 Interviewed Ms. Church at 2:04 pm. Witness stated that she did not see anyone she could identify as the shooter, that she ran away as soon as the shots were fired. However, she reports seeing the car that fled the scene. Describes it as a blue Honda, with a license plate that starts with "L337" and ends with "9"
コーヒー屋にいた人でした。「犯人を見ていないが、現場から走り去る車を見た。車は青のホンダでナンバーはL337
で始まり、9
で終わっていた」とのこと。
車の所有者は?
目撃情報を基に車を調べていきます。まずはてきとうにナンバープレートだけで調べてみます。
> grep L337 vehicles License Plate L337ZR9 License Plate L337P89 License Plate L337GX9 License Plate L337QE9 License Plate L337GB9 License Plate L337OI9 License Plate L337X19 License Plate L337539 License Plate L3373U9 License Plate L337369 License Plate L337DV9 License Plate L3375A9 License Plate L337WR9
10台以上見つかったようですが、得られる情報がよくわからないので、ファイル形式を確認します。
> head vehicles *************** Vehicle and owner information from the Terminal City Department of Motor Vehicles *************** License Plate T3YUHF6 Make: Toyota Color: Yellow Owner: Jianbo Megannem Height: 5'6" Weight: 246 lbs
複数行の「キー: バリュー」形式のようです。処理が面倒なので1行にまとめてから、得られた情報に基づいてgrep
していきます。
> cat vehicles | awk '/^License Plate/{print out; out=""} {out = out "\t" $0}' | grep L337 | grep 'Make: Honda' | grep 'Color: Blue' License Plate L337QE9 Make: Honda Color: Blue Owner: Erika Owens Height: 6'5" Weight: 220 lbs License Plate L337539 Make: Honda Color: Blue Owner: Aron Pilhofer Height: 5'3" Weight: 198 lbs License Plate L337369 Make: Honda Color: Blue Owner: Heather Billings Height: 5'2" Weight: 244 lbs License Plate L337DV9 Make: Honda Color: Blue Owner: Joe Germuska Height: 6'2" Weight: 164 lbs License Plate L3375A9 Make: Honda Color: Blue Owner: Jeremy Bowers Height: 6'1" Weight: 204 lbs License Plate L337WR9 Make: Honda Color: Blue Owner: Jacqui Maher Height: 6'2" Weight: 130 lbs
6件にまで搾られました。とりあえずこの6台の車の所有者を調べてみます。
> cat vehicles | awk '/^License Plate/{print out; out=""} {out = out "\t" $0}' | grep L337 | grep 'Make: Honda' | grep 'Color: Blue' | awk -F\\t '{print $5}' | cut -b 8- Erika Owens Aron Pilhofer Heather Billings Joe Germuska Jeremy Bowers Jacqui Maher
名前を取れたので、そこからpeople
で車の所有者の情報を取得します。
> cat vehicles | awk '/^License Plate/{print out; out=""} {out = out "\t" $0}' | grep L337 | grep 'Make: Honda' | grep 'Color: Blue' | awk -F\\t '{print $5}' | cut -b 8- | sed 's/ /\\ /' | xargs -J % -n 1 grep '%' people Erika Owens F 56 Trapelo Street, line 98 Aron Pilhofer M 16 Claybourne Street, line 145 Heather Billings F 38 Culbert Street, line 19 Joe Germuska M 65 Plainfield Street, line 275 Jeremy Bowers M 34 Dunstable Road, line 284 Jacqui Maher F 40 Andover Road, line 224
さらに、始めの情報で「犯人は身長6フィート以上の男」ということなので、もう少し搾り込みます。
> cat vehicles | awk '/^License Plate/{print out; out=""} {out = out "\t" $0}' | grep L337 | grep 'Make: Honda' | grep 'Color: Blue' | awk -F\\t '{print $5}' | cut -b 8- | sed 's/ /\\ /' | xargs -J % -n 1 grep '%' people | awk -F\\t '$2=="M"' Aron Pilhofer M 16 Claybourne Street, line 145 Joe Germuska M 65 Plainfield Street, line 275 Jeremy Bowers M 34 Dunstable Road, line 284
3人にまで搾り込みましたので、この3人を順番に調査していきましょう。
(続く)
おわりに
The Command Line Murdersを遊んでみました。
「(続く)」とありますが、ゲームの続きがあるだけで、ブログで続きを書く気はありませんのであしからず。
`man`を見て普段使わないようなオプションを使ったりとゲームを通じてシェルスクリプト力が上がる気がするので、興味があるかたはぜひプレイしてみてください。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。