ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

女子フィギアスケートのシュミレーションゲームだろーね。ゲームとして、面白そーなのは

2006-05-11 23:54:51 | Weblog

 さっきの事例ベースのゲームの話。
 やっぱ、作って面白そーなのは、女子フィギアスケートでしょーね。

 選手を選んで、
 プログラムをてきとーに作るわけですよ。

 そーすると、いままでのその選手のプログラムでの成功、失敗の結果から、
 そのプログラムをやったら、どーなって、何点っていうのがでる。

 もちろん、滑っているところも、でるわけですよ。




 たとえば、
選手を荒川静香にして
プログラムに
トリプルアクセル-ダブルループ
トリプルアクセル
とかやると、失敗する
(荒川選手は、トリプルアクセル2回を成功したことはない)

けど、選手が「浅田真央」だと、OKとか
(浅田さんは成功したことがある)




で、実際にプログラムを作ったら、それを上演させて見ることができるだけでなく、
解説者を選んで、解説してもらうこともできる。
八木沼純子さんだと、淡々と的確に解説するが
伊藤みどりさんを選ぶと、「真央ちゃんかわいい」しか言わないとか(^^)v




別に、事例ベースに基づく必要はなく、ふつーにゲームとして作っても面白いとおもう。

で、問題は、これ、実写も入ると、すごいよね。
全部実写は無理だろうけど、一部アップになるところとか、

たとえば、荒川さんのイナバウワーとか、
真央ちゃんのトリプルアクセル、4回転、髪の毛をはじくところ
ミキティの4回転(できるかな?)、スパイラルシーケンス
村主さんの星が降りてくるところと、スピン
浅田舞さんの顔(なんじゃそりゃ ^^;)
中野さんのドーナツスピンは。。。どーでもいいや(おーい!!)

とかは、そこだけ、急に大写しになって、実写になると。。
(ほかは、滑ってるところはアニメキャラで小さくてもかまわないから)




そしたら、それかって、得点関係なしに、荒川さんに、イナバウワーをずーとやらせるやつとか、出てきそう(もちろんそういう楽しみ方もアル。ただし、真央ちゃんに、トリプルアクセルをずーっとやらせるのは無理。何回かで失敗する。。。その点は、ちゃんとつくるということだね)。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

事例ベース推論までさせるとシュミレーション・教材化しにくいが、事例ベースからなら作れそう。

2006-05-11 20:40:59 | Weblog

 昨日のお話の続き。
 事例ベース推論からシュミレーションゲームを作れれば、すごいよねえ。って話。

 で、問題は、できるかどうかだけど、結論から言って、

 ゲームや教材でいいんなら、事例ベース推論までやらせるよりも、
 事例ベースをあつめて、そこからストーリーを構築したほうが、おもしろそーよ。
 つーか、事例ベース推論は、ゲーム成立には、むりがあるっしょ。

 なんで、事例ベースの集め方をノウハウ化し、その事例ベースから、ゲームストーリーを
組み立てる方法を確立すれば、いろんなシュミレーションゲームでも、教材でも、できそうな
気配。。

 では、詳しく書きます。




■事例ベース推論とは

 このかたのサイトが分かりやすかったです
http://shouchan.ei.tuat.ac.jp/~yozo/mypage/yakyuu/11aki_cbr.html
で、そこから引用すると、こんな感じらしい(斜体は上記サイトからの引用)

 事例ベース推論は
コンピュータに問題解決の事例をあらかじめたくさん入力しておく。それは成功した事例と失敗した事例が混ざっていてもよいし、成功した事例だけを入力しておくのもいいだろう(簡単に成功と失敗とを評価しにくい場合もあろうが)。そして新たな問題が現れたら、過去の類似した事例を検索し、その事例において実行した解決策を出力する。検索事例が失敗事例だったら「次に似た事例を検索する」なり「その解決策は避ける」なり、いくつか対処法は考える。そして新たに解決した問題についても「状況」「解決策」「結果」といった要素からなる事例として蓄えることで次からの推論で使える。


ということは、
1.事例をたくさん集める
2.そいつを、DB化する
3.問題事例を提示する
4.問題事例に類似する事例を検索する
5.そいつ出力
6.成功、失敗した結果を又DBにいれる。




■で、事例ベース推論でゲームを作ったらどーなるか?

 この考えで、ゲームを作ることを考えよう。
 具体的に考えるため、「ときめきメモリアル東洋英和女学院編」というのを考える。
