忍者ブログ
ゲームを作りながらFamous Writerを開発するブログ
[1]  [2]  [3]  [4]  [5]  [6
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先週ファイルの読み書きを思い出しましたのと、文字コードの復習をいたしました。

で、今週は構文解析を作ってみようと思ったんですが、これもすっかり忘却。
再帰降下法の本を読みながらテストコードを書き、再学習しておりました。
Famous Writerの実行時は、皆さんが書いた数式を、コンパイラで後置記法にして処理すると、何かと都合が良くなります。
後置記法にするためには、私の能力では再帰降下法が一番良さそうです。

今日の所は、命令行とインライン行の区別をし、数式や変数なども分け、EditFieldに吐き出す段階です。
これをあーでもないこーでもないと、いじっております。
もう少し進んで、中間コードを吐き出せるようになると、fwdファイルの読み書きにとりかかれるんですがね。
そんな段取りで考えております。

コンパイラというのも、地味なわりに作るのは大変で、見た目はあまり進んでおりません。
PR
以前は毎週末にここを更新しておったわけですが、復帰一週目にして崩れました。
昨日は日曜なので、酒を飲んだらうっかり寝てしまったと(笑)。
ぬる燗の日本酒がおいしい季節です。

先週は、REALbasicのヘルプを読みながら、いろいろいじっておりました。
「ファイル」→「新規」で新しいプロジェクトを作った時に内包される、Appクラス、Windowクラスなどを洗い直しております。
よく読んでみたら、なんかいろんなプロパティやメソッドが、Rb 4.5と比べて増えていることに気づきました
FWはRb 4.5の時代に始めて、そのまま建て増ししてきたわけですが、Rb 5以降に追加になったものをあまり使ってなかったようです。

同じくRb 5以降の特徴として文字コードがあり、Rb内部でShift-JISからUTF-8に変わりました。
この件は掲示板等で何度か書いておりますが、実はよく理解してなくて、サンプルコードのコピペ改変だったりします。
このあたり、真面目に覚えてみようかと思っております。

あと、ファイル入出力なども忘れてたので、data→setting.txtを読むあたりを作り直してみました。
そんなことをやっております。
実に4ヶ月半ぶりの更新になってしまいました。
本日からFamous Writerの開発を再開する所存です。
特に、メールを送っていただいた方、ご心配かけて誠に申し訳ございません。

この間の顛末をご説明申し上げます。
1. 前回のエントリの直後、iBookが故障。電源が入らない症状。
2. 仕事が忙しくて修理をサボる。
3. 7月1日から出向というか長期出張。ウイークリーマンション暮らし。
4. ネットカフェより更新しようと思ったが、パスワードがiBookの中なのでわからず。
5. 11月1日付で本籍復帰。自宅に帰宅。
6. ダメ元でと思いサードパーティ製ACアダプタを買ってきたら、iBookあっさり動作。
7. たぶん、ACアダプタ故障→忙しくて使わないうちにバッテリ放電、で電源が入らなかったと予想。

パスワードについては盲点でしたので、紙に印刷しておきました。
パソコンの故障と、私の仕事に関しては、対策の取りようがないので、ご理解の上ご容赦ください。

で、再開はいいのですが、プログラムをかなり忘れてしまいました(笑)。
ソース見てもわかんないどころか、REALbasicやC++の言語仕様さえも。
少しリハビリすれば戻るかなと思っております。
また週末ごとぐらいの更新になるかと思いますが、こちらで状況お知らせいたしますので、お時間のある時にでもご参照頂ければ幸いです。

今後ともどうぞよろしくお願いいたします。
Poserは結局、前回の「objでモーフ適用済のボディパーツを書きだして、再読込」を主体にして行くことにしました。
objを読み込んだ後、「Replace Body Part with Prop」して、Poser Maconstructorでモーフをごっそりと削る方法です。
六角は、やはり頂点順が変わってしまうため、JCMが仕込んであるパーツは滅茶苦茶になるということに気づきました。
それと小数の精度の問題もあり、パーツ間に微妙なギャップができることがあります。
従って、時と場合に応じて、という事になりますかな。

DAZなどのフィギュアをいじるのはあれですけど、六角で1からモデリングするなら、問題ないんじゃないかなという感触です。
いずれやってみたいですけれど、モーフを作る手間とか考えると、当分は無理かな。
目先、頂点をいじりたい場合は、Poserのマグネットを細かく使おうと思います。

そんなこんなでPoserは一段落いたしまして、昨日からプログラムを再開しております。
ボタンクラスを作り直し、描画とマウスに対する反応を分けております。

時間軸の話としては、描画はFWのタイマーが主体になりますが、マウスに対する反応はユーザーのアクションが主体になります。
この2つが確実にミリ秒の単位で合致すれば、プログラムが簡単でバグが紛れ込む余地はございませんが、まさかユーザーにそのようなことを要求するわけにはまいりません。
v3までは、タイマーでもユーザーのアクションを受けたメソッドでも描画をしておりましたので、機能が増えるに従って、私自身がどのタイミングで描画しているのかわからなくなり、バグちっくな挙動を示すことがございました。
そして、修正すればするほど、ドツボにはまっていくという悪循環(笑)。
v4ではこれを、ユーザーのアクションはフラグを立てるだけにして、描画はタイマーに任せる考え方に変更いたします。

ゲームもFamous Writerも、やりたい事の具体的なイメージはあるんですが、学なき者の悲しさと申しましょうか。
真面目にやろうとすると勉強する事柄が多く、なかなか成果物になりません。
v4をお待ちいただいている方々には誠に申し訳ないのですが、千里の道も一歩からと申しますので、ご理解いただければ幸いです。
連休後半戦は、本日のみプログラムの時間がございました。
が、昨日までの疲れが出ておりまして、あまりはかどっておりません。

やったことは、ボタンを、とりあえずマウスに対する反応の部分だけ、作ってみました。
現段階では、本当に「作ってみた」という状態で、まだレイヤー等の下にあるものと重ね合わせに難儀しております。
それに付帯して、コンパイラも後回しの部分をやり、file型がより厳密な動作になりました。
併せて、関数を解釈するメソッドを作っておきました。

一応、4/29のエントリーで申し上げましたとおり、以下のような記述でテストしております。
  %button = NewButton( ./button1.jpg );
  Button.No = %button;
  Button.Left = 25; Button.Top = 200;
  Button.Jmp = @Inputed;
が、NewButton()はButton.New()に変更する予定です。これは右辺がまだドットに対応していないので、そのうちに。
あと、Button.Jmpは、押された時に飛ぶ先をアンカーで指定します(新機能)。

これを書いてて思ったのですが、ボタンのテストに必要という意味では、コンパイラは概ね終わっておりますな。
明日はそれを踏まえて、実行側の重ね合わせに集中しようと思います。
最新コメント
[06/07 みずき]
[12/21 Rocco Noble]
[11/05 f]
[03/02 Ming.]
[03/02 Ming.]
忍者ブログ [PR]