キャラについて

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

キャラについて

#1

投稿記事 by yuuki » 16年前

龍神録プログラミングの館にある、「キャラを描画してみよう」のところで、自分のキャラを読み込ませたいのですが、
#include "../include/GV.h"

extern int img_ch[2][12];

void load(){
LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
}
のどこを変えればいいのですか?

s-rush

Re:キャラについて

#2

投稿記事 by s-rush » 16年前

読み込ませる画像を変更するだけであれば、
LoadDivGraph関数の第一引数を変えればいいですよ。

つまり
LoadDivGraph( "ここを変えます" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
というようになります。

yuuki

Re:キャラについて

#3

投稿記事 by yuuki » 16年前

どういう風にかえればいいのですか?
その画像の名前?をいれればいいのですか?

s-rush

Re:キャラについて

#4

投稿記事 by s-rush » 16年前

>>その画像の名前?をいれればいいのですか?
そうです。

たとえば、画像の名前が ch.png であるなら
LoadDivGraph( "ch.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
というようになります。

ただし、その画像のある場所がソースコードのあるファイル内でない場合、
ちゃんと場所を描いてあげる必要があります。

yuuki

Re:キャラについて

#5

投稿記事 by yuuki » 16年前

そーすこーどとは何ですか?

s-rush

Re:キャラについて

#6

投稿記事 by s-rush » 16年前

yuukiさんが書かれたプログラムのことですよ^^

yuuki

Re:キャラについて

#7

投稿記事 by yuuki » 16年前

画像が複数ある時はどうすればよいのですか?

s-rush

Re:キャラについて

#8

投稿記事 by s-rush » 16年前

>>画像が複数ある時はどうすればよいのですか?
というのは、自分のキャラクターが複数あるということですか?

それだと、必要なだけLoadDivGraph関数を呼び出して、メモリにロードする必要があると思います。

しかしその画像が10種類とかあればめんどうですよね??
10種類あれば、LoadDivGraph関数を10回呼び出してあげなければいけないので・・・

for文を使うといいですかね。

yuuki

Re:キャラについて

#9

投稿記事 by yuuki » 16年前

>>画像が複数ある場合はどうしたらいいのでしょうか?
同じキャラクターの画像です。

for文?
コピペのことですか??

s-rush

Re:キャラについて

#10

投稿記事 by s-rush » 16年前

>>コピペのことですか??
そうではなくて、for文を使ってLoadDivGraph関数を呼び出します。

サンプルを作ってみました。
コンパイル時にエラーは出ませんでしたが、実行していませんので
ちゃんと動くかどうかは確認していませんが・・・

#include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了 
 
 
       int i;
    int img_ch[10][12];
    char input[64];

    for(i=0; i<10; i++)
    {
	  sprintf(input, "%d.png", i);         //読み込む画像名の生成
	  LoadDivGraph( input , 12 , 4 , 3 , 73 , 73 , img_ch ); 

    } 
        
        WaitKey() ;             // 結果を見るためにキー待ち(『WaitKey』を使用)
        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}


10種類の画像をメモリにロードするだけのプログラムです。
このとき、1つだけ注意してください。
画像の名前を(このプログラムの場合ですが)
 0.png
 1.png
 2.png
 …
 9.png

というように数字+拡張子というようにしておかなければなりません。

yuuki

Re:キャラについて

#11

投稿記事 by yuuki » 16年前

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了


int i;
    int img_ch[10][12];
    char input[64];

    for(i=0; i<10; i++)
    {
sprintf(input, "%d.png", i); //読み込む画像名の生成
LoadDivGraph( input , 12 , 4 , 3 , 73 , 73 , img_ch );
                             ↑ここに入れるのですか?
    }

WaitKey() ; // 結果を見るためにキー待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}

s-rush

Re:キャラについて

#12

投稿記事 by s-rush » 16年前

>>LoadDivGraph( input , 12 , 4 , 3 , 73 , 73 , img_ch );
>>                        ↑ここに入れるのですか?
何のことでしょうか?
画像を入れ込む変数のことをおっしゃられているのであればimg_chに格納されています。

つまり
画像名     |  格納されている変数
---------------------------------
     0.png     |     img[0]
     1.png     |     img[1]
     2.png     |     img[2]
     3.png     |     img[3]
     4.png     |     img[4]
     5.png     |     img[5]
     6.png     |     img[6]
     7.png     |     img[7]
     8.png     |     img[8]
     9.png     |     img[9]


というようになっています。

kazuoni

Re:キャラについて

#13

投稿記事 by kazuoni » 16年前

画像が複数あるっという情報だけでは、今やっていることが
有効かどうか分かりませんね。
大きさが違う、方向が違うなどとなっているなら意味がありません。
まだ扱ったことのない物ならば、とりあえず使ってみることをお勧めします。
そのあとに自分で無駄を少なくしていけばいい話ですしね。
とりあえずは
LoadDivGraph( *1 , *2 , *3 , *4 , *5 , *6 , *7 );
で*1~*7で渡すものを理解しましょう。
詳細は本家を見てください。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N3

yuuki

Re:キャラについて

#14

投稿記事 by yuuki » 16年前

え~と・・・
そこに画像の名前を入れるのですか?

s-rush

Re:キャラについて

#15

投稿記事 by s-rush » 16年前

追記
画像の大きさとかはどうなっていますか??

画像の大きさや分割した時の画像の大きさ、方向が違えば
このプログラムは意味をなさないんですが・・・

s-rush

Re:キャラについて

#16

投稿記事 by s-rush » 16年前

すでにkazuoniさんに指摘されていましたね^^;
ご指摘ありがとうございました。


>>そこに画像の名前を入れるのですか?
前述のプログラムであれば、
画像の名前を入れる必要はありませんよ。

>sprintf(input, "%d.png", i);
この行ですでに画像の名前を生成してありますので。

まだLoadDivGraphを一度も使われていないのであれば、
kazuoniさんのおっしゃる通り、一度使われてみたらどうですか??

実際にプログラムを打ち込んで動かしてみた方が、理解しやすいかと思います。

yuuki

Re:キャラについて

#17

投稿記事 by yuuki » 16年前

一応すべて同じです
名前を入れるのが面倒な時は、画像の名前をかえてもいいのですか?

s-rush

Re:キャラについて

#18

投稿記事 by s-rush » 16年前

>>名前を入れるのが面倒な時は、画像の名前をかえてもいいのですか?
とはどういうことですか?
プログラム内での画像の名前ですか?
それとも元の画像の名前ですか?

どちらにしても、片方の名前を変更したなら他方の名前も同じ名前にする必要があります。

プログラム内での画像の名前のことをおっしゃられているのであれば、
for文で自動生成するようにしてありますので、
元の画像の名前を数字.pngというように名前を変えていただければ、それで充分です。

たとえば、10種類程度なら、LoadDivGraphで10回書けばいいだけなので
それほど苦ではないかもしれませんが、100種類となった場合はどうですか?
LoadDivGraph(…);を100回書くのは面倒ですし、コードも長くなってしまいますよね?

画像サイズや分割後の1つのサイズが同じ、方向も同じといったように
条件が全く同じ下では、前述のプログラムを使用すれば、
少しは楽になると思います。
iのループ条件を変更すればいいだけなので。

yuuki

Re:キャラについて

#19

投稿記事 by yuuki » 16年前

やっぱり中2ではこのようなこともわからないのですかねぇ~(TДT)
正直、すっげえムズカシイデス;

kazuoni

Re:キャラについて

#20

投稿記事 by kazuoni » 16年前

絶対っといっては語弊があるかもしれませんが、
基礎的なことなら年齢を問わず、理解できます。
いきなりいろいろなことをやろうとするから混乱しているだけです。
まず今使おうとしているものは関数です。
そして何を入れたらいいか悩んでいるものは引数です。
このことが理解できていないなら基礎からやったほうが、結果的に効率が良くなります。
まずは「C言語 基礎」っとググってみましょう。
それをやらないなら、おそらくレスが無駄に長くなっていくだけです。

Dixq (管理人)

Re:キャラについて

#21

投稿記事 by Dixq (管理人) » 16年前

C言語の基礎は理解されていますか?
ゲームプログラミングの館はC言語歴1ヶ月でも出来ると宣伝していますが、C言語の基礎を理解している人をターゲットとしています。
突然ここから勉強を始めようとすると難しいと思います。

まずはC言語の入門サイトで勉強してみてください。

また、年齢は関係ないと思います。
ここに来ている方の中で小学生でもシューティングゲームを作っていらっしゃいますし、
私の友達は中学の頃からパソコン雑誌に自作ソフトを投稿していました。

勉強を効率的にするこつは、基礎を大事にすることだと思いますので、順序良く着実にやってみてください。

閉鎖

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