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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
EKISUKE

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

#1

投稿記事 by EKISUKE » 12年前

学校の先輩にゲーム作りでこのサイトは役立つといわれ最初から順番にやって言ってるのですが、

第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)ぐらいまで一応勉強しています。
初歩的な質問ですが回答お願いします。

box
記事: 2002
登録日時: 13年前

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

#2

投稿記事 by box » 12年前

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
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

EKISUKE

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

#3

投稿記事 by EKISUKE » 12年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 12年前

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)だとせわしなく早送り的にコマが切り替わります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

EKISUKE

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

#5

投稿記事 by EKISUKE » 12年前

なるほど、よくわかりました。
そこでループの速度を決めているんですね。
どうも回答有難うございました。

nil
記事: 428
登録日時: 12年前

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

#6

投稿記事 by nil » 12年前

ch.cnt/6%4のほうが理解しやすいかもしれませんね

閉鎖

“C言語何でも質問掲示板” へ戻る