進行記2002

進んだようならカキコミカキコミ

 戻る


 ●2002年

10月12日

とりあえずページの立ち上げ。
現在状況、JAVAのインストール終了。JAVAの本は二冊買った。
「はじめてのJAVAプログラミング」と「楽しく学べるJAVAゲームアプレット」
基本的にゲームをメインに作るつもり。
だが、j2sdk1.4.1をインストールした途端、他のWEBページで載せてある
JAVAのゲームが遅くなった。ブロック崩しで弾がぶつかるたびに
クッと止まるのだ。なんで???

10月13日

JAVAのゲームが遅くなったのはバージョンアップが理由と判明。
2chは便利だ+激しく感謝+。どうやら大きなプログラムは早くなるが
小さなプログラムは逆に遅くなるそうな。

JAVAって実行が遅いんだから大きなプログラムは不向きじゃないの?
だったら小さいプログラムが速くなる方がいいんじゃないの?
バージョンアップで速くなるならともかく遅くなるのは腑に落ちないよなぁ。
もっと速いパソを買えって事だろうか。何の為の共通プラットホームやら…

進行度:HTMLで 「Hallo進可!」 の表示に成功。

超基本ですな。かなり昔にBASICで小さなゲームを作ったことがあるから
基本さえわかればすんなり進んでいくはず。
でも、時間の足りない社会人なのでとりあえず基礎習得に半年を予定(笑)

10月13日 その2

黄色い円を表示できるようになりますた。問題はこれから。
どんなコマンド(メソッド)があるか?の解説書を持ってないんで
ネットの文献から色々引っ張り出してこないといけないのだ。

円を表示するだけでも、あっちこっち資料をさばくりまくって
ようやっと見つけて思考錯誤し、やっと完成。
進行度:黄色い円の表示に成功。
次の目標は、キー入力。さーて、ま〜たWEBのあちこちから
ソースを引っ張り出してこないといかんぞ。(笑)

10月14日

ようやっと資料集を見つける。本家にあったのね(汗)
だがしかし、判りにくい上に使い方のサンプルもないため
結局WEBから使い方を探してくるのに変わりなかったりする。

で、色々探してみたんだが、なんかバージョンが古い使い方だと
推奨しねーよ!って警告されたりするんだ、これが。
古いプログラムかどうか注意しないといけない。
やれやれ、難儀だな。

進行度:上下左右のキーを取得し
どれが押されたかを表示できるようになる。


なんでか知らんが使わないのに設定しておかないと
うまくコンパイルしてくれないメソッドがあるのだ。
public void keyTyped(KeyEvent e){} ってやつ。
しかもこれが理由だとは判らないようなエラーの出し方。
これで半日つぶれたよ(泣)

とりあえずサンプルの02と03を組み合わせれば
キー操作でマイキャラを動かせるようになるわけだ。
一段落したからちょっとここらで休憩しよう。また〜りまた〜り。

10月19日

力技なサンプルを探す方法を思いつく。
知りたい命令語そのものをgoogleにかける。
これなら大抵大丈夫。

進行度:上下左右キーで円を動かせるようになる。
ワクから出ないような判定も装備。


上から見下ろすタイプの超基本ができますた。
これさえ出来れば、このまま倉庫番タイプにしたり
重力の概念をつけてマリオタイプにしたり
もちろん落ちゲーにしたりも可能。

っていうかキーでカーソル動かすもの全ての基本なんだよな。

今はハミ出し判定のところがちょっと不満だけど
これから知識が上がれば、もっと上手いやりかたが判るかもしれず。

10月20日

配列の開始番号とfor文とif文の組み合わせでちと戸惑った。
0からなのか1からなのか、どこまでループするのか?がよく判らず
ループを一回多く設定したのに気がつかずに、1行目しか描画されなくなったりして(汗)

進行度:配列で面データーを作成し、それを描いてみる。

これさえできりゃ1面クリアごとに読み出していくのもできるな。
平面配列の扱い方も覚えたから、キーで動かしたキャラとの当たり判定もできるはず。
その前にちらつきを抑える方法とかも覚えないとね。
面データーもそのうち他のファイルから読み出しするようにしたいし
壁やキャラも出来ればgifファイルで描いてみたい

