強いマインスイーパーになる
この記事は ぐらぽむ Advent Calendar 2016 - Adventar の7日目の記事です。
突然ですが私は、Android版マインスイーパーアプリのハードモードで日本ウィークリーランキングの1位に2,3週間ほど居座っていたことがあります。
いまこの記事を読んでいるあなた方だけに、私をマインスイーパー界のホープと呼ぶことを特別に許しましょう。
そんなマインスイーパー界のホープから、今日はいかに早く地雷を処理していくかのテクニックを少しずつ紹介していきたいと思います。
日本一位です pic.twitter.com/XFY3UVoMsT
— ぐらぽむ (@gurapomu) October 26, 2016
週間一位に返り咲いた pic.twitter.com/AKQ8jEMjib
— ぐらぽむ (@gurapomu) November 10, 2016
話を始める前に私がプレイしている難易度を説明しておきます。
私がプレイしているハードモードは縦26マス×横19マスに99個の地雷が設置されているモードとなります。マス総数は494個ですので地雷密度は約0.2ということになります。
この記事を読むにあたって、地雷密度0.2程度のマインスイーパーは時間がかかってもクリアできる方でないと理解が追いつかないと思うので、できない人は修行し直してきてください。
それでは地雷の海へと漕ぎ出しましょう。
精神統一
まず、プレイを始める前には精神統一をし、集中力を高めておきましょう。もし地雷を踏んでしまって命を落とすのはあなたです。絶対に1つの地雷も起爆させずにすべてを処理するんだという心持ちが非常に重要になってきます。
私は最近ですと、プレイ前にひなビタ♪の曲を聴いて精神統一をすることが多いです。みなさんにもこういった大事な場面の前のルーティンというものがあると思うので積極的に利用していってください。
集中力が限界まで高まったところでいよいよプレイを始めます。
スタートダッシュ
地雷を高速に処理するに当たって、大まかにどのような場所から処理をはじめどの方向に向かっていくのかを決めておく必要があるでしょう。
私はいつも左上から始めて時計回りに処理していくという流れをとっています。これは利き手や好みの問題もあるので、何度も試して自分にあったプレイスタイルを見つけてください。
手を止めないこと
プレイを始めたら、絶対に手を止めてはいけません。私ほどのマインスイーパーとなると、手を止めることによっていくつの人命が失われてしまうかが手に取るようにわかってしまい、とても手を止めることなどできません。
コツとしては、視野を広く持ち、常に次にどこを処理していくかを見据えながらプレイしていくというのがおすすめです。地雷伝いに処理をしていっている間は隣を見ていればよいですが、例えば端に到達した場合などは、処理する位置が大幅に変わることが多々あるので、近くの地雷が無くなりそうだと感じたときはとっさに視野を広く持ち次の狙いを定めましょう。
パターンを把握する
マインスイーパーの地雷の配置は、全体で見ると無数の配置パターンが存在しますが、ある部分部分で考えていくと当然パターンが定まってきます。こういったパターンを記憶していき、徐々にレパートリーを増やしていくことで最後には、盤面を見るだけで、考えることなくすべて反射的に地雷を処理していくパーフェクトマインスイーパーとなれるのです。
さて、例えば以下のような盤面に遭遇したとしましょう。
最初のうちは自分もこういった場面に遭遇し、一番上端が1だから上から3マス目に絶対地雷は来ないので・・・ と考えながら地雷処理をしていました。しかし慣れてくると、この盤面をみたその瞬間にこことこことこことここに地雷があるということがARグラスを装備しまさにそこに映るかのように把握できるようになります。さらにこういった盤面には往々にして遭遇するので、記憶しておいて損はありません。
もちろんこれはあくまで簡単な例に過ぎませんが、こうした積み重ねがタイム更新へとつながっていくということを忘れてはなりません。
無駄なアクションを極力減らしていく
さて、ここからは今、私が取り組んでいることになります。
次のような盤面を考えてみましょう
この盤面で黒丸の場所に地雷が存在することは自明であります。しかし、この地雷全てに旗を立てる必要はあるでしょうか。
マインスイーパーのシステム的に、旗を立てていなくても地雷がないマスをすべて開けてしまえばクリアとなります。
この盤面で言うと、した2つの地雷に旗を立てて角の[2]をタップ(windows版だと中クリック)した時点で1つ目と2つ目の間のマスは開放されます。これはクリア条件をみたすのでいちいち一番上の地雷に旗を立てるという操作をせずに済むのです。
このワンタップ・ワンクリック、一見小さいように見えますが、ちりも積もれば山となる。この積み重ねがタイム更新になります。この手間で救えない人命があるかもしれないと考えるといちいちこんなところに手間をかけるという気にはなれないでしょう。
おわりに
以上が私の考えるマインスイーパー高速攻略法になります。いかがでしたでしょうか。
誰もマインスイーパーなんてやらないよという意見はごもっともでございますが、誰かが地雷を処理しないことには私達が住む地球の安全は確保されません。
自分たちの住む場所の安全は自分で確保するぞ!という強い気持ちが必要になってくる時代なのです。
明日の担当はhu君です、期待してます。
ニキシー管時計製作日記
この記事は MCC Advent Calendar 2016 - Adventar の6日目の記事です。
部長のくせに、アホみたいな記事を連投していては威厳が保てないので頑張って書いていきます。
真似する人はまあいないと思うし昇圧回路とか制御回路とかの情報は溢れているので本気で作りたい人はそちらを参考にしてください(丸投げ)*1
突然ニキシー管が届く(10/12)
ことの始まりは10/12(私の誕生日の三日後)です。
今年は特にTwitterにAmazonのウィッシュリストのリンクを貼ったりはしてなかったのに、自宅に小さい包が届いていました。
(@akira_tech )からニキシー管が届いてしまっていよいよ学祭までに何か作らないわけにはいかなくなった
— ぐらぽむ (@gurapomu) October 12, 2016
— ぐらぽむ (@gurapomu) October 12, 2016
なんかやる気になったので次の日秋葉原に言って昇圧回路に使うパーツを買い足すことにしました。
回路はGoogleで[ニキシー管 昇圧回路]とか検索して上の方に出てくるやつを参考にしました。
秋葉原に繰り出す(10/13)
秋月の抵抗ブースにたかってた大学生刺しそうになった
— ぐらぽむ (@gurapomu) October 13, 2016
なんか知らないけど秋月がめっちゃこんでてキレました。それからこの日はちょうどPSVRの発売日でTLで浮かれながらレビューを述べてる人間が多くてキレながらパーツを探していました。
ユニバーサル基板とスズメッキ線買ったのにどっかに落としてしまったぽい
— ぐらぽむ (@gurapomu) October 13, 2016
せっかく買ったユニバーサル基板とスズメッキ線をどっかに忘れてきました。
キレつつも抵抗の脚のあまりとか使って適当に実装していきました。
キレたキレたと書いているけどこの日は尋常じゃなくキレていた気がします。
それからこの日は一応実装終わったのに動きませんでした。
テスター無いからどうなってるかわからん
— ぐらぽむ (@gurapomu) October 13, 2016
テスターが部屋にあったのに見つからなくて原因もわからずキレながら寝ました。
次の日天文部の部室に行ったら何故かテスターがあったので拝借して見てみたけどVo部分の電圧が10Vくらいしか出てなくて面倒くさくなったのでこの辺で一回モチベが消失します。
学祭がちかくなったので焦りを感じ始める(11/5)
このくらいになってきてそういえば作らないとなとか思ったんだけど、意外と時間がないので最悪ブレッドボードにウリャして展示するか、という気持ちになってきます。
適当に45Vくらいまでは昇圧できた
— ぐらぽむ (@gurapomu) November 5, 2016
抵抗が足りなかったけどなんとか昇圧できるようになりました。
いまからマウンタ基盤を発注しても間に合わないのでゴリ押し実装をします pic.twitter.com/EqwRpvIZE7
— ぐらぽむ (@gurapomu) November 5, 2016
今から基盤発注しても間に合わないことに気づいてトチ狂った実装をし始めます。
なんすかこれ pic.twitter.com/NHhShdquJ8
— ぐらぽむ (@gurapomu) November 5, 2016
なんだよこれは。
つきました(11/7)
ついたぞ〜 pic.twitter.com/v4ZRA983HE
— ぐらぽむ (@gurapomu) November 7, 2016
ご覧の通り実装が面倒だったので昇圧回路はブレッドボードに組みました。
@ykun03 ゲーム制作の進捗どんな感じですか
— ぐらぽむ (@gurapomu) November 7, 2016
自分のことがなんとかなりそうで安心したのか後輩を煽り始めます。*2
いよいよヤバさを感じてぶっ通し9時間はんだ付け耐久レースをした日(11/9)
そういえばこっちも点いた pic.twitter.com/oY1xj307a5
— ぐらぽむ (@gurapomu) November 9, 2016
時計用に買ったネオン管も点灯しました。
深夜テンションで最低なことになってる pic.twitter.com/DyvbFdBfjh
— ぐらぽむ (@gurapomu) November 9, 2016
深夜テンションでキモい実装をしました。
だいたいこんな感じになります pic.twitter.com/FWSp3zp7j9
— ぐらぽむ (@gurapomu) November 9, 2016
耐久レースの末、なんとかなった。ちなみにこれらのニキシー管はセロテープで巻きつけてあって、とても雑。
マイコンボードの電源くらいはなんとか確保したかったけど時間がなかった
— ぐらぽむ (@gurapomu) November 9, 2016
マイコン用電源くらいとるべきだったと後悔しています。計画性が低いので三端子レギュレータを買うとかいう考えが抜け落ちていました。
っていうか実装中はもう小手先がやばすぎて終始キレていました。普通のはんだこてなら4時間くらいあれば終わっていたと思います。
Amazonでマウンタを発見してキレた(11/10)
IN-12A/B IN-15A/B IV-22 ソケット 6個セット(ブラック) clockwork https://t.co/wuaGNfJZ7M
— ぐらぽむ (@gurapomu) November 10, 2016
今更こんなものを発見してしまって参った
この日もキレていました。
プログラムもokっぽいので多分このまま展示をする pic.twitter.com/auK5b287Ea
— ぐらぽむ (@gurapomu) 2016年11月10日
プログラムは良さそうだったので一安心していました。
学祭(11/11)
当日になったけど筐体を作る暇も昇圧回路をユニバーサル基板に実装する時間もなかったのでそのまま展示しました。
感想
とりあえず形にはなったので良かったかなと思います。
自分のツイートを遡ってて思ったことは、ニキシー管制作するにあたってキレすぎでしょうということです。この制作活動は本当に自分にとって得だったのか????
それから自分の計画性の低さを痛感しました。パーツリスト作ったのに買わずに帰ったとか、そもそもパーツリストに入れるのを忘れていたとか言うのが多くて、足りない抵抗を補うために直列に5本つなげたりとかしていました、アホくさ・・・
今後の展望についてですが、とりあえず筐体を作りたいです。筐体を作るにあたって、マイコンをATmegaに変更する予定です。*3 RTCがマイコンについているのはいいけど自動で時間調整する昨日とかいろいろ考えるとGPSモジュールとかつけたほうが早いのかなとか色々考えることが多くて辛いです。
自分はモチベーションのむらが激しすぎるということもわかったので、これも完成するかどうかわかりません・・・ がんばります。
見返してみると部長の威厳もクソもない記事になってしまった感が強いです。
明日はhu君の担当です。めっちゃ記事書くじゃん。がんばって・・・
*3rd GrassLife
この記事は MCC Advent Calendar 2016 - Adventar の3日目の記事です
2日の23:59:59まで誰も登録しなかったので急遽私が記事書きます。(宣伝です)
1日目にもMCC紹介記事を書かせていただきましたぐらぽむです。
私のbioに書いてあるGrassLifeって何なんだろうと思っている方、何人かいるのではないでしょうか。
GrassLifeというのはMinecraftのマルチプレイサーバーを開発・運営するサークルです。
去年の末頃(?)にはbetaサーバーを開放していたそうです。
私は今年の9月ごろにこのサークルに加入し開発を行っています。
コンセプトは、 善い生活をしてもらう ことです。
GrassLife正式サービスでは、Minecraftをより実生活に近づける仕組みを多数導入しており、その厳しい環境下でどのように善い生活をしてもらうかを楽しんでいただきたいとおもっています。
例として、プレイヤーの建てた家が集まってできるトライブ(集落)システムやアクションを積み重ねる事によってプレイヤーが成長していくナレッジ(知識)システムなどの導入を予定しています。
残念ながらサービス開始はもう少し先になりそうですが、PC版Minecraftをお持ちの方は是非遊びに来てください。
急遽記事を書くこととなり、ぱっとネタが思いつかなかったためこのような宣伝記事になってしまって申し訳ないです。
次回は@altcolonyの担当です
*1st 自己紹介
自己紹介
先輩方にいじめられていやいや始めたこのAdvent Calendarではありますが、1日目ということで嫌々ながら自己紹介をさせていただきます。
- MCC部長
某大学のマイクロコンピュータクラブ(MCC)というところで部長をしております。
11月中旬頃に部長職に就任し、12月頭からバカみたいに自分の名前でAdvent Calendarを立てさせられるというのがMCCの伝統芸能なのです。
参考
- イケイケIoT
渋谷区の某所でスマートハウスに関するお仕事をしています。
- GrassLife Dev.
MinecraftのGrassLifeというマルチプレイサーバーで、デベロッパーをさせていただいております。
まだサーバー稼働していませんが、PC版Minecraftをお持ちの方は是非そのうち遊んでいただけたらなと思います。
- FFXIV Valefor
ちまちまFF14やってます。 遅かったですが10月最終週くらいに天動編4層をクリアしました。占星術師です
といって分かる人が何人いるのか
- 餃子
餃子が好きです。 調子がいいと月に10~15食くらい食べます。
だいたい好きなポケモン使って狩られる側の人間です。機会があったらパーティー紹介します。
こうして列挙していくと、予想以上に自分について話すことって少ないものだなぁと実感します。
今のところ、このAdvent Calendarに登録してくれている人が少なすぎて悲しいのですが、なんとかなると信じてやっていこうと思います。
*1st MCCの話
伝統芸能
MCC部長には代々、それはそれは歴史の長い伝統芸能が伝授されております。
その伝統というのが、 各代の部長が勝手に始めたことを伝統芸能と言い張る伝統 でございます。
例えば1つ上の部長は、
部長がちゃらんぽらんで、まともに仕事しないのは伝統芸能だ!!!
と言い張り
勘弁してくれよまじで
例えば2つ上の部長は、
毎週の部会前に(あまり覚えていないんだけど)ちょっと面白いっぽいくだらない話を挟んで「部長の○○です、それでは部会を始めます。」の一言で部会を始めるのが伝統芸能だ!!!
と言い張りました
実を言うと役職が新しくなって部長があまり来なかった時期、ああいったことをやったほうがいいのかとは本気で悩んだ #MCC_LT
— ぐらぽむ (@gurapomu) June 17, 2016
それ以前は入学前なのでよくわかりません。
というわけですので当代の部長である私は
勝手に自分のAdvent Calenderを立てて、書いてくれる人が少なすぎて惨めな思いをするのが伝統芸能だ!!!
と言い張ります。
以上のことから、筆者の 「本当に悲しいのでAdvent Calender誰か書いてください」 という思いが感じ取れますね
部長のgurapomuです、それでは部会を始めます。
MCCの話ということですので、一応形だけでも活動報告的なことをしようと思います。
2016年度のこれまでのMCCの活動は大体以下の通りだと思います
大学生協が運営する新入生向けPC講習会の講師をする。
MCC_LT 第1回を開催する。(大盛況)
部内向けゲーム制作講習会を開催する。(大盛況)
ICPCアジア地区つくば大会国内予選に参加する。(大健闘)
コミックマーケット90にて部誌を販売する。(大盛況)
部内向けCTF講習会を開催する。(大盛況)
SECCON大阪大会に出場する。(大健闘)
ICPCアジア地区つくば大会本選に出場する。(大健闘)
学祭にて制作物を展示する。(大盛況)
このように、とても充実したサークル活動を行っております。
このような充実した大学生活を送っている各部員たちが執筆してくれるMCC Advent Calender 2016の記事には多大なる期待の念を禁じ得ません。
つたない文章ではありますが、以上で[*1st MCCの話]とさせていただきます。
Sponge Plugin 製作メモ [3. イベントの作成]
書くほどのことでも無いけどメモとして
適当にイベントを探してリスナークラスを書く
public class PlayerJoin {@Listener
public void onPlayerJoinEvent(ClientConnectionEvent.Join event){
System.out.println(event.getTargetEntity().getName() + " join");
}
}
イベントマネージャーに登録するだけ
Sponge.getEventManager().registerListeners(this, new PlayerJoin());
いまはGameStartedServerEvent内に記述してるけどいろいろ考えると登録はGameInitializationEventとかそこらでやるべきなのだろうか.Bukkitでどうしてたか忘れた.Eventはorg.spongepowered.api.event以下にいっぱいあるのでJavadocで探すと良い。
普通に引数eventをゴニョゴニョするといろいろでてくる
例えばgetCause()ではその名の通り何が原因となってそのeventが発生したかを取得する.(bukkitより高度)多分重要