int stage[4][7][2]; // 盤上のマスの格子点の座標
int pos[3][6][2]; // キャラ描画座標
void init_stage() // stage と pos を初期化する
{
for (int j = 0; j < 7; j++) {
int w = (j - 3) * 100, h = 300;
for (int i = 4; --i >= 0; ) {
stage[i][j][0] = w + 400, stage[i][j][1] = h - 100;
w = w * 9 / 10, h = h * 9 / 10;
}
}
for (int i = 0; i < 3; i++)
for (int j = 0; j < 6; j++) {
pos[i][j][0] = (stage[i][j][0] + stage[i + 1][j + 1][0]) / 2 - 25;
pos[i][j][1] = (stage[i][j][1] + stage[i + 1][j + 1][1]) / 2 - 65;
}
}
以上は台形型のステージのプログラムです。
そして、int stage[4][7][2];について疑問があります。
なぜxとyのみなのに[ ]が3つあるのでしょうか?
最初の2つの[ ]と[ ]がxとy座標と定義するためでしょうか?
仮に[ ]が二つの場合の同じような台形型のステージは作れるのでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
○他の方法
複数のセットになる値を扱う方法は、C言語の学習をしていれば、いくつも出てきます。
・別の変数を組になるように使う
・配列を使う
・構造体を使う
この座標のようなものだったら、構造体を使うのが素直でしょう。
他言語の「クラス」でも同じ考えでできます。
> カンマに関しては、そう書くように本に書いてあり深い意味はないです
どの本のどこにそう書いてありましたか?
おそらく、あなたの読み間違い、解釈間違いでしょう。
普通、こんなところでカンマは使いません。
for(x=0,y=0;... )
みたいに、forの直後の括弧の中、とかに使うことはありますが。
「forの括弧の中では」を「forの{ } 中では」と読み間違えてるとかはないですか?
No.3
- 回答日時:
コメントや、「台形」というキーワードから予想すると
・画面は「囲碁のような格子状のマス目が引かれたものを、斜めに見下したもの」になっていている。
正方形のマスを立体的にするため、一点透視法を使っている。
・このプログラムは、 格子点の番号やマスの番号から、画面上のXY座標を求めるもの。
stage[縦の線の番号][横の線の番号][0] = その交点の画面上のX座標
stage[縦の線の番号][横の線の番号][1] = その交点の画面上のY座標
を記憶して、使用中は計算をしないで配列から読み取る(テーブル引き と呼ばれる基本テクニック)
> なぜxとyのみなのに[ ]が3つあるのでしょうか?
多次元配列は、いろんなことを考えて適したものを利用します。
X,Y だから2次元、等とは単純にはいきません。
> 仮に[ ]が二つの場合の同じような台形型のステージは作れるのでしょうか?
このやり方が唯一の方法ではありません。
No.2
- 回答日時:
>二面とかxとyの二面ですか?
int stageA[4][7]; // 盤上Aのマスの格子点の座標
int stageB[4][7]; // 盤上Bのマスの格子点の座標
の2面を
int stage[4][7][2]; // 盤上のマスの格子点の座標
としたのではないか、と推測したまでです。
本当に2面を管理したかったのかは、作者に聞くしかわかりませんね。
あくまでも私の推測ですよ
それより、
stage[i][j][0] = w + 400, stage[i][j][1] = h - 100;
が、何故でセミコロンではなくカンマなのかはなぞです。
気になりませんか?
No.1
- 回答日時:
>なぜxとyのみなのに[ ]が3つあるのでしょうか?
stage[*][*][0] と stage[*][*][1] の2面を管理したかったからでは?
そんなことより、
正直、どのような意図が有るのか、私にはわかりませんが、
stage[i][j][0] = w + 400, stage[i][j][1] = h - 100;
w = w * 9 / 10, h = h * 9 / 10;
の部分、なぜ、
stage[i][j][0] = w + 400; stage[i][j][1] = h - 100;
w = w * 9 / 10; h = h * 9 / 10;
のように;でなくて、カンマ区切りなのかに頭を使ったほうが良い気がします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++ と、 1 2022/11/07 23:45
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
エクセルである点からの距離で...
-
エクセルシート上のマウスポイ...
-
ダイアログ内コントロールの位...
-
以下のプログラムは重心を求め...
-
visualbasic でform上に正三角...
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
碁盤目の経路数
-
6点からの楕円の近似計算(最...
-
空間上の二点を結ぶ直線上に任...
-
c言語でキーボードから2点の座...
-
始点、終点の二つの座標と半径...
-
(C言語)スキャンライン法によ...
-
座標を持った平面範囲に座標を...
-
VB6のPrinter.ScaleWidth に対...
-
円弧の描画について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マインクラフト(pc版)で座標...
-
グラフの交点の求め方(Excel)
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
求積表の計算方法
-
ダイアログ内コントロールの位...
-
空間上の二点を結ぶ直線上に任...
-
始点、終点の二つの座標と半径...
-
図形が重なりあっているかどうか
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
シーケンサー(PLC?)で制...
-
ピクチャボックスの座標取得
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
選択範囲の座標値の抽出
-
座標を持った平面範囲に座標を...
-
VBで、開いているExcelシートの...
おすすめ情報