こうなる
1.東洋英和女学院の人と付き合ってる人その他もろもろ?の人
  をたくさん集めて、付き合うまでの事例をだしてもらい

2.その過程と結果(付き合えたか、NGか)をDB化する

3.問題事例(=ゲームの場面、イベント)をだす

4.2から検索し、

5.結果を提示

 でも、これはむり。なぜなら、2番までは、作れるけど、3のゲームのイベントをどう並べて、シナリオを作るのか?が、今、問題なのに、この事例ベース推論では、その3の問題事例は、当然のこととして出てきている。その上、類似事象から検索してって、類似してるかどうかの判断は、どーするのか?ってことになる。




■なので、ゲーム・シュミレーション化するには、事例DBから、人間が組み立てる

 ということで、これで、シュミレーションするには、事例DBから、人間が、問題となる場面をとりだし、そのとき、これだと成功しそう、これだと失敗しそうというのを考えて、つくっていかないといけない。そーしないと、ゲームやシュミレーション教材としては、成立しなさそう。

で、そうすると、こんな感じになる

1.東洋英和女学院の人と付き合ってる人その他もろもろ?の人
  をたくさん集めて、付き合うまでのイベントつーか出来事を、
  いろいろだしてもらい

2.その過程と結果(付き合えたか、NGか)をDB化する

3.東洋英和女学院の人をオトす・失敗するのに、共通、
  あるいは重要そうなイベントを抽出し

4.そのイベントで、どう振舞った場合、どうなるというのをDBを検索しながら考え、

5.シュミレーションとしてくみ上げる。




■っていうことは、事例を単純に入れるんではなく、ヒアリングの段階で、考慮する

 とすると、このDBを作るには、ある程度、3のイベントがどんな感じになるかっていうのを意識しながら、1で、ヒアリングしていくって言うことになるだろう。

 つまり、たとえば、東洋英和女学院の人と付き合うっていうことを目標に、そのシュミレーションゲームを作るとして、東洋英和女学院の人を集めたら、ヒアリングでは、

1.まず、付き合うまでに、どーいうイベントがあったか?

 なにかをみにいく、何かを買う、なんでもいろいろあげてもらう。

 そのイベント順番もきいてみる。

2.で、そのとき、どーするとOKで、どーするとNGなのか?

3.1.2をDB化し(しなくてもいいか)、それをもとにストーリー(シナリオ)構築する

4.出来たストーリ(シナリオ)を東洋英和女学院の人にみせて、そのシナリオはアリか
  ないか、無い場合、どこをなおすべきかをチェック

5.ストーリーのできあがり

ってことになるだろう。

 で、このイベントの違いと結果の違いが、「東洋英和」とか、「神戸女学院」とかの違いになる(学校がある場所が違う=すんでるところ違う=いったところなんかは、ちがうはず)
 で、この違いをレクチャーする、アドバイザーなんかが、どっかにいるといいわけだ。




■ゲームシナリオが事例ベースになると、ゲームにリアリティが出るかも

 いままでのゲームやシミュレーターは、ストーリーを書く人の創造性にたよっていたが、事例ベースの場合、今現役の人たちを集めて、その生の声を聞いてそこから作るので、リアリティが出るし、それに、このDB化と、システムへの落とし込みさえ、ノウハウが固まれば、どんな分野にも応用可能なので、いろいろ作れるってことになる。




■じゃ、問題は、事例ベースの作り方と、システムの落とし方か。。。

 これは、又今度、考えたいと思う。長くなりすぎたので。。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IHTMLVIEWERの具体的な使い方(3)カーソル移動方法その1(ヘッダ部分と概要)

2006-05-11 15:54:48 | ケータイ

 IHtmlViewerで、カーソル移動させる方法について。
 今回はその1回。ヘッダー部分と、プロトタイプ宣言に書かれている、各関数の説明について
 なお、ソース全体は、こちらにあります。




■カーソル制御のための「フェーズ」という概念

 具体的な説明に入る前に、1つ概念を導入します(これは、ウィリアムのいたずらが勝手に考えたことで、一般的な手法ではありません)。

 カーソル制御をする際、同じ画面なのに、項目が増えたり、入力項目が変わった場合、それぞれの画面状態をフェーズと呼びことにします。
 今回の仕様の場合、
0.はじめの画面
  →挑戦するしか打てない
1.練習文を打つフェーズ
  →練習文と、「打ち終わったしか打てない」
2.正解率と時間が出るフェーズ
  →終了ボタンしか押せない。
の3つのフェーズにわかれます。それぞれの項目の左側の番号、0,1,2を、フェーズ番号(phaseNo)と呼ぶことにします。




■ヘッダファイル 

 ヘッダー部分は、こんなかんじ
typedef struct _testhtml1 {
    AEEApplet      a ;    // First element of this structure must be AEEApplet
    AEEDeviceInfo  DeviceInfo; // always have access to the hardware device information
    IDisplay      *pIDisplay;  // give a standard way to access the Display interface
    IShell        *pIShell;    // give a standard way to access the Shell interface

    // add your own variables here...
	IHtmlViewer *pHtml;	//HTMLVIEWER
	int	itemsu;	//何項目あるか:今回はリテラルで入れてしまう
	int	*pID;	//項目ごとのID
	int	*pkind;  //項目の種類:今回はリテラルで入れてしまう

	int	curno;	//	カーソルの番号
	int	phaseNo;	//	フェーズ番号

} testhtml1;



ここで説明が必要なのは、「add your own variables here」ということで
(それ以外は、勝手に自動生成されてしまう)、そこについての説明

・pHtml IHtmlViewerインターフェースそのものが入ります。

・itemsu 入力(入出力)項目が、いくつあるかが、入ります。

・pID  各入出力項目のIDです。この番号を、SetViewStateのIDのところにセットすると
    その項目に、フォーカスが移ります。

・pkind 各項目が、どういう種類の項目かをあらわします。
    以下の種類が宣言されています

#define	ITEMKIND_INPUT_TEXT	1	//テキストエリアinput type=text
#define	ITEMKIND_INPUT_SUBMIT	2	//サブミットボタン
#define	ITEMKIND_A		3	//参照(アンカー)
#define	ITEMKIND_SELECT		4	//選択リスト


・curno 現在、カーソルがある(=フォーカスのあたっている)項目を
    入れておきます。
・phaseNo 現在のフェーズ番号が入ります。
    フェーズ番号については、上記の説明のとおり。




■プロトタイプ宣言について

 プロトタイプ宣言は、こんなかんじ。
static  boolean testhtml1_HandleEvent(testhtml1* pMe, 
                                                   AEEEvent eCode, uint16 wParam, 
                                                   uint32 dwParam);
boolean testhtml1_InitAppData(testhtml1* pMe);
void    testhtml1_FreeAppData(testhtml1* pMe);

		//	HTMLViewerコールバック処理
void testhtml1_CallBack( void* pvUser, HViewNotify* pNotify );

		//	画面表示
boolean testhtml1_DispAppData(testhtml1* pMe);

		//	HTMLViewer独自イベント処理
boolean testhtml1_HtmlEvent(testhtml1* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam);
boolean testhtml1_SetHtmlAndID(IHtmlViewer *pHtml,char *data,int *pID,int *pkind,int itemsu);
char	*testhtml1_DecodeHtmlState(char	*formdata,int	*p_scr,int	*p_cur);
int		testhtml1_EncodeHtmlState(char	*setdata,int scr,int cur,char *outdata);
int		testhtml1_NextCurItem(int curno,int flg,int phaseNo);
int		testhtml1_GetCurPos(int curno,int *pID,int *pkind);


上3つは、お約束ででてくるので、概要は省略(詳しい説明は、次回以降に出てきます)

・testhtml1_CallBack:
 コールバック処理。HTMLで特定のイベントが起こったとき、IHTMLVIEWER_SetNotifyFnで指定した関数を呼び出し、イベントを通知することができる。
 そこで、このtesthtml1_CallBackをIHTMLVIEWER_SetNotifyFnに設定しているが、その詳しいイベントに関しては、(2)かな漢入力などの取得で説明します。

・testhtml1_DispAppData:
 画面にある、HtmlViewer,TextCtl,MenuCtrなどの、画面用のコントロールをリドローし、カーソル項目をアクティブにする。。。が、今回は、HtmlViewer1個しかないので、それをリドローしてるだけ(HtmlViewer項目1つしかないので、ずーっところがアクティブになってるので、他に何かしていない)

