DXライブラリとエクセルのコラボ

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

DXライブラリとエクセルのコラボ

#1

投稿記事 by yussanstar » 16年前

今、DXライブラリでRPGを作っています。
そこで、町や村、ダンジョンを作るのに
エクセルでマップのようなものを描いて、
色により、どんな素材を置くかを判断させたいです。
(例:黒→../../../item/草地.png 青→../../../item/井戸.png)

どうすればいいでしょうか。よろしくお願いします。

朽木

Re:DXライブラリとエクセルのコラボ

#2

投稿記事 by 朽木 » 16年前

色だけ、ではなくて、
1 1 1 1
0 0 0 1
1 0 0 1
1 1 1 1
にして、数字に合わせて色付けするのが良いと思うんですがダメなんでしょうか。

色については、xlsとtxt(タブ)に分けてするのが簡単な方法かと@@

yussanstar

Re:DXライブラリとエクセルのコラボ

#3

投稿記事 by yussanstar » 16年前

うーん、ちょっとよく分かりません。
もう少し詳しく教えてください。
どうプログラムを書けばいいか、とか。。。

再びよろしくお願いします。

朽木

Re:DXライブラリとエクセルのコラボ

#4

投稿記事 by 朽木 » 16年前

ごめんなさい。求める部分が良く分からないので上で書いた通りに作りました。

参考程度でお願いします。

main.cpp ... ソースコード
map.wld ... map.xlsをタブtxt出力したもの
map.xls ... マップ編集用Excelファイル

朽木

Re:DXライブラリとエクセルのコラボ

#5

投稿記事 by 朽木 » 16年前

あっ、ごめんなさい。後々に map.wld を手編集したので map.xls との中身が異なっています。
出力し直して実行すると、大きさが違う(足りない)ために 2 が返るので注意して下さい。
あと、fscanfの返り値の判定が間違っていました。
20行目の、
if ( fscanf(fp, "%d", &map_data[loop_y][loop_x]) == 0 ) {
を、
if ( fscanf(fp, "%d", &map_data[loop_y][loop_x]) == EOF ) {
に直して下さい。
追:
8行目の、
static unsigned int map_data[MAP_WIDTH][MAP_HEIGHT];
を、
static unsigned int map_data[MAP_HEIGHT][MAP_WIDTH];
に。
ミスありすぎで怖くなってきました。本当に参考程度にして下さいね。@@;

御津凪

Re:DXライブラリとエクセルのコラボ

#6

投稿記事 by 御津凪 » 16年前

エクセルでの色のついたセルをtxt(タブ)で出力すると、セル内の値(と位置)のみ出力され、
色情報が失われてしまうのでこの方法では無理ですが、
Ruby 等のOLE機能を使ってエクセルを直接読み込み、色を取得する方法はあります。
(そのサンプルがほとんど無いのがつらいところではありますが)

yussanstar

Re:DXライブラリとエクセルのコラボ

#7

投稿記事 by yussanstar » 16年前

朽木さんへ.....

ビルドしてみたのですが、
プロジェクト : error PRJ0002 : エラーの結果 -1 が '' より返されました。
とエラーが出てしまいます。
もちろん、修正していただいた箇所は直しました。
もし、どうしても実行不可能というのなら、実行結果だけでも教えて欲しいのですが。

お手数をおかけいたします。

朽木

Re:DXライブラリとエクセルのコラボ

#8

投稿記事 by 朽木 » 16年前

ごめんなさい。原因が良く分かりませんでした。
実行結果:
LoadMapData("./map.wld", 5, 5) ... return 0
map_data = {
    {1, 1, 1, 1, 1},
    {0, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 1, 1, 1, 1}
}
e
此方では空プロジェクトで作っているんですが、もしそれでもダメならexe入りを…

閉鎖

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