2009-07


戻る

2009-07-05T23:29:55 (Sun)

おーわたおわたー

陵桜祭 7 お疲れ様でした.本も買えたし何人かと話も出来ましたし,楽しいイベントでした.知り合いがほぼ皆無状態だったのが心残りかなぁ~ (^^; もうらき☆すたはやっぱり下火ということなんだろうか…w

それはさておき.

会場で公開していた体験プレイ用のゲームを配信します.内容はひよりんが某ゲームのような要領で原稿を仕上げていく…というものです.本来なら「あと○枚仕上げれば終了」というものですが,これは体験プレイ用ということで何枚仕上げられるかを競う形に改造しました.

http://kaosf.kirara.st/circle/mia_demo_game.tar.gz

作者は昨晩 33 枚,本日 ohrin が 65 枚という記録を達成しました.皆さんはどれくらいスコア取れますかな?

comments

サモ (2009-07-07T17:41:58)

32枚越えられないおー(´・ω・`)

ちゅーか65とかチートだろwwwwwwwwwwwwwwwwwwwwwww

か (2009-07-07T22:09:18)

まぁその ohrin がまた昨日 70 超えを成し遂げたっスけどね (^ω^)

現時点で「3 桁は可能!」という結論らしい.

しかし 3 桁になると多分プログラムがバグって落ちるw

2009-07-06T22:59:18 (Mon)

早速修正パッチ行くよー ^o^

なんとまさかのファイル不足 /(^o^)\

画像と BGM が何故か合計 8 点も抜けていました.

CD に焼いた後に起動しか確認しなかった自分の不手際です orz

Ver1.1 修正パッチ

comments

さし (2009-07-13T20:12:18)

<a target="_blank" href="http://www.nicovideo.jp/watch/sm7624423">【ニコニコ動画】音割れスマン</a>

か (2009-07-15T03:45:40)

わざわざプレイして下さり,しかも動画作成まで…

ありがとうございます orz

2009-07-07T23:07:08 (Tue)

らっきーBlog とらき☆すたネットアイドル・マイスター応援バナー

らっきーBlog らっきーBlog らっきーBlog
らっきーBlog

嬉しくなってつい全部貼っちゃいましたw

もちろん,らっきーBlog も RSS リーダに登録w

「らき☆すたネットアイドル・マイスター」が今から楽しみでなりません.

2009-07-08T23:39:26 (Wed)

胸の痛みで病院へ

どうもここしばらく体を内側に曲げると胸の中央少し左寄りが痛むという謎の症状がありまして,治りそうな気配がしないので病院に行って来ました.

内科と整形外科で見てもらった結果,レントゲンや採血などの結果からは異常は特に見受けられないとのこと.

一応ということで,明日も同じ病院の循環器科で診てもらうことになりました.

何事も無ければいいのですが…

2009-07-09T22:49:26 (Thu)

検査結果

循環器内科でも観てもらいましたが,やはりここでも異常は無いとのことでした.現状の湿布を貼って様子見で十分でしょう,と.

いやはや.何事も無くて助かりました.

一応昨日も今日も万が一緊急入院だなんて言われたら大変なので NintendoDS (Lite 本体と充電器と DS テレビとソフト大量) と EeePC + EMOBILE 端末と筆記用具と大量の落書き用紙を持って行ったりしたのですが,必要なかったようで良かったですw 着替えは緊急入院ともなれば病院側で準備されるだろう,という考えでしたw

しかし今回のことで油断せずに,今後とも何か体調に異常を感じたら早め早めに病院に行こうと思います.やっぱ時代は予防医療っスよ (^ω^)

comments

紀行 (2009-07-10T05:24:14)

異常なかったようで何よりです

か (2009-07-10T23:59:06)

どもども.とりあえずは嬉しい限り (^ω^)

2009-07-10T23:59:34 (Fri)

ターミネーター 4 見てきた

あちこちで面白いとの評判が上がっていたこの作品ですが,とうとう本日見に行くことが出来ました.

ちなみに私はターミネーターの大ファンです.シリーズ中一番好きな作品は 1 だと言い切る程度の信者です.

で,その 4 ですが,そんな 1 や 2 のシーンを元にしたネタがあちこちに散りばめられていて,もう色んな意味で感涙でしたw

特にジョンの顔の傷とかね… もうね… おーっとこれ以上は言いませんよ.気になる方は是非劇場へw

2009-07-11T00:08:01 (Sat)

陵桜祭 7 での技術力 (主に Squirrel) の成果

思い残すことを列挙すると,

・クラスのバインドが出来てない
・Squirrel 側から出た例外を C++ 側でキャッチ出来てない
・SqPlus のような自動バインド機能を使えていない
・Eclipse が単なる Squirrel コードエディタだったので IDE として使いたかった
 (※Squirrel プロジェクトを作るみたいなのがあったのできっと出来るハズ)

しかしチャレンジで得たことも多かった.列挙すると,

・Squirrel 2.2.2 をほとんど使いこなせるようになった
 (※スタックの動きは完璧に近い理解をしているであろう)
・lua や Squirrel の「テーブル」の概念を覚えた
 (※こいつぁ便利度高過ぎる)
・コルーチンを実用出来た
 (※やっぱり便利 最終的にシーン管理なんかはほとんどこいつで自動化された)
・Squirrel ではグローバル変数を多大に使うことになるが案外どうにかなると知った
・この程度の規模なら Squirrel でメインループから書いてしまっても問題なかった
 (※と言ってもメモリ 512MB などの環境では他のソフトとの同時起動なんかは厳しかったようだけど)

さて,SqPlus をどうすっぺか.個人的に今の「関数と定数のバインドだけ出来る」状態で十分っぽいのよね.

後現状で分かっている問題…というか仕様上どうしようもない問題っぽいのが 1 つあって,それがコルーチンでの this がルートテーブル一択であること.例えば以下のようなコードを考える.

::y <- 0;

class Cls {
 x = null;
 constructor() {
  x = 0;
 }
 function method() {
  //local cr = this.newthread(this.f); //こう書いても変わらない
  local cr = ::newthread(this.f);
  cr.call();
  while (cr.getstatus() == "suspended") {
   print("while loop\n");
   cr.wakeup();
  }
 }
 //コルーチン本体
 function f() {
  if ("y" in this) print("y exist\n");
  if ("x" in this) print("x exist (success!)\n");
  for (local i = 0; i < 5; i++) {
   print("coro loop " + i + "\n");
   ::suspend();
  }
  return null;
 }
}

local c = Cls();
c.method();

とすると実行結果は

y exist
coro loop 0
while loop
coro loop 1
while loop
coro loop 2
while loop
coro loop 3
while loop
coro loop 4
while loop

となる.this には x は存在せずに y が存在している.これは this がルートテーブルであることの証拠である.(わざわざループを書いたのはコルーチンをそれっぽく見せるためw)

せいぜいこれを解決するには

::y <- 0;

class Cls {
 x = null;
 constructor() {
  x = 0;
 }
 function method() {
  //local cr = this.newthread(this.f); //こう書いても変わらない
  local cr = ::newthread(this.f);
  cr.call(this); //自分自身のインスタンスを渡す
  while (cr.getstatus() == "suspended") {
   print("while loop\n");
   cr.wakeup();
  }
 }
 //コルーチン本体
 function f(inst) {
  this = inst; //強制的に this を書き換える
  if ("y" in this) print("y exist\n");
  if ("x" in this) print("x exist (success!)\n");
  for (local i = 0; i < 10; i++) {
   print("coro loop " + i + "\n");
   ::suspend();
  }
  return null;
 }
}

local c = Cls();
c.method();

のようにする程度しか思い付かない.

this を強制的に書き換えるってのが非常に気持ち悪い感じ… Squirrel ならこれくらい普通!と思い込むことも可能ですが,はてさて (^^;


[追記 2009-11-30T06:59]

解決しました.詳細はこちらのエントリから.

comments

すん (2009-07-11T22:00:28)

うーむwww

なんのこっちゃ/(^o^)\

音楽の作り方なら授業料変わりに伝授するよ!\(^o^)/

か (2009-07-12T10:41:23)

コルーチンはええでぇ~ (´∀`) 便利やでぇ~

2009-07-12T21:40:51 (Sun)

プログラマの麻疹

プログラマの麻疹 (YoshioriのBlog)

OO 厨とインタフェイス厨とワンライナ厨はかかりましたが既に治ってますw

最近は function 厨と lambda 厨,クロージャ厨になっている気がしますね (^^;

2009-07-14T11:03:44 (Tue)

Haskell 触ってみました

先輩に ghc (Glasgow Haskell Compiler) というコンパイラを教えていただき,先日とうとう関数型言語デビューしました (正確に言うと Emacs Lisp がデビューですが).

ちなみに ghc をインストールすると ghci というインタプリタも入ってます.お得ですw

で使ってみた感想ですが…

カリー化面白いです.式がどんどん評価されていって結果が出る…って言うよりはむしろ結果に「なる」って考え方?これもまず手で追いかけてみたりすると楽しいですわw

所謂 car と cdr と cons は x:xs みたいな書き方してパターンマッチして… ってのが難しい.

あと f :: [a] -> [a] とか f :: (a, b) -> [a] -> [b] とかも慣れるまでは厳しそうです orz

2009-07-15T23:48:11 (Wed)

エヴァ破を見てきた

学校が終わってから,レイトショーで見てきました.

やっぱり劇場版ってのは原作とは別作品として楽しまないとダメだなぁ~w

2009-07-18T23:48:29 (Sat)

ひっさしぶりにそれはもう遊んだ遊んだ

昨日学校が終わると同時にとらのあなにダッシュして東方幻想麻雀を入手し,夜はずっと対人戦やってました.

で今日は朝から渋谷であったヴァイスシュヴァルツの大会に P さんと一緒に参加してきました.

大会が終わった後は天下一品のラーメン (こってりスープ) を初めて食べたり,買い物したり,マッサージ店に行ってみたり,二郎に行ってみたり (※ただし麺終了により閉店だった orz),またヴァイスの対戦をしたり買い物をしたりしてました.

で今帰宅と.

P さんからは明日もヴァイスの大会に出ようよと誘われましたがさすがに疲れるのでパスw (^^;

明日はまた SqPlus と Squirrel の実験や調査をいくつかやってみるつもりです.

そしてそれでもまだ休日が 1 日残っているというのだから素晴らしい…!GW 終了後からまったく祝日の無い期間を約 2 ヶ月程度も乗り切った身には三連休はたまりませんなw

2009-07-21T01:19:06 (Tue)

三連休\(^o^)/

結局残りの 2 日 (19, 20) はほとんどニコ動で FFT の風水術縛りプレイ動画ばかり見てました.

Squirrel + SqPlus とかヘッダファイルの依存関係を追いかけたくらいだね.いや,理論もいいけど実用しろよと orz

動画閲覧は最初からぶっ通して見たため,合計で 10 時間以上は軽く掛かってるみたいです.休日を有効活用したんだか無駄遣いしたんだかよく分かりませんね ^q^

さて,今週は来週から始まる期末試験のための勉強週間です.3 科目 (正確にはそこを更に細分化して 7 科目) あるので,正直単位落とすとまた来年とかやってられるか,って感じ.ですので何としても生き残りたいです.…でも 3 つのうちの 1 つが実に危なげなのよねぇ… うあ~怖い><;;

あとレポート地獄も地味にあったりします.22 日締め切りの大した量の無いものが 1 つと,7 月末締め切りのものが 1 つ,そして 8 月頭が締め切りのもの 2 つ.

その中で更に研究も進めなくちゃならないんですよ… まぁうちはまだ過去の研究の追実験の段階ですので,内容的に辛いものではない (※答えが用意されている的な意味で) のが救いですが.

なんか 2006 年にサイトで日記をつけ始めて以来,本当に冗談抜きで毎年この時期には「試験が~」って言ってますよねw mixi で日記書いてた 2005 年 (大学 1 年当時) はそうでもなかったけど… 夏の風物詩ですなw まぁそれも今年と来年で最後… 俺,院を卒業したら就職するんだ.博士課程はないわぁ… 外国の学会とか行きたくないです><

2009-07-24T16:29:09 (Fri)

Windows プログラミングでの文字の扱いあれこれ

Windows プログラミングに関して,

Unicode,マルチバイト文字,ワイド文字,TEXT マクロ,_T マクロ,WCHAR 型,wchar_t 型,TCHAR 型…

などなどの概念に悩まされているそこのアナタ (私のことです orz).

何かとリンクエラーやらコンパイルエラーを引き起こしてくれるのはよくこいつら絡みのことだったりしますよね.(wchar_t [] を char * に変換出来ません云々…とか)

てことでそういう今ひとつ整理出来てない概念を調べてみました的な調査メモ.というよりブックマーク.

Windowsと文字コード
マルチバイト文字列とワイド文字列
その6 スタティックライブラリとUnicodeとマルチ文字の罠

2009-07-24T19:53:38 (Fri)

Squirrel で日本語を使う

Squirrel/日本語化対応について
Squirrel おまけ (もんしょの巣穴blog)

で,結局どうすればいいんだろう…

プロジェクトのプロパティで「UNICODE 文字セットを使用する」って設定にして Squirrel のスクリプトを utf16 で編集しても結局「ソ」などの文字がエラーを出す状況は変わらないのですが… うーむ orz

ミスってた.utf16 で編集したものだと ?? と出力される (エラーにはならない).どっちにしてもダメですが.

やっぱりもんしょの巣穴 blog にあるようにソース改変しないとダメ?でも ASCII が使えなくなるってどういう意味なんだろう… DX ライブラリが使えなくなる,ってことになるなら今のまま「ソ」「申」「表」「予」「能」「十」を使わないように工夫し続けるのか…

(追記) と思ったら sq.exe で ???? などと表示される場合の対処法,みたいに書いてますね.

setlocale(LC_ALL, "");

と書けばいいらしい? 何なんだコレ…?

とりあえず sq.c に #include と追加して,そして main 関数の変数の宣言の次の部分 (処理が始まる一番最初の部分) にこの関数呼び出し処理を追加してみたら,見事に「ソ」の表示に成功!

で,これはコンソールに出力するときに Shift JIS に変換するためのもののようで.今まで sq.exe で試してたのでもしかしたらゲーム (DX ライブラリの DrawString 関数など) とは別なのかも…

(追記) 結局実際にゲームに組み込んでみたらダメでした orz

せっかく DX ライブラリの API に対応するようにワイド文字 ←→ マルチバイト文字の変換関数 (mbstowcs_s や wcstombs_s) で変換して使うように全部書き換えたのに… (^^;

2009-07-25T11:03:05 (Sat)

Squirrel 2.2.2 stable で日本語を使う方法 (※ただし Shift JIS に限る)

Squirrel 2.2.2 はデフォルトでマルチバイト対応でビルドされるようになってる (プロジェクトのプロパティの 構成プロパティ > 全般 > 文字セット が「マルチバイト文字セットを使用する」にデフォルトでなっている) ので何もしなくても Shift JIS は読み込めるのですが,「ソ」「申」などちょっとした理由で使えない文字があります.

詳しい理由は http://www.shtml.jp/mojibake/sjis_cgi.htmlhttp://www.offsetlabs.com/freenote/note_1_169.html でも見て下さい."ソ 申 表" でググってヒットしたページです.

で,先日紹介した Squirrel おまけ (もんしょの巣穴blog) を参考にします.

ここでこのブログ主は「330 行目に追加」と書いてますが,多分バージョン 2.1 限定の話です.実際 2.2.2 では 332 行目に追加しなくてはなりませんでした.

正確に具体的に言うと,sqlexer.cpp の SQInteger SQLexer::ReadString(SQInteger ndelim,bool verbatim) という関数内の,先に出てくる switch 文の default の処理の先頭部分です.

      break;
     }
    }
    break;
   default:
//独自追加部分
#ifndef SQUNICODE
    if(((CUR_CHAR >= 0x81) && (CUR_CHAR <= 0x9F))
     || ((CUR_CHAR >= 0xE0) && (CUR_CHAR <= 0xFF))){
      APPEND_CHAR(CUR_CHAR);
      NEXT();
    }
#endif //独自追加部分ここまで

    APPEND_CHAR(CUR_CHAR);
    NEXT();
   }
  }
  NEXT();
  if(verbatim && CUR_CHAR == '"') { //double quotation

こんな感じになります.

最初は律儀に 330 行目 (default の前の部分) に追加して,「結果変わらないなぁ…」と悩みました (^^;

気付けたのは SourceForge にあったある人のリポジトリ (shive さんの活動履歴) のおかげです."Squirrel SJIS" でググって偶然ヒットしました.2008-09-04 のリビジョン 29 (sjis 対応というメモが付いてる) の sqlexer.cpp を参照しました.

ちなみに sqlexer.cpp に限らず,Squirrel のソースファイルは全て読み取り専用ファイルになっているので,そこのチェックを外さないと改造は出来ません.ご注意を.(せっせと書き換えて保存しようとしたら「読み取り専用なので保存無理っス,サーセン (^^」と言われたときは焦ったw)

あと shive さんのソースだと追加部分が

if(::isleadbyte(CUR_CHAR)){
 APPEND_CHAR(CUR_CHAR);
 NEXT();
}

となっていますが,どうもこう書き換えても成功しませんでした (ビルドは出来るが例えば "ソ" はやっぱり読み込めない).なので素直にもんしょの巣穴 blog の方を使います.

とりあえずこれで日本語文字を気にせず使えるようになります.Shift JIS に限りますが,別に世界に展開するつもりもありませんし,Windows で開発するならデフォルトになっている Shift JIS を使う方がテキストファイルの保存時にいちいち気を遣わなくてもよくなるのでいいと思います.

2009-07-31T15:57:09 (Fri)

テスト期間終了~

ようやく学校のテストが終了しました.後は 2 つばかりレポートを残すだけなり.

夏休みの予定は,まずお盆までは学校で研究だけは続きます.けど学校に行く時間は授業じゃないので完全自由.なかなか起きられない身としてはかなりありがたいです.

で,お盆はコミケ.コミケが終わったら 1 週間ほどゆっくりしてから,北海道の友人宅に遊びに行きます.

で最終週に徳島に帰省.9 月の頭にまた関東に戻って,そして 9 月 6 日はこみトレで大阪へ.

こみトレでゲームをまた作ることになっているので,8 月中の空き時間は基本的にゲーム作成に回します.

そんな感じで割とダラダラする暇も少なく夏休みは過ぎて行きそうです.

戻る