14歳から始める~ゲームプログラミング本の疑問点

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

14歳から始める~ゲームプログラミング本の疑問点

#1

投稿記事 by akasann » 8年前

書籍の「14歳からはじめるc言語ワクワクゲームプログラミング」について疑問に思ったことが2点あります。今、6章の半分のところまで読み進めたところです。

疑問1.p272のところの3次元配列g_view[4][3][2]の配列(4方向x3柱x座標)なんですが、ここのところのイメージがあまりつきません。というと、表に柱の番号が書かれてありますが、例えで2の位置にいるとして、画面に見えている柱の番号は1と5と3が見えているみたいなイメージを持っていて・・・以下のコードの意味が理解できないのです。

コード:

int g_view[4][3][2] = {
	{ { -1, 0 }, { 0, 0 }, { 1, 0 } },
	{ { 0, -1 }, { 0, 0 }, { 0, 1 } },
	{ { 1, 0 }, { 0, 0 }, {-1, 0 } },
	{ { 0, 1 }, { 0, 0 }, { 0, -1 } },
};
EAST方向に移動した場合はどのようなイメージを持てばいいのでしょうか。うまく伝わったのか分りませんがお応えしてくれるとうれしいです。

疑問2.次の疑問はどのゲームを作るのにも大切だと思うんですがキートリガー処理のところがイメージついてるようで理解できてないので教えていただければありがたいです。コードとしては以下に示します。

コード:

BOOL IsAKeyTrigger(int key){
	if (key & PAD_INPUT_A){
		if (g_akey_prev == FALSE){
			g_akey_prev = TRUE;
			return TRUE;
		}
	}
	else {
		g_akey_prev = FALSE;
	}
	return FALSE;
}

あんどーなつ
記事: 171
登録日時: 8年前
連絡を取る:

Re: 14歳から始める~ゲームプログラミング本の疑問点

#2

投稿記事 by あんどーなつ » 8年前

疑問1は本の内容なので(この掲示板の人たちはdixqさんのHPで勉強しているみたいですね)、私のほうで回答いたします。

6章のゲームでは、十字キーで前進、後退、左を向く、右を向くという動作ができます。
左右の矢印で方向転換をすると、g_stagedata.directionが0~3まで変化します。

g_viewとg_mvという配列がDraw3DMap関数で呼び出されていますが、例えば主人公が(3, 3)の位置にいて、EASTを向いている場合は、
g_stagedata.x = 3
g_stagedata.y = 3
g_stagedata.direction = 1
となり、Draw3DMap関数内でy, xは、
(y, x) = (3, 0), (3, 2), (3, 1), (2, 0), (2, 2), (2, 1), (1, 0), (1, 2), (1, 1), (0, 0), (0, 2), (0, 1)
の順でカウントされます。これらについて、hy, hxが計算されますが、
(hy, hx) = プレイヤーの座標 + g_view[方向][横方向index] + g_mv[方向] * 奥行き方向index
という計算を行っています。横方向indexとはsortxのことであり、奥行き方向indexとはyのことを指します。
つまり、
g_viewは、各方向(g_stagedata.direction)について横方向の座標を指し示すもの、
g_mvは、各方向(g_stagedata.direction)について奥行き方向の座標を指し示すもの、
となります。EASTを向いている場合、プレイヤー(3, 3)の座標は(3, 3), プレイヤーの右隣は(3, 4), プレイヤーの左隣は(3, 2)となりますね。
なので、g_view[1] = {{0, -1}, {0, 0}, {0, 1}}となっている必要があります。
同様にg_mv[1] = {1, 0}となります。

これらをNORTH, SOUTH, WESTにも適用すると、gamemain.cppの先頭にあるg_view, g_mvの定義の形となる、ということです。

akasann

Re: 14歳から始める~ゲームプログラミング本の疑問点

#3

投稿記事 by akasann » 8年前

hx,hyの座標計算がなぜそのような形になるのは分りませんがg_viewについてはイメージが付きました。イメージしていた画像の出力の形が誤っていることに気づきました。いつもお世話になっております。ありがとうございます。

あと余談になりますがこの後の展開として、どういったことをお勧めしますかね。今、考えていることとして、テトリスみたいなゲームを作ってみようかなと考えています。また、3Dゲームのプログラミングの本も面白そうだなと思ってみたりもしています。他の言語(javaなど)を扱ってみたいなとも考えております。

あんどーなつ
記事: 171
登録日時: 8年前
連絡を取る:

Re: 14歳から始める~ゲームプログラミング本の疑問点

#4

投稿記事 by あんどーなつ » 8年前

変なことを言って人生を棒に振られても困るしなーww

もう少しCとDXライブラリでプログラミングし続けるのがいいんじゃないかな。
同じシリーズの3Dの本もありますけど、どうしても3DをやりたいのでなければDixqさんのHPでDXライブラリの使い方に慣れつつ、ゲームを作るアイディアを暖めておくのが、一番楽でためになりそうではあります。

http://dixq.net/g/

(ちょっと本音)
世の中には、HPちょろっと読んだだけでプログラム作れちゃう人もいます。だけど大抵の人はそうではありません。だから、今の自分がそこそこいけてるという自信がないならば、徳川家康のように慎重に計画的に進めるべきです。

とはいえ、JavaやLinuxのように全くその世界を知らなかったがゆえに後悔することもあるので、かじってみるということも大事ですね。
(新しいことにチャレンジするときは、自分のPCのハードディスク容量とお小遣いのことを考慮する、これが一番大事)

akasann

Re: 14歳から始める~ゲームプログラミング本の疑問点

#5

投稿記事 by akasann » 8年前

コメントありがとうございます。
色々自分で模索して考えてみます。とりあえず、新ゲームプログラミングの館と本を参考にしながら、一つゲームを作ることに挑戦してみようと思います。

閉鎖

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