|
LaTache Noir Ex |
開発中! |
|
これまでサイトで公開してきたゲームは、どれもある部分がものすごく手抜きだった。 それがランキングだ。 初期の頃はアルファベットしか入力できないわ、後期でも文字化けするわ…。 今はサーバー側もPHPが自在に使えるので、urlencode() を使えば一発だ。 (それでも問題はあるのだが) とりあえず、名前を入力し、データベースに登録するまでの汎用化はできた。 さて、外側はだいぶできたので、いよいよゲームの中身だな…。 |
|
プチネットクルセイダーの演出で、ランダムエンカウントがあった。 突然現われて、よく判らない単語を入力させられる敵が登場したのだ。 このよく判らない単語は、二つの辞書から単語を選んでプログラムで繋げていたのだが、その機能を強化してみた。 単語の中から別の単語を呼び出す機能を追加してみたのだが…。 ヤバイ、面白すぎる! 私のコンセプトとして、制作者が楽しく遊びたい、というのがある。 タイピングゲームの場合、問題文は自分で作るため、全て知っているわけで、これでは面白さが半減する…ということで入れたランダム合成なのだが、コレ、結構いいな。 |
|
どうでもいいタイトル画面は華麗にスルーして、イキナリ入力画面へ。 ここで制作しているものは、過去に作ったものを多少整形し、順次実装しなおしているだけだ。 当然タイピングの部分もすでにあるのだが、このクラスだけ異常に完成度が高い(笑)。 内部のコメントも事細かに修正履歴が綴ってあるくらいだ。 余談だが、最近「タイピング 作る」というキーワードで検索して、このサイトに来る人がいる。 おそらく、入力部分(ローマ字自動判定など)を期待して見に来たのだろう。 この辺も近々まとめてみようと思っているのだが、このクラス、すでにブラックボックス状態なんだよな…。 さて、画面に単語が3つ表示して、入力を受け付けるところまではできた。 入力完了した単語は次の単語に置き換わって、また入力できるようになる。 入力途中でESCキーを押すと入力がリセットされ、最初からになる。 …のだが。 ここが悩んでいる部分の1つ。 他のタイピングゲームでは、TABキーでターゲット移動ができるものが多い。 私もTABキーを使いたいのだが、今のJavaアプレットでは使えない。 理由は明確で、通常、ブラウザでTABキーを押すとフォーカスが移動するようになっている。 なので、TABキーを押すとアプレットのフォーカスが別のところに移動し、入力できなくなってしまうのだ。 マウスでアプレットをクリックしながらTABキーを押すと正常に動作するので、フォーカスの問題であることは間違いないだろう。 というわけで、今のところどうしようもないので、ESCで代用中というわけだ。 ここまでできれば、後は(もっとも肝心な)ゲーム部分を作るだけだ。 さて、どういう内容にしようか…。 過去に作った「対話型」も「クルセイダー」もどっちもゲーム部分が大変だし。 |
|
タイピングゲームと言えば入力単語。というわけで、外部ファイルから読み込む部分を作成した。 外部ファイルにするのは、プログラムを変更せずに単語を追加・削除できるから。 カスタマイズを前提とするなら、こう作るべきだろう。 その他に気をつけている点としては、 ・数字を使う場合、1から始める (プログラマは0から使いがちなのだ) ・エラーを分かりやすく表示する (辞書のどこにエラーがあったのか等) 今はエラー表示はまだ作っていない。 今回の仕様上、後でまとめてチェックを行なうので、ここではファイルがあるかどうか程度のチェックをしている。 単語はカテゴリー単位で「辞書」としているので、複数設定できるけど今はテストなので1つだけ。 辞書ファイルは別スレッドで読み込みするようにしている。 カスタムカードでは、読み込み中にブロック崩しで遊べるようにしていたのだが、 わりと不評だったので(笑) 今回は ON/OFF 機能をつけよう。 ブロック崩しではないと思うけどね。 |
|
ゲームらしくするためにタイトル画面を作る。 マウス操作クラスも使用し、クリック&フェードまで作成。 タイピングゲームは色々作ってきたし、色々遊んだ。 パソコン用のタイピングゲームは星の数ほど販売されているが、 良いと思ったのは「特打ヒーローズ命探偵コナン」くらいだ。 その理由は、ほとんど全てがキーボードで操作できるから。 ゲーム中はもちろん、ゲームの選択・終了まで全てキー操作で可能。 (ハイスコアが出たときのネームエントリーだけはマウスが必要なのが残念) その点で一番酷かったのがZガンダム。 メニュー選択はマウス操作のみでゲーム中はキータイプのみ。切り替えが面倒デス。 というのを踏まえると、現状のタイトル画面はマウスだけなので、そのうち変更する。 他に考慮する点として、ゲーム画面のサイズが挙げられる。 今は 400 x 400 だが、適当なサイズに変更しても成立するような位置にタイトルやメニューを表示するようにプログラムしなければならない。 自分用なら決め打ちでいいのだが、一応このタイピングは素材を目指しているので、画面サイズはカスタマイズの1つの要素なのだ。 |
|
ゲームには、入力が必須。 というわけで、次に作るのは、マウス入力とキー入力。 これまた、古いやり方で作ってあるので、かなりの修正が必要だ。 しかも、何か少しバグってるし。 だが、今のところ使えるので、修正は次の機会にしよう。 キー入力テスト画面を表示。マウステストもあるけど省略。 |
|
ゲーム・アプレットは複数のクラスで構成される。 私の場合、読み込み、背景、エフェクト、イメージ、キー、マウス等、その数は30を超える。 全てを一度に見直すのは無理だから、まずはメインとなる起動・終了クラスを確認。 これだけならクラスは1つだ。 パラメータの読み込みを修正した程度でまずはOK。 背景だけでも表示しないとワカラン、というわけで次は背景クラス。 ラターシュのゲームではおなじみのタイルパターンがスクロールするタイプだが、 演算に多少無駄があったので修正。if文なくしたから、多分速くなってるハズ>検証しろよ 次は、なんと言っても文字表示。これがないとデバッグもできないしね。 これはちょっとだけ厄介。 たかがフォントと言う無かれ。Javaは色んな環境で動く設計なので、それに対応しなければならない。 まず、文字化けしない書体を探し出し、どんな環境でも同じ大きさで表示されるように計算しておく。 書体は好きなものを1つだけパラメータで指定できるように変更。 それでも文字化けしたらエラーで終了。というわけでエラークラスも調整。 エラークラスも含め多くのクラスが独立設計で使いにくかったので、メインクラスを継承するように修正した。 演出的には、フェードイン・フェードアウトが必要なので追加。 これについてはかなりの無駄があり、削除したらコードが半分になった…。 Java2Dの半透明機能は処理が重いので、変なフェードの仕方で誤魔化している(汗)。 色々修正して追加したら、この時点ですでにクラスは10個。多っ。 |
|
カスタムカードの最終更新が2003年ですよ。 それから後にも、趣味用に数独解答&問題生成プログラムを作ったり、仕事で必要なツールを作ったりはしていたけど、ゲームはホント、久々って感じ。 一ヶ月前の自分のプログラムは既に別人のモノと思って間違いなし。 というわけで、基本は踏襲しつつも作り直したほうが早いと思い、制作を開始。 すぐには完成しないだろうから、後の自分のためにも制作過程を記録していくことにしたのがココの目的だ。 |
| ■Home |
|
| テストアプレットを終了する |
|
|