2012年11月7日水曜日

キー入力の連続入力を阻止

この記事は削除して新しく書き直しました。

算数ができません

普段から算数が苦手です。数学でなくて算数です。二ケタの引き算すら怪しい残念な脳みそです。
変数の処理が苦手です。
計算間違いがしょっちゅう。
演算子の%の概念を理解するのに小一時間かかりました。
何故そんなに時間がかかったかというと、ひとつにはまず余りの出し方を間違っていたこと。

「2%5がなぜ2になるんだ?2÷5=0.4で割り切れるじゃん!余りは0では?」とか思っていた。完全にバカだ。

そしてもうひとつは、確認するために実際に計算式を表示するイベントを作ってウディタ上で確認していたんですが、そもそもの変数の指定が間違っていてその結果計算が合っていませんでした。

なんでこんなにシンプルミステイクが多いんでしょうね。
ウディタをいじっていると自分の頭の悪さがよくわかります。


まあ、うじうじするのはこれぐらいにして。
すごく当たり前のことですが以下自分のためのメモ。
左辺%右辺において、右辺の方が数が大きい場合→左辺の数値がそのまま代入される
左辺%右辺において、左辺と右辺の数が同じ場合→0が代入される

うん、すごく当たり前ですね。これだけのことが理解できなかった自分はいったい……。
これを応用するとカーソル移動の指定とか楽になるようだ。

それともひとつ。
左辺%2=0なら左辺の値は偶数
左辺%2=1なら左辺の値は奇数

偶数奇数の判定はいつ使う機会があるかわからないけど。

よし、次はビット積の勉強だ。

2012年11月5日月曜日

時代設定

キー入力、決定キーとキャンセルキーの取得ではなくて、「特定キーのみ判定」で個別に判定することにして事なきを得ました。
ウェイトはとりあえず11フレームくらいにしてみています。


さて、システムを作りながらストーリーもなんとなく考えています。
大筋はできてきたけど、サブイベントとかでちょっと行き詰ったり。
お姫様が出てくる予定で宮殿が舞台なのに、王族がどんな暮らしをしてたかとか知識があんまりない自分に気づく。
なんとなくの勝手なイメージで世界観を広げていたので、ちゃんと調べてみようかと思って調べてみました。
調べてみましたっていうかグーグル先生に聞いてみただけだけど。

時代設定とかって、結構大切。
キャラクターが着ている服装にしても、時代によって流行りがあるし。国とか地域によっても違うし。
お姫様のドレスひとつにしても、裾が広がってたり、広がってなかったり、デコルテの形が時代によってまったく違うし。
ファンタジーなのであんまり厳密にはしませんが、やっぱ知ってて描くのと知らないで描くのとでは違うかなという気がしています。
(今までに描いた何人かはちょっと現代風すぎたか……?と反省。でもたぶん描きなおさない)

そんなわけで王族の暮らしについてちょっと調べてみたんですが、イメージと違うなということも色々ありました。
いちばん意外だったのが、庶民も普通に宮殿に入れたということ。王様の寝室まで見学できたとか。セキュリティは大丈夫なのか。
ベルサイユ宮殿は結構不潔だったり、あんまり快適じゃなかったとか。
これもきっと時代と国によって違うんでしょうけど。
面白い話がいろいろ。もっと詳しく調べてみたくなりました。

しかしこうしてだんだんゲーム作成という目的から逸れていくと大変あぶないので、時代設定に凝るのはほどほどにしようと思います。
世界観やシナリオを掘り下げようと頑張りすぎると、結局ゲーム作成に到達できなくなりそうなので(あくまでも自分の場合は)

世界観のしっかりしたゲームを作られている方は本当に尊敬します。

ゆっくり考えてみたら思ったより簡単だった

キー入力受付システムできましたー。
文字を入力した場合にはウェイトをいれればいいだけだった……。
私はいったい何を悩んでいたのだろう。
自分のためにメモ。


■ループ開始
|▼ 入力された文字を表示する処理色々(割愛)
||■ループ開始
||■ウェイト:1 フレーム
||■キー入力:このコモンEvセルフ変数3 / キーボード(100~)
||■キー入力:このコモンEvセルフ変数4 /  決定(10) キャンセル(11)

||■条件分岐(変数): 【1】CSelf3[キー入力受付(文字キー)] が 130と同じ
||-◇分岐: 【1】 [ CSelf3[キー入力受付(文字キー)] が 130と同じ ]の場合↓
|||■可変DB書込:DB[27:0:CSelf12[今何文字目]]()  =  "a"
|||■変数操作: CSelf12[今何文字目] += 1 + 0
||◇分岐終了◇        
            ……以下各キーを押したときの処理(割愛)
|||
||■条件分岐(変数): 【1】CSelf3[キー入力受付(文字キー)] が 0以外
||-◇分岐: 【1】 [ CSelf3[キー入力受付(文字キー)] が 0以外 ]の場合↓
|||■ウェイト:8 フレーム
|||■変数操作: CSelf3[キー入力受付(文字キー)] = 0 + 0
|||■ループ中断
|||■
||◇分岐終了◇
||■条件分岐(変数): 【1】CSelf4[キー入力受付(決定キャンセル)] が 0以外
||-◇分岐: 【1】 [ CSelf4[キー入力受付(決定キャンセル)] が 0以外 ]の場合↓
|||■ウェイト:8 フレーム
|||■変数操作: CSelf4[キー入力受付(決定キャンセル)] = 0 + 0
|||■ループ中断
|||■
||◇分岐終了◇

||■
|◇ループここまで◇◇
|■
◇ループここまで◇◇


……と思ったら、この方法だと、デフォルトのようにキャンセルキーをXに設定している場合とか、Xを入力してもXとして反応してくれません(そりゃそーだ)
また考え直しだー。
しかもウェイト8フレームだとちょっと短いかも。時々二つ連続で入力されてうっとおしい。

キー入力と格闘

問題に答える部分のシステムを作っています。
出題形式はいたってシンプル。

日本語で表示される言葉の英単語を入力するだけ。
たとえば「犬」と出題されたら「dog」と入力。

ここで問題になるのは、同類語。
たとえば「足」と出題した場合、「foot」でも「leg」でも正解になる。
一つの問題に対し一つの正解にしたいので、対処方法を考えました。
1 文字数を表示する
2 先頭の文字を表示しておく
「足」で「foot」が正解の問題なら、出題画面に「足(4文字)  f***」のように表示するつもりです。
しかしこれでも同じ文字数、同じアルファベットで始まる似た意味の言葉ってありそうな気がするなー。

文字列操作→キーボード入力でシステムを作るととても簡単なんですが、問題がひとつ。
「ギブアップキー」とか「ヒントキー」を作りたいのですが、キーボード入力中はこれらが反応しません。
そこで、キー入力を使って一文字ずつ判定する方式に切り替えました。
ちょっと手間でしたが、これもわりと簡単に出来ました。
……が、キー入力でキーボード全種受付に設定すると、決定キーキャンセルキーを受け付けないのですね。
むむむ。文字入力した後にエンターキーとか押したいし。バックスペースで文字消すとかしたいし。
「キーが押されるまで待つ」に設定すると、どちらか一方しか受け付けてくれません。
「キーが押されるまで待つ」に設定せずにやってみると、連続で文字が入力されてえらいことになりました。
公式の質問フォーラムにて、どうやらループとウェイトを上手に駆使すれば、二種のキー入力受け付けもできるというのはわかったんですが、そのコモンの作成に四苦八苦しています。
考えすぎて頭が痛くなったので、ちょっとひとやすみ。

2012年11月4日日曜日

クスラに勝てたよー@COSMOSカードゲーム

やっと勝てた……疲れた。
金星デッキでアタックアップとかシュンとか駆使して攻撃力を上げると割と安定して勝てました。
火星デッキより金星デッキの方が自分の好みかも。
欲望の鎖戦士無双でした。
今のところ火星・金星・天星デッキしか作ったことないのだけどほかのデッキにもチャレンジしてみたいと思っております。

さあ次は最終話だー。

今週は忙しかったのでゲーム制作は全然進んでないです。

近況と、星紡ぎの話

なんと今年になってからブログを書いてないらしいです。筆不精で申し訳ない。 今年のウディコンは不参加でした。その報告も遅くなってしまって本当にすみません。 プレイヤーとしてばりばり遊んでいましたし、まだ現在進行形で遊んでいます。ここでエネルギーいただいてゲームを頑張って作っていきた...