ページ 11

初歩的な質問ですみません。

Posted: 2012年7月17日(火) 14:53
by EKISUKE
学校の先輩にゲーム作りでこのサイトは役立つといわれ最初から順番にやって言ってるのですが、

第7章(http://dixq.net/rp/7.html)の下記の部分でわからなくなりました。

キャラクタに表示する画像をcalc_chで計算させます。
カウンタをふやして行き、24周期で1周します。その中で4種類の画像をループさせます。
データファイルにあるキャラクタ画像を見てもらったら解るとおり、キャラクタは4種類で1動作になっていますから、
以下の式で画像番号をループさせているのです。


--char.cppを変更--

コード:

#include "../include/GV.h"

void calc_ch(){
        ch.cnt++;
        ch.img=(ch.cnt%24)/6;
}

↑のプログラムの
  ch.img=(ch.cnt%24)/6;
というところがなにをやっているのかわかりません。
これをすることによって何ができるのかがわかりません。
C++のポインタや構造体まで(ローベルのC++入門講座という本のp210)ぐらいまで一応勉強しています。
初歩的な質問ですが回答お願いします。

Re: 初歩的な質問ですみません。

Posted: 2012年7月17日(火) 15:28
by box
EKISUKE さんが書きました:

コード:

        ch.img=(ch.cnt%24)/6;
ch.cntを24で割ったあまりは0~23の24とおりあります。それを6で割った商によって、
画像ファイルの番号か何かを決めているのではないでしょうか。

ch.cntを24で割ったあまりが0~5のとき、それを6で割った商=0
ch.cntを24で割ったあまりが6~11のとき、それを6で割った商=1
ch.cntを24で割ったあまりが12~17のとき、それを6で割った商=2
ch.cntを24で割ったあまりが18~23のとき、それを6で割った商=3

Re: 初歩的な質問ですみません。

Posted: 2012年7月17日(火) 15:42
by EKISUKE
なるほど回答有難うございます。
追加で質問なのですが、
ch.img=(ch.cnt%24)/6; の部分は4種類の番号をループさせているのであれば
ch.img=(ch.cnt%4);ではだめなんでしょうか?

Re: 初歩的な質問ですみません。

Posted: 2012年7月17日(火) 16:01
by softya(ソフト屋)
EKISUKE さんが書きました:なるほど回答有難うございます。
追加で質問なのですが、
ch.img=(ch.cnt%24)/6; の部分は4種類の番号をループさせているのであれば
ch.img=(ch.cnt%4);ではだめなんでしょうか?
(ch.cnt%4)だと1フレームごとに番号が変わります。
(ch.cnt%24)/6だと6フレーム毎に変わります。
つまり(ch.cnt%4)だとせわしなく早送り的にコマが切り替わります。

Re: 初歩的な質問ですみません。

Posted: 2012年7月17日(火) 16:32
by EKISUKE
なるほど、よくわかりました。
そこでループの速度を決めているんですね。
どうも回答有難うございました。

Re: 初歩的な質問ですみません。

Posted: 2012年7月17日(火) 18:39
by nil
ch.cnt/6%4のほうが理解しやすいかもしれませんね