2010/06/26(Sat)じゃば☆ちゃれ

はてブ数 2010/06/28 3:47 計算機な日記::プロコン つーさ

ACM/ICPCを翌週金曜日に控えた土曜日でしたが
「今年は国内予選からJavaチャレンジがあるだとっ
 そんな楽しいイベントに参加しないわけにはいかないっ!」
というわけで、お化けカボチャの栽培に精を出す土曜日になりました。

以下、感想というか反省というか、色々思ったことなどをつらつら。

Javaチャレンジというと、僕は、一昨年の会津大会、昨年の東京大会についで3回目の挑戦です。
去年の早稲田のゲームが結構面白かったからか、割と雰囲気似た感じのゲームでした。
ルールはだいぶ違いましたが。

いつもオンサイトで行われるJavaチャレが1時間半であるのに比べ、今回は4時間!
4時間もあれば、結構じっくりしっとり作れるんじゃないか、と意気込み十分でした。
始まる前はそう思っていたのですけれど、ねぇ……。

まず、ダウンロードしてきたzipの中身が文字化け祭りでえらく困った30分……。

開発環境のちがい。

今回一番悩まされたのがこれかなぁと。

私にとって「開発環境」と言えば専らVisual Studioのことを指します。
つまり、Javaは愚か、Eclipseなんてほとんど縁がありません。
そんな私が、いざEclipseを使うと、どーなるか……。

まず、ショートカットキーわからない。
特にコード補完でしょうか。癖でCtrl+Spaceだろ!→日本語入力ON(笑
うわあああああ、もおおおおおお!
細かい環境の差異は、ストレスとなり、思考の流れを阻害します。

その結果何が起こったか。

バグを量産しました!(笑

コンパイル・実行すると「あれー挙動が思ってたのと全然違う」という状態に何度なったか。

さて、たっぷりとバグを埋め込んだら、バグ取り祭りです。そこでまた一言。
「あれ、ブレークポイントってどうやって仕掛けるの?」

printfデバッグ祭りハジマタ!(笑

自分のプログラミングがいかに環境依存かというのを知らされるハメになりました。
うーん、Visual StudioでJavaが書けたらなー、と思わずにはいられなかった……。

事前準備のあまさ。

あれやこれやと汚いコーディングを繰り返して1時間くらい経ったところで思い至ります。
うーん、これは、後から編集するのは、正直むり……。そうだ タスクシステムを、作ろう。
他の2人には、戦略の議論をしてもらうことにして、GSD的スーパーコーディングタイム到来。

動作をクラスにパッケージして比較的簡素な記述ができるように、
タスクシステムを30分ほどで実装したところまではよかったのですが……

その後さらに30分バグ取りしました;;

い、いつもの力が出せれば、こんなやつに……っ

おかげで、その間に考えてもらった戦略を実装する時間が30分減ってしまい、あいたたたー。

考えても見れば、「AIを実装する」ということはわかっていたわけですよ。
この手のコードを書くときは、yieldというか、コルーチンのようなものを使いたくなる。当然なる(笑
だから、そういうことができるような、タスクシステムのコードスニペットくらい用意しておけばよかったなぁ。
そういう意味で、Javaチャレとはいえ、事前にどんなルールが来るかわからないとはいえ、準備はできたのではないかなぁ。

そう思ったのです。

マップに関するトラウマとの戦い。

僕は、初回参加が会津だったので、あのときのトーナメントで出てきた意地悪なマップがかなりトラウマになっています。
もしかして、マップ内に行けないエリアが多数あるんじゃないか(ランダムで行き先座標を決めたら嵌るんじゃないか)とか
絶対に図形ボーナスが得られないような地形が与えられるんじゃないか(ボン○ーマンみたいな格子マップ来たらどうしよう)とか、
そういうコーナーケースが怖くて怖くて仕方がないのです。

今から取ろうとする行動が本当に可能なのか、しっかりチェックしたくなってしまいます。
そして、そんなコードを書きながら、主催者側はこういう部分の実装まで意図しているのだろうかといつも疑問に思うのです。
普段、ゲーム作ってるときは、マップも自分たちで用意してるので、そういうマップがないことを保証できるのですが。
もうちょっとこう、マップに関する情報も公開されていればなぁと、思います。

本当は、そういうことまで考えて実装しても4時間もあれば十分なはずなんですが。
偏に環境に慣れていなかったせいで、十分な生産性が確保できなかった。
Eclipseに慣れておけなかった自分がすべて悪いんですけど、はい。

えとせとら

その後も慣れない環境のせいで、バグをたくさん埋め込んで、
慣れない環境のせいでprintfデバッグ祭りでした。

もともと、やろうと思ってたことの半分くらいしか実装できなかったし、
そもそも「何をすれば勝てるのか」という部分についても、全然考え切れてなかったので、
そういう意味では、もうちょっと、環境に引っ張られないように、しておくべきだったのかなぁと。

時間切れ間際に書いていたクラス、BetaBetaTaskも、結局バグが取り切れずにコメントアウトされてしまったのです。
それはつまり格子マップが来たらお手上げということを意味していて、我らがID173は、そこで敗退するでしょう……。

い、いつもの力が出s(ry

なにはともあれ

ひたすら実装デバッグ実装デバッグ実装デバッグな4時間でしたが、結構楽しかったです。
来年もまた開催してほしいです! (僕は出られないのですが)

スタッフの方々、楽しい時間をありがとうございました!
決勝トーナメントの中継を楽しみにしてます。

当日11時ごろから環境構築のために大学に出かけていったのですが、
なんと、我らがコーチの@yzn8先輩がしっかり環境を準備してくださってありました。
この場を借りて、ありがとうございました。せんぱい、だいすきです。

一緒にコーディングしてくれた@kero7、@hiyoguin、おつかれさまでした。
そして、願わくば僕らのID173が決勝に残りますよーに!

(おわる)
眠いので日本語崩壊気味でした。

  • QT @kero7: Javaチャレ → Javacharエ と変換された。泣きたい。F10変換で学習すんなよ、このっ

まったく同じ現象が起こっていて吹いた。