お知らせ:「くろくまそふと」は新アドレス(kurokumasoft.com)に移転しました。お手数ですがブックマーク等の変更をお願いいたします。

【ウディタ】変数をまとめて操作する方法

ウディタでコモンを組んでいるとき、たまに「連番の変数をまとめて操作したい」というときがあります。このようなときはもちろん1つ1つ手作業で変数操作コマンドを打ってもいいのですが、その場合操作する変数の数が多くなると面倒ですしメンテナンス性も悪くなってしまいます。そこで今回は「変数呼び出し値」と「ループ」の2つを組み合わせて変数をまとめて操作する方法をご紹介します。

スポンサーリンク

はじめに:変数呼び出し値とは何か?

変数呼び出し値はウディタの面白い機能の一つです。一体どういう機能なのかというと、例えばウディタで「1600000」(160万)という値を入力すると、それは「160万」という値にはならず、代わりに「コモンEvセルフ変数0番」の値が代入されるのです(もし、1600000を160万という値で計算に使いたい場合は「データを呼ばない」にチェックする必要があります)。

ウディタのマニュアルから一部引用すると、変数呼び出し値とそれに対応する変数は次のようになっています。

1000000+10*Y+X
→ マップイベントYのセルフ変数X1100000+X
→ このマップイベントのセルフ変数X(コモンセルフ変数と間違えやすいので注意!)15000000+100*Y+X
→ コモンEv Y のコモンセルフ変数X (X:0-4,10-99通常変数, 5-9文字列)1600000+X
→ このコモンEvのコモンセルフ変数X(マップセルフ変数と間違えやすいので注意!


2000000+X
→ 通常変数X番

2000000+100000*Y+X
→ 予備変数YのX番(例:2100003=予備変数1の3番)

3000000+X
→ 文字列変数 X番

8000000+X
→ 0からXまでの値をランダムに返す。

9000000+X
→ システム変数 X番

変数呼び出し値とループを組み合わせる

ではここからが本題。この変数呼び出し値というやつは先述の通り「データを呼ばない」にチェックをつければ数値として扱うことが可能です。ということは、例えば

  1. 変数呼び出し値をある変数(例えばセルフ変数10)に格納する
  2. 変数呼び出し値から変数を呼び出して操作する
  3. セルフ変数10を+1する
  4. 2と3を必要なだけ繰り返す

というような処理を作れば、(1つ1つ手作業で変数操作コマンドを打たなくても)連番の変数の操作をまとめて行えるのです。それでは実際のコードを見てみましょう。

▼ 文字列変数の初期化
■変数操作: CSelf10[繰り返し数] = 10 + 0 
■変数操作: CSelf13[文字列変数呼び出し値] = 3000000 + 0 
▼  
■回数付きループ [ CSelf10[繰り返し数] ]回
 |▼  
 |■文字列操作:V[CSelf13[文字列変数呼び出し値]] = ""
 |■変数操作: CSelf13[文字列変数呼び出し値] += 1 + 0 
 |■
◇ループここまで◇◇

上のコードは文字列変数0~9をまとめて初期化(=空文字を代入)する処理です。まず「文字列変数呼び出し値」に文字列変数の変数呼び出し値である「3000000」を代入し(※「データを呼ばない」にチェックを入れておいてください)、それを1ずつ加算することで文字列変数0、1、…、9という風に一つずつ処理していきます。ちなみにここで注意すべきなのは、文字列操作の時に「代入先を変数で指定」することです。このオプションを選択しないと変数呼び出し値から操作したい文字列変数を呼ぶことができません。

以上、簡単ではありますが変数をまとめて操作する方法をご紹介しました。使う場面はそこまで多くないと思いますが、覚えておいて損はないテクニックなのでぜひ試してみてください。