ReturnNumber調整とは...
GetReadyやlook、searchといった動作をした際に必ずしも9マス分の値が返ってくるとは限らない(場外は値が返ってこないため)ので、そのような場合も考慮し、適切なmap座標に記憶させるよう調整させることである。
このReturnNumber調整でミスがあると、あらゆる動作に影響が生じるので注意すること。
解説前に覚えておきたい言葉
- ReturnNumber・・・取得した値を格納している配列。
- count・・・取得した値の個数。
- MyAtai・・・自分自身のクライアントの値。
ReturnNumber調整の仕組み
ここでは、GetReadyを例に「ReturnNumber調整」について説明していきます。
GetReadyのReturnNumberはこのように取得されますが、これはあくまで9マス分のmap情報が取得できた場合です。
例えばこのような場合はどうでしょうか?
(#は場外を表しています。)
場外は値を取得することが出来ないので、ReturnNumberはこのように取得されます。
場外である#の部分にはmapから値が取得出来ない代わりに「-1」という値を代入させています。
この調整を実際のソースコードにするとこうなります。
//画面四隅の場合
if(count==4)
{
//左上時
//■■■
//■C
//■
if(returnNumber[0]==MyAtai)
{
returnNumberX[0] = -1;
returnNumberX[1] = -1;
returnNumberX[2] = -1;
returnNumberX[3] = -1;
returnNumberX[4] = returnNumber[0];
returnNumberX[5] = returnNumber[1];
returnNumberX[6] = -1;
returnNumberX[7] = returnNumber[2];
returnNumberX[8] = returnNumber[3];
}
軽くどのような処理をしているか解説していきます。
countが「4」のとき、つまり取得した値が4個の場合。
if(returnNumber[0]==MyAtai)
{
returnNumberX[0] = -1;
returnNumberX[1] = -1;
returnNumberX[2] = -1;
returnNumberX[3] = -1;
returnNumberX[4] = returnNumber[0];
returnNumberX[5] = returnNumber[1];
returnNumberX[6] = -1;
returnNumberX[7] = returnNumber[2];
returnNumberX[8] = returnNumber[3];
}
自分自身のクライアントがReturnNumberの「0」の座標にいるとき、つまり左上の隅にいるなら、調整された値を代入します。
図のように代入されます。([0]はreturnNumber[0]を表しています。)
| -1 |
-1 |
-1 |
| -1 |
[0] |
[1] |
| -1 |
[2] |
[3] |
あとがき
今回はGetReadyの一部分の調整を例に解説しましたが、他の場合でも同じようにReturnNumber調整をしなければなりません。
もちろん、GetReadyだけではなく、lookやsearchについても同じことが言えます。マップ情報を取得するようなコマンドを使用した際は必ずこの処理をしなければならないので気を付けてください。
最終更新:2017年09月18日 16:05