むぅ、やれることが増えたら目標がいっぱい出てきたぞ…
でも目的はゲームの完成だから、なるべくシンプルにした方がいいなぁ。

目標は、まず遊べるようにする!として
面ファイルとかgifファイルを扱うのは後回しにしておこう。

10月23日

やはり避けては通れぬ道、アニメーションとちらつき防止に関して。

進行度:アニメーションするボールのちらつきを完全になくす。

う〜ん、色々しなくちゃならんことがあってめんどいなぁ。
start、stop、runの使いかた。速度制御のsleepは4行で1セット。
ちらつき防止にはupdateにオフスクリーン。やること多すぎ。

スプライトを使えるベーシックしかやったことなかったから
何か書き換わるたびにいちいち全部を描き直すって知って驚きだったよ。
しかもちらつき防止の処理すらこちらでやらんといかんとは…

まぁ一度覚えてしまえばあとは変えなくてもすむものばかりだし。

しかしよ、JAVAって確かあとづけで色々加えられる機能をもっていたよな。
ってことはまるで2Dスプライトを扱うようにするアプレットなんてのを作っても…
いや、すでにそういうものを完成させてる人がいてもおかしくは無いな。

で、探してみたところやはりあったことにはあった。
けど、皆さん苦心しておられるようで。ん〜自分にはまだ無理そうだ。
速度的な問題が起こっていない限り、後回しでいいよね。

10月27日

とうとう2chで聞いてしまった。できれば自分で解決したほうが身になるけど
どうにも探しまくってもでなかったから(汗) 探し方が足りないな。

進行度:スペースキーで次々に面を読み出す。 その07

さてさて、ようやくステージごとの読み出しができました。
少しづつゲームっぽくなってきてますぞ。

ところでなんでいちいち小分けに攻略していくのかというと
一気に進めちゃうと、後で自分でもわからなくなるからなんだよね。
部品単位で進めていけば、他のゲームを作る時に最低限の参照ですむようになるし。

あと、タブをそのまま表示させるやりかたを見つけたので
今回のプログラムからそれで表示させるようにしました。以前の修正はまた後で。

11月02日

えっと、やっと気がついたんだけど、配列ってXとYが逆になるようです。

int men[][]={
{0,1,2,3,4,},
{5,6,7,8,9,}

とかやると、men[][]の中身を見るには[縦Y][横X]って感じで
指定してやらんといかんことに気がつきますた。
つまりこの場合、数字の9が入っているのはmen[4][1]じゃなくてmen[1][4]ってこと。
普段、グラフィック関数で指定している(X,Y)とは順番が逆なのね。

そいうことでその7のプログラムを書き直しておきました。

11月03日

進行度:迷路を描画し、マイキャラをキーで動かす。(壁判定付き)

どうにかそれっぽくなってきました。今が一番ワクワクするところかな?
お遊びで黄色い●を食べられるようにもしてみた。
出来れば全部食べたらクリアーとかの方がよかったか?

今回、面データー構成と枠外判定の部分で外枠を使わないようにしたけど
考えてみれば、倉庫番系の場合、荷物を枠外に押すようなケースもあるんだよね。
それを考慮するとやっぱり仮想の外ワクを作っておいて、あらかじめ
そこを壁で埋めておくような方法を使ったほうが、後々の処理で楽だよなぁ。

読み出し用の配列と描画用の配列も一緒にしたから
自分の位置を設定する時も面データーのついでに書いておかないといけないし。
別にしとけばコピーする時に
「もし数が9(マイキャラ)ならその時のXYをマイキャラの位置にする」
という処理ができるしな。

よし、決定!次は外ワクデーターバージョンで組んでみるか。
ついでに黄色いボールを全部取ったら次の面に行くようにしてみよう。

11月10日その2

進行度:キーで動くマイキャラを途中の位置も表示させる

いっきにぱぱっと動くのはちょっと見た目がね、ちゃちいというか目に悪い。
なもんで動作中の動きも表示させるようにしますた。

しかしこれやるだけで一気にプログラムの中身が変わるねぇ。
repaint()の位置を変えてやらんといかんかった。

あと、コンパイルの時にちょっと手間取った。
public class b_anmmov extends Applet implements Runnable KeyListener {

上の宣言、これがダメなんだよ。通らないんだ。でも
public class b_anmmov extends Applet implements Runnable, KeyListener {

これなら通るんだよ。もうなんじゃそりゃ!って気分。

11月10日

進行度:迷路内でマイキャラが動き、アイテムを全部取ったら次の面へ

黄色い玉を全部取ったら次の面に。としただけでかなりゲームっぽさが増したな。
今回は内部処理の整理を中心に進めたから、外見ではあまり変化が無いね。

だんだんソースが怪しくなってきたから、次からはソース公開やめておこうかな…
ここからの展開はこのゲーム専用のプログラム処理になるだろうから
どんどん長くなる割には変更部分が少なくて、応用もきかないだろうし。

ま、動きを見るためのサンプルプログラムなら載せていくんでよろすく。

11月14日

進行度:ゲーム、できちゃった・・・

えっと、いきなりですが遊べるところまで出来てしまいました(笑)
自宅待機が必要な状態&現実逃避という状況のおかげです。

ルールは無茶苦茶簡単なので誰にもすぐわかるでしょう。
スライドという動作がキモです。

この後は、どう飾り付けするかですね。タイトル表示に面セレクト
壁やマイキャラ、あと円のマークをGIF化して見た目をもっと華やかにしたいし。
とりあえずマイキャラは足の動きを描かなくていいジサクジエンに決定。

11月16日

進行度:GIFってみました。面もちょっと追加

ブロック・マーク・自分をGIF化した途端、ものすごくゲームっぽくなりました。
なんか嬉しいです。嬉しいついでにEASY6面ぶんを追加。

一番下に簡単な面の解説をしてあるけど、良く考えたら
今、何面なのか表示されてないから、どれがどれやら判り辛いんだよなぁ。

次はここを飾り付けですね。でも面数表示の他に表示するものが無いなぁ
ステップも時間もいらないだろうし、動作説明はHTMLでいいし。

11月18日

進行度:簡単に面数表示。マークが2種類に

簡単にですが、面数を表示させてみますた。
あと、マークを増やして2種類にしてみました。
これで前よりはだいぶ見やすくなりましたな。

面データーを数字でポチポチ打つのはいいかげん飽きたので
エディタでも作ろうかなぁと思ったところで判明。
JAVAアプリってセーブ機能無いじゃん・・・

どうやらサーブレットとかいうのにはあるようだけど
それはそれでまた覚えなきゃいけない事が増えるんだよなぁ・・・
まぁ、今からHSPとかVC++とかに移るよりかは楽な気もするけど。

しばらくは面は手打ちにしときます(泣)

11月21日

進行度:GIF画像のロードを改善。全部読み込んでからゲームスタートに

指摘がありまして、ブロックなどのGIF画像が全部読み込まれる前に
ゲームがスタートしてしまうようなので、そこの部分を直しました。

MediaTrackerというのを宣言しておいて、色々前準備をしておかなければ
いけなかったようです。っていうかJAVAってグラフィックのお作法が多すぎ・・・

updateでくくってからオフスクリーンに描いて表に一気描きしないといけないし
画像は最初にMediaTrackerで読み終わるまで待たせておかないといけないし
アニメーションはアニメーションでrun()の処理がkickerやら何やらあるし

一区切りついたらこのへん色々まとめて、JAVAゲームのお作法みたいな
コーナーでも作ろうかね。

11月22日

進行度:サンプルプログラム。テキストファイルを行毎に読み込んで表示

色々調べて時間はかかったけどなんとかファイル読み込みができますた。
や〜ほんと苦労したよ。fileReader命令がDOSじゃできるのにアプレット表示だと
実行不可な命令だということに気づくのが遅れたり、せっかく使える命令を
見つけて動いたと思ったら実はその命令が推奨されていないものだったり…

で、今日やっと気がついたんだけど、裏画面に描画する場合って
paint() メソッドの外でも描き込みしてもOKなんだってね。
俺、描画命令形は今まで全部paint() の中で処理してたよ。
…………もうね、そこだけソースぐちゃぐちゃ(笑)

うう〜ん1から作り直した方が綺麗なんだろうけど
どうせ複数のclassを使うやり方を覚えたら、また書き直したくなるんだろうなぁ〜
はい、お察しの通り石板庭はclass一つのみで作ってますです。
メソッド作っても引数渡したり返り値戻したりするやり方がしっくり来なくて
全部外側で宣言したintやらbooleanで行っております。
ほんとBASIC思考が抜けませんです。ま、慣れたらそのうち使うからね、そのうち・・・

11月24日

進行度:石板庭の面データーをテキスト化。練習もEASYも同じプログラムを使用

とうとう面データーのテキスト化までできました。やぁ〜〜これ、いっちゃん疲れたわい。
何せ、何かあるたびに動かなくなっちゃうんだもん。ファイル操作をしてるせいか
ウインドウズ自体の動きが不審になるし。まぁ、問題無くなったからいいけどね。

ただ、そのおかげでかなりプログラムのソースが複雑化してます。
みっともなくて見せられないくらいです。
なるほど、みんなソースを公開したがらない訳だ。

一番の問題は、面データーがきちんと縦横共に規定の数という条件でないと
プログラム自体が動かなくなってしまうのが・・・俺が使うだけだからいいんだけどね。
ファイルが無かったり、構造がダメだったりした時はハングアップせずに
エラーを出すようにしたかったんだけど、まだそこまでの知識が無いですなー

とりあえず今後は細かい飾りとか、出来れば面エディタの作成とかしてみるつもり
一段落したからこれからペースが落ちるヨカーン。

11月25日

進行度:石板庭、面データー追加。ノーマル(POP)を10面

土日でどうにか面エディタができちゃいましたので、それで打ち込んでみました。
セーブできないのにどうやったか?というと、面エディットした後で出力ボタンを押すと
横のテキストフィールドに面データーが出力されまして、それをカット&ペーストして
テキストに保存するというやりかたです。

ただこのエディタ、床にもマークを置けるし離れたところにも同じ色のブロックを置けたりで
面として成立しないものまでできてしまうんですよ。なのでこれはまだ非公開とします。
まぁそれもルールの一つとしてやっちゃってもいいんだろうけど
面として遊ぶのに問題があるものは、なるべく避けたいですし。

次は横があっさりしてるのをなんとかしたいなー。いっそ下か上にもっていって
ついでにリトライ、NEXT、BACKのボタンでもつけようかと思ってます。

12月01日

進行度:石板庭、面追加。STAGEとボタンのGIF表示。

戻る、リセット、次面ボタンもつけますたー。
面も難易度バラバラのものを15面ばかし追加。
まーここまでくればほぼ完成ですね。

あと、他にやるとしたらほんと細かい部分しか無いと思います。
ジエンに荷物をつかむ手を表示させようかちょっと迷ってるとか
でっかく「石板庭」ってタイトル画面を表示させるのは無駄かなー?とか
アニメーションつき解説は欲しいけど、HTMLで解説できてるしなーとか

来年夏までの予定が勢い余って今年じゅうにできてしまったのは
ちとハイペース過ぎたなぁ。まぁほとんど完成しちゃったし
これからはまた〜りでいきますんで。気長によろしゅう。

12月06日

進行度:石板庭、高速化!

ちょっと聞いてくれよ!面は追加してないけどさ。
このあいだ、JAVAのバージョンを1.4から1.3に落としてみたんです。
そしたらなんか表示がめちゃくちゃ重くてゲームにならないんです。
もうね、アホかと。馬鹿かと。

ってな感じで、表示の高速化をしてみました(笑)
今までは例えジエンが何もしてなくても、全面の床、壁、ブロック、マーク
ジエン、上の表示もろもろを全部上書きしてたんです。そりゃ重いよな。
もうね、アホかと。馬鹿かと。

で、アニメーションするような部分外の床、壁、置いてあるブロック、マーク、上の表示は
第2のオフスクリーンを用意して予めそこに描くようにしたんです。
つまりだ、オフスクリーンだけでなく背景用Imgをもう一個持つようになった訳だ。
こうすれば配置データー調べて一個一個ブロック置くような負荷のかかる真似はしないから
表示が速くなるんだよね。


それじゃ牛鮭定食食いに行くんでこのへんで。

12月08日

進行度:石板庭、高速化にともなうバグを修正

つかんでいるブロックを移動時に放してしまうバグを取りました。
表示関係も前よりは変なちらつきを抑えたつもりです。
どういうわけかまだ少しちらつく時があるので後はこれ関係ですな。

しかし、今さらながらに思ったけどsleep()ってゲームの動作につかえね〜〜
同じsleep(4)のはずなのに、表示方法を変えるたんびに
ジエンやらブロックやらの動作スピードがコロコロ変わってしまうんよ。

移動スピードなんかを処理する場合、一端停止で制御するよりは
time関係のものを何か使って処理した方がよさそうですね。

うんうん、次の課題はこれにしよう。

12月10日

進行度:石板庭、高速化の見直し。

また〜りモードに入ると言った割には1.3と1.4の整合性で
ガタガタ更新してますが、これでようやっと安定しました。

つかみと放し時の画面更新を極端に少なくした結果
毎回書き換えなのに速いというイイ感じのものに。
一応1.4と1.3の両方でチェックしたので多分大丈夫かと。

ふー良かった。これでできなきゃ新たにジエンのスピード調整を
つけようかと思ってたよ。スピードといっても移動中描き変えを
今のような1ドットずつにせず、どれだけ減らすか?ってものなんだけどね。

見た目悪くなるからやらなくて済んで良かったよ。
これでようやくまた〜りモードになれます。

12月16日

進行度:石板庭、面の区分けと追加。

面を11面ばかし追加して、難易度を4つに分けてみました。
結局複雑なものばかりが増えてしまったけど
一通りのものはそろえたつもりです。

さてさて、そろそろお披露目といきますか。
感想は2chで聞くつもりなんでメアドも掲示板もここでは無しってことで。

12月19日

進行度:石板庭、バグ取り&負荷を軽くしてみる。

やはり何も無いのに毎回書き換えというのはCPUにかなりよろしくないようなので
repフラグを作って何か変化がある時だけtrueを立てて描きかえるようにしました。

とやってみたがまだCPU占有率は100%のまま。なんで?って思って色々チェックしてみたら
run()をsleep()無しで空回しすると、かなりの負荷になることが判明。
何もしてない時のrunループ中もsleep()で休みを入れさせなきゃいけないようだ。

JAVAって何もせん時には本当に何もしないのに、いざやれって時にはトコトンやるのね(笑)

12月22日

進行度:石板庭、ロード中メーター表示。クリアイイ!のGIF化。

えと、たぶんこれが最終バージョンです。これ以後、見た目の改良は無し。
あとはバグ取りや面の追加ぐらいになります。

っていうか石板庭ってJAVAゲーにしては見た目に凝りすぎた気が(汗)
STAGEもわざわざGIFにしなくてもいいものだし、リセットなどのボタンもそうだし
移動中を1ドット単位で表示するのもジエンのジャンプも無くてかまわないはず。
初めて作ったJAVAゲーで、JAVAの勉強も含んでるから
盛り込めるものはなんでも盛り込んでしまった感じですね。
演出を省略すればダウンロード時間はたぶん今の半分ですむだろう。
でも、でも、やっぱり削りたくなかったんだよなぁ〜

遊んでくれてる人、2chで評価してくれてる人、ありがとうございます。
次に何を作るかの予定はまだ未定ですがこれからもよろしくです。

・・・・・・・・石板庭、iアプリ化って難しいかな?(ぉぃ

ではまた来年。

 戻る