・testhtml1_HtmlEvent:
 IHTMLVIEWER_HandleEventではやらないようなHTMLViewerの処理を行うため(たとえばカーソルの任意移動、プロテクト、複数項目の入力)のイベント処理。

・testhtml1_SetHtmlAndID:
 HTMLデータをHTMLViewerを設定し、その後、各項目のIDを取得する

・testhtml1_DecodeHtmlState:
 IHTMLVIEWER_GetViewStateを使うと、画面の状態が
 スクロール,フォーカスがあたってるID?名前=値&。。。
 の形でとれるので、スクロール量とIDにわけ、名前=値のはじめのポインタを返す。

・testhtml1_EncodeHtml
 testhtml1_DecodeHtmlStateの逆。分かれているのを、状態の文字列に変える。

・testhtml1_NextCurItem:
 次にフォーカスを当てるべき項目を返す

・testhtml1_GetCurPos:
 項目から、IDに変換する




 って、何かいてるんだか?ってことになると思いますが、今後、流れを追って、詳細に説明すれば、分かっていただけると思います。
 
 で、次は、まず初めの処理ということで、testhtml1_InitAppDataについてです。

 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

薬にICタグを貼って確認するっていうのやってましたね。かぎは、電子カルテみたい

2006-05-11 14:16:43 | Weblog

 前のブログで書いた、薬にICタグを貼る話、やっぱり、もうやっているみたい。今日のオープニングベルで放送してました。

 秋田大学の大学病院でやっているそうで、しくみは

・電子カルテにもとづき、ICタグが貼られた薬のリスト?みたいなのがでてくる
 
・それをもとに、くすりをとりだす

・患者さんにも、ICタグが貼ってあって、患者さんと、薬があわないと、読み取り機が警告する

 みたいなかんじでした。




 鍵は、電子カルテみたいで、電子カルテにかかれた、薬のリスト?があるから、
 薬と患者さんの対応を、ICタグに書き込んで、
 ・それで、薬にはられたICタグと一致するか
 ・患者さんと一致するか
 って確認できるみたい。

 そうそう、前のブログに書いた考え、箱にICチップを貼って何度も書き込みして、リサイクルしなくても、安ければ、上記のように薬のリストとか、物流だとピッキングリストにはりこめるもんね。

 ちなみに、画面では、富士通太郎とかでてたので、富士通系の会社でやってるんだろう。




 たしかに、電子カルテ化すると、レセプトとかいったっけ、診療報酬の事務処理にもつながってくるし、意外と、電子カルテをもとに、インフォームドコンセント用の動画とかもできたりして。。電子カルテにかかれている病名の説明、手術の説明、薬の説明などが、動画で説明するとか。。

 となったら、そのナレーターは、やっぱ、平野 麻樹子さん?

 ってきょうも、そこにオチを持ってくるウィリアムのいたずらなのでした。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ファイナルファンタジーXIIIがPS3と携帯電話で。。。って、どーやって?

2006-05-11 03:47:20 | Weblog

ここ http://www.square-enix.co.jp/e306/titles/fabula/
によると(以下斜体は上記サイトより引用です)


シリーズ13作目を迎えるファイナルファンタジー最新作は、異なる主人公、異なる世界観、そして異なるストーリーで展開するいくつもの『FINAL FANTASY XIII』が存在する壮大なプロジェクトです。この巨大なプロジェクトの総称は、


『FABULA NOVA CRYSTALLIS (ファブラ ノヴァ クリスタリス) FINAL FANTASY XIII』

それはラテン語で「新しいクリスタルの物語」という意味を持ち、一つの共通する神話を元にそれぞれが独自に展開していきます。
このプロジェクトは、PS3向けの2タイトル、『ファイナルファンタジーXIII』と『ファイナルファンタジー ヴェルサスXIII』を中心として、携帯電話向けの1タイトル『ファイナルファンタジー アギトXIII』を加えた3タイトルで始動し、更なる広がりと奥行きを持って展開していく予定です。


で、これのE3での紹介が、
これ(動画)http://trailers.gametrailers.com/gt_vault/t_ffxiii_ps3_e36.wmv

らしい

って、これってまさか、ケータイでもこんな感じでうごくわけじゃないっすよね。
もし、ケータイで、ここまで動くとしたら。。。どーやってやるんだろう。
いくつか考えたけど、眠いので、今回はパス。
気が向いたら、そんな話もまた書きます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする