DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
プログラマ見習い
記事: 44
登録日時: 4年前

DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#1

投稿記事 by プログラマ見習い » 4年前

DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。
お手上げです。
何日も書籍やネットで調べて、いろいろなソースコードで試しましたが、全然出来ませんでした。
このままではゲームの骨組み一つ作れません。どうか教えて下さい。
描画したいマップデータはとりあえずこちらです。

コード:

 
 
#define YHMAX 15*1 //
#define XWMAX 20*4 //

 char mapdata[YHMAX][XWMAX+1]={

/*00*/{'0','0','0','0','1','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*01*/{'0','0','0','0','0','1','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*02*/{'0','0','0','0','A','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*03*/{'0','0','0','0','0','A','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*04*/{'0','0','0','0','0','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*05*/{'0','0','0','0','0','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*06*/{'0','0','0','0','0','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*07*/{'0','0','0','0','0','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*08*/{'0','0','0','0','0','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*09*/{'0','0','0','0','0','0','0','0','0','0'/*10*/,'0','0','0','0','0','0','0','0','0','0'/*20*/,'0','0','0','0','0','0','0','0','0','0'/*30*/,'0','0','0','0','0','0','0','0','0','0'/*40*/,'0','0','0','0','0','0','0','0','0','0'/*50*/,'0','0','0','0','0','0','0','0','0','0'/*60*/,'0','0','0','0','0','0','0','0','0','0'/*70*/,'0','0','0','0','0','0','0','0','0','0'/*80*/},
/*10*/{'0','0','0','0','0','0','0','0','0','0'/*11*/,'0','0','0','0','0','0','0','0','0','0'/*21*/,'0','0','0','0','0','0','0','0','0','0'/*31*/,'0','0','0','0','0','0','0','0','0','0'/*41*/,'0','0','0','0','0','0','0','0','0','0'/*51*/,'0','0','0','0','0','0','0','0','0','0'/*61*/,'0','0','0','0','0','0','0','0','0','0'/*71*/,'0','0','0','0','0','0','0','0','0','0'/*81*/},
/*11*/{'0','0','0','0','0','0','0','0','0','0'/*11*/,'0','0','0','0','0','0','0','0','0','0'/*21*/,'0','0','0','0','0','0','0','0','0','0'/*31*/,'0','0','0','0','0','0','0','0','0','0'/*41*/,'0','0','0','0','0','0','0','0','0','0'/*51*/,'0','0','0','0','0','0','0','0','0','0'/*61*/,'0','0','0','0','0','0','0','0','0','0'/*71*/,'0','0','0','0','0','0','0','0','0','0'/*81*/},
/*12*/{'0','0','0','0','0','0','0','0','0','0'/*11*/,'0','0','0','0','0','0','0','0','0','0'/*21*/,'0','0','0','0','0','0','0','0','0','0'/*31*/,'0','0','0','0','0','0','0','0','0','0'/*41*/,'0','0','0','0','0','0','0','0','0','0'/*51*/,'0','0','0','0','0','0','0','0','0','0'/*61*/,'0','0','0','0','0','0','0','0','0','0'/*71*/,'0','0','0','0','0','0','0','0','0','0'/*81*/},
/*13*/{'0','0','0','0','0','A','0','0','0','0'/*11*/,'0','0','0','0','0','0','0','0','0','0'/*21*/,'0','0','0','0','0','0','0','0','0','0'/*31*/,'0','0','0','0','0','0','0','0','0','0'/*41*/,'0','0','0','0','0','0','0','0','0','0'/*51*/,'0','0','0','0','0','0','0','0','0','0'/*61*/,'0','0','0','0','0','0','0','0','0','0'/*71*/,'0','0','0','0','0','0','0','0','0','0'/*81*/},
/*14*/{'0','0','0','0','1','1','0','0','0','0'/*11*/,'0','0','0','0','0','0','0','0','0','0'/*21*/,'0','0','0','0','0','0','0','0','0','0'/*31*/,'0','0','0','0','0','0','0','0','0','0'/*41*/,'0','0','0','0','0','0','0','0','0','0'/*51*/,'0','0','0','0','0','0','0','0','0','0'/*61*/,'0','0','0','0','0','0','0','0','0','0'/*71*/,'0','0','0','0','0','0','0','0','0','0'/*81*/}

};
 
  


アバター
usao
記事: 1887
登録日時: 11年前

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#3

投稿記事 by usao » 4年前

なぜわざわざ新規トピックにしてるのかわからんけど
話を打ち切って無かったように別に始めるという態度は協力者を減らす方向にしか行かないと思うぞ.

で,根本的な間違いは何かっていうと
「自分自身でどう使えばいいのかもわからんデータをわざわざ定義している」という点であろう.
普通,データってのは,自分が使うのに都合が良い形に用意するんだから,それを使って何をどうするのか?ってのは「自明」と言える.
「データはこれなんだけども,どうすればいいかわかりません><」なんていう意味不明な状況には,少なくとも出発点の段階で陥ることにはならないと思うんだよな,常識的に考えて.

つまり,どうすれば良いか?っていうと,
【自分で使い方がわかるデータを作って使えばいいだろ】ってことになる.これは煽りとかじゃなく真面目な話.
そのマップデータとやらの出自は不明だけど,それから一旦離れて,まず,単純に

> 複数の種類の画像を複数描画する

という事柄「だけ」をやってみる段階を踏んだ方が近道になると思う.

プログラマ見習い
記事: 44
登録日時: 4年前

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#4

投稿記事 by プログラマ見習い » 4年前

すみません。
私も書籍やネットで調べて自分で考えて試行錯誤を繰り返しているのですが、全然解決出来なくて、質問の仕方も分からない状態だったのです。今度から気を付けます。

プログラマ見習い
記事: 44
登録日時: 4年前

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#5

投稿記事 by プログラマ見習い » 4年前

お礼とお詫び。
皆さん。貴重なアドバイスをありがとうございます。
私が投稿したこのトピックは不適切なものでしたので、お詫びを申し上げます。
このトピックは不適切なものでしたので、削除を希望する事を管理人に通知します。通知は通報システムを利用させていただきます。

プログラマ見習い
記事: 44
登録日時: 4年前

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#6

投稿記事 by プログラマ見習い » 4年前

追記。不適切の具体的な内容は、質問の内容が抽象的で回答を丸投げしてしまう趣旨のものでった事や、「話を打ち切って無かったように別に始めるという態度」をとってしまった事などです。

Math

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#7

投稿記事 by Math » 4年前

(全部わかっててさりげなく書いたのですがサンプルプログラム のダウウンロード をクリックして
本の表紙をクリックするとサンプルが入手できますよ。そのなかにマップを利用するゲームの作り方がありますよ
(^^; 14歳のほう
きにいったら本も買ってあげたら。)

Math

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#8

投稿記事 by Math » 4年前

(昔あんドーナツさんがこの本を使った説明(dxlibの)されてたはず 過去ログを検索してみて
このての相談は過去ログに沢山あるはずでっせ)

プログラマ見習い
記事: 44
登録日時: 4年前

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#9

投稿記事 by プログラマ見習い » 4年前

12歳や14歳のプログラミングの本。あんドーナッツさんですね。
複数の種類の画像を複数描画という事柄に集中しながら、いろいろと調べてみます。
MaThさん。usaoさん。貴重なアドバイスありがとうございます。

アバター
usao
記事: 1887
登録日時: 11年前

Re: DXライブラリを使って異なる複数の種類の画像を複数描画する方法を教えて下さい。

#10

投稿記事 by usao » 4年前

> 複数の種類の画像を複数描画する

これ「だけ」をやるのに必要な要素を考える.

「複数」がネックならば,最初は「1個」から始める.
「一個なら余裕だからやってみるまでもないぜ!」とか構えてても何も進まないなら,実際にやってみて具体化することだ.

1つの画像を描画するのに最低限必要なのは「どこに描画するのか」「何を描画するのか」の2つの情報であろう.
前者は描画位置を示す座標であり,2Dだろうから(x,y)でいいだろう.
後者はDXライブラリの場合だとどうやら「画像のハンドル(?)」とかいう値っぽいので,
(x,y,ハンドル)というデータが1セットあれば,1つの画像を描画するのに足るハズだ.
よって,最初にやってみるべきは,例えば

コード:

//※「ハンドル」の具体的な型を知らないので,ここではIMG_HANDLEと書いた.
struct Data{  int x,  int y,  IMG_HANDLE hImg  };
という型のデータが与えられたときに,この情報に従って画像を描画する処理の実現.

これができたなら,複数にするのは難しくない.
複数個のData型のデータに対して同じことをやればいいだけだ.
簡単な形の例としては「データはData型の配列として表し,処理はこの配列に関してforなりで書く」だ.

まず,ここまでを実際にやる.
やれたなら「(この時点のコードに存在している)この Data型の配列 に,妥当な値をセットしさえすれば動く」というコードが手に入ったってことだ.(この時点でトピックの表題についてはクリアしている)

後は,実際のゲームのプログラムにおいて前記「妥当な値をセット」の部分をどうするかだけだ.
今回の件なら【マップデータからどうやってData型の配列に値をセットするか】だけが,解決すべき課題となる.



「このマップデータからどうにかして描画に必要な複数個のデータを取得してうまいこと描画する」という複数の要素が固まったでかい問題を
よーいドン!で一度にやっつけようとするのではなくて,
小さな問題に切り分けて,順を追って,少しづつ確かな部分を固めていく.
そうすれば,うまく動かないときにどこが問題なのか(どこをデバッグ対象にすればよいか)も把握しやすい
(だって,一個前の段階まではうまく動いていたのだもの)

返信

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