ふりーむ!BBS
TOP > 過去ログ > 記事閲覧
掲示板一覧:[1 初心者・質問] [2 ゲーム攻略] [3 ゲーム開発・創作の話題] [4 ゲーム開発・創作仲間募集(依頼先を探している方一覧)] [5 ゲーム・創作のお仕事募集(依頼を請け負っている方一覧)]

便利リンク1:[ふりーむをチェックする] [ゲーム制作ツール集(素材リンク集)] [素材ライブラリ] [Twitter:ゲームクリエイター向け] [暇なときの短編ブラウザゲーム]
便利リンク2:[イラスト投稿(サンプルやポートフォリオ用に)] [ふりーむプレミアムサービス(外部広告の削減を目指して取り組んでいます)]
fld_nor.gif 吉里吉里で数字当てミニゲーム
投稿日 : 2013/04/02 18:28
投稿者 拓郎
こんなことがやりたいのですが
どうしてもうまく出来ません

・二つの窓に2桁ずつの数字を入力させる
 ・入れる数字は00~99を扱える
 ・全角数字だったら半角に置き換える(ここがうまく行かない)

・左右窓のどちらか一方でも数字じゃない文字列が入っていたら
 エラーを打ち出しやり直し

・左右窓のどちらか一方でも2桁じゃない場合は
 エラーを打ち出しやり直し


・左右窓ともに正解なら
 そのまま次のシナリオへ

・左右窓のどちらか一方があっていれば
 その旨伝えてやり直し

・左右のどちらもあっていなければ
 その旨伝えてやり直し



どうも組んだものが悪いのか
想定したように判定してくれません

edit :入力
str2num(tf.~) :全角数字を半角に
/[^0-9]/.test(tf.~) :正規化表現判定
 場合によっては/[^0-9^0-9]/.test(tf.~)
tf.left.length!=2(であってるのかな?) :文字数判定
tf.right.length!=2(多くても少なくても駄目)
&& と || :両方満たす と どちらか満たす

if
elsifなど色んな順番で組んでみましたが

全角だけど頭に0の入った二文字を入れると
str2numが頭の0を取ってしまいます
(00~09 = 0~9とされてしまうため、その後の正解不正解判定のとき桁数が合わずエラー)

必ず半角で入力をさせるようにエラーではじかないと
後から内部で半角に直すのはうまくできないんです
(によっては/[^0-9^0-9]/.test(tf.~)で入力受け付けていますが、
/[^0-9]/.test(tf.~)で処理させてから半角に変えると
頭桁0の問題が起こります)


文字を入力した時は全角半角問わずはじけます
字数が多かったり少なくてもはじけます

何が問題なのでしょうか?
やはり入力時に半角数字のみに制限させる
/[^0-9]/.test(tf.~)を使った方がいいのでしょうか?
編集 編集
件名 解決
投稿日 : 2013/04/07 21:14
投稿者 拓郎

・二つの窓に3桁ずつの数字を入力させる
 edit

 ・入れる数字は000~999を扱える
commit

入力文字種判定
・数字じゃない文字列が入っていたら
 エラーを打ち出しやり直し
 if exp="/[^0-90-9]/.test(tf.hoge)"

入力桁数判定
・3桁じゃない場合は
 エラーを打ち出しやり直し
 elsif exp="tf.hoge.length!=3

endif

・全角数字だったら半角に置き換える(ここがうまく行かない)
 ・まず全角に
  eval exp="tf.hoge=han2zen(tf.hoge)"
 ・次に頭の0がなくなるまで取り除く
  eval exp="tf.hoge=tf.hoge.replace(/^0+/,'')"
 ・半角に置き換える
  eval exp="tf.hoge=str2num(tf.hoge)"
 ・抜き出した桁数にあわせて頭に0を付ける
  eval exp="tf.hoge='%03d'.sprintf(tf.hoge)"

ここから番号の判定
・左右窓ともに正解なら
 そのまま次のシナリオへ

・左右窓のどちらか一方があっていれば
 その旨伝えてやり直し

・左右のどちらもあっていなければ
 その旨伝えてやり直し



色々とありがとうございました
編集 編集
件名 Re: 吉里吉里で数字当てミニゲーム
投稿日 : 2013/04/07 08:03
投稿者 拓郎
お礼が反映していませんでした・・・

通りすがりさん
まさにその通りです
色んな数字でテストしてみておかしいとは思っていたんですが
8進数とは思いませんでした
2桁だとエラーの起きるのが08か09だけなので気付きませんよね

zen2hanとやらも同じかもしれませんね
今は使えないということで試せないのが悔やまれます
編集 編集
件名 Re: 吉里吉里で数字当てミニゲーム
投稿日 : 2013/04/07 06:35
投稿者 通りすがり
str2num使うと
00~07
00~07なら0~7になるのに、
08、09、08、09がどれも0になっちゃう。

一桁になってからは条件で0足すかどうか、
判定すればいいだけだからうまく行くけど。
手前でツマヅク><;

ためしに3桁のでやったらあらビックリ。
頭に0つけるとTJSが8進数として判断するらしい。
str2numを掛けなければそのまま00だろうと09だろうと99だろうと
入れた数字で判断するけど、
str2numを入れた時点で8進数で置き換えられる。

つまり2桁の場合
00~07
11~77
数字の8と9を使わない組み合わせのみで使うことが出来る。
先頭に0が来ないもの限定でしか使えないということです。

先頭に0がついてもできる方法があったらどなたか教えてください。
これは初心者が頭使った程度で出来る代物ではないw
編集 編集
件名 Re: 吉里吉里で数字当てミニゲーム
投稿日 : 2013/04/03 22:19
投稿者 拓郎
ヒントありがとうございます!

早速試してみましたが、
初心者にはちょっと難しいようです^^;

今回はメッセージで誘導して
半角じゃないと判定できないと伝える形で行きます。

いずれは対応が出来るように
暇を見つけてチョコチョコいじってみようと思います。

どうもありがとうございました。
編集 編集
件名 Re: 吉里吉里で数字当てミニゲーム
投稿日 : 2013/04/03 10:22
投稿者 muwa
吉里吉里使った事ないけど下記URLのサイトで調べてみたら、
"str2num"は全角数字を半角にするのではなく、
文字列を数値に変換するので、頭のゼロがなくなるのは正しい動きです。
"zen2han"っていう関数があったらいいんですけど、なさそうなんで考え方は以下の方法でうまくいくと思いますよ。

"05"が入力された。

"str2num"で5になった。

5が0~9の範囲内だったら頭に"0"をつける。

変数a = '0' + 5

変数a= '05'


http://homepage1.nifty.com/gutchie/kirikiri_kag3/game_dev.html#dev_variable012.html
編集 編集

フリーゲームライブラリ「ふりーむ!」へ

- WEB PATIO -