独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< RGSS奮闘記4:セーブ枠を増やす3 | main | RGSS奮闘記6:セーブ枠を増やす5 >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] RGSS奮闘記5:セーブ枠を増やす4

〜前回のあらすじ〜
ページを切り替えられないおとこのひとって……



3:画面更新を4ページ対応に

ここからは画面表示を更新するupdateメソッドの改造である。

まずは「方向ボタンの下が押された場合」の部分。

if Input.repeat?(Input::DOWN)
の下に
last_page = @page
を挿入。
「last_page」に「@」がついてないことに注意。
これは『ローカル変数』といい、メソッドの中で定義されたローカル変数はメソッドが終了し次第破棄される。
もちろん「@」がついた変数(『インスタンス変数』というが今は覚えなくていい)にしてもかまわないが、その場合は今回の使い方だとあとで初期化しなくてはならないので、こういった一時記憶用変数はローカル変数にしておいたほうが楽だろう。

続いてその下、「カーソルを下に移動」の部分
@file_index = (@file_index + 1) % 4
@file_index = (@file_index + 1) % 16
@page = @file_index / 4
に変更。

「%」の記号は除算の余りを求めるものだ。たとえば
7 % 4 = 3
となる。

さて、16で割った余りを求めているというのはどういうことだろうか?
選択画面で下キーを押すと@file_indexに1加算される。これはWindow_Selectableを継承しているクラスの仕様だ。選択された状態となるウィンドウが一つ下に移る訳だが、一番下(ファイル15)から下キーを押した際、@file_indexは16となる。
16で割った余りは0、つまり末尾から先頭に戻るということだ。
この式が意味を持つのは@file_indexが16になった場合のみだが、それでもifを使って16かどうか判別するよりはわかりやすい。判別する必要がないのだから当然だが。

@file_indexを4で割る行はmainメソッドと同様なので説明不要だろう。@file_indexが変更されたので@pageも新たに求めないとページが切り替わらないので、ここで@pageを再算出している。

その下、「方向ボタンの上が押された場合」の説も同様に追加・変更する。ただし「@file_index + 1」の部分は「@file_index - 1」とする。下キーを押した場合とは逆方向にカーソルを移動するわけである。

さて、ここで注意しなくてはいけないのは、Rubyでは負の数の絡む除算の結果が多くの言語(や一般的なイメージ)とは異なるということだ。たとえば
-5 / 2
-5 % 2
の結果はいくつになるだろうか?
何となく「-2と-1」のように考えると思う。しかしRubyでは「-3と1」なのだ。
具体的には別件とするが、つまり「序数×商≦被除数」を負の数であっても徹底しているということだ。
ややこしいかもしれないが、「余りが常に正の整数(自然数)になる」と覚えておくといいだろう。

これがどういうことかというと、@file_indexが0のとき(カーソルが「ファイル1」にあるとき)上キーを押すと@file_indexは-1になるわけだが、これを16で割ると余りが15になるのである。
ということでここまでの記述がページの切り替わりと先頭と末尾のループにあたる。

が、実はまだ実際の切り替え機能は実装できていない。
それは次の次でメソッドの末尾に記述するのでひとまずおあずけである。

次回は、LRボタンによるページの切り替え。


タグ:[Ruby] [RGSS] [素材] [Scene_File]

| 2010.12.07 Tuesday 18:52 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 18:52 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM