ページ 1 / 1
キャラについて
Posted: 2009年3月03日(火) 21:24
by yuuki
龍神録プログラミングの館にある、「キャラを描画してみよう」のところで、自分のキャラを読み込ませたいのですが、
#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] ) ;
}
のどこを変えればいいのですか?
Re:キャラについて
Posted: 2009年3月03日(火) 21:51
by s-rush
読み込ませる画像を変更するだけであれば、
LoadDivGraph関数の第一引数を変えればいいですよ。
つまり
LoadDivGraph( "ここを変えます" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
というようになります。
Re:キャラについて
Posted: 2009年3月03日(火) 21:57
by yuuki
どういう風にかえればいいのですか?
その画像の名前?をいれればいいのですか?
Re:キャラについて
Posted: 2009年3月03日(火) 22:01
by s-rush
>>その画像の名前?をいれればいいのですか?
そうです。
たとえば、画像の名前が ch.png であるなら
LoadDivGraph( "ch.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
というようになります。
ただし、その画像のある場所がソースコードのあるファイル内でない場合、
ちゃんと場所を描いてあげる必要があります。
Re:キャラについて
Posted: 2009年3月03日(火) 22:18
by yuuki
そーすこーどとは何ですか?
Re:キャラについて
Posted: 2009年3月03日(火) 22:20
by s-rush
yuukiさんが書かれたプログラムのことですよ^^
Re:キャラについて
Posted: 2009年3月03日(火) 22:52
by yuuki
画像が複数ある時はどうすればよいのですか?
Re:キャラについて
Posted: 2009年3月03日(火) 22:57
by s-rush
>>画像が複数ある時はどうすればよいのですか?
というのは、自分のキャラクターが複数あるということですか?
それだと、必要なだけLoadDivGraph関数を呼び出して、メモリにロードする必要があると思います。
しかしその画像が10種類とかあればめんどうですよね??
10種類あれば、LoadDivGraph関数を10回呼び出してあげなければいけないので・・・
for文を使うといいですかね。
Re:キャラについて
Posted: 2009年3月03日(火) 23:53
by yuuki
>>画像が複数ある場合はどうしたらいいのでしょうか?
同じキャラクターの画像です。
for文?
コピペのことですか??
Re:キャラについて
Posted: 2009年3月04日(水) 00:00
by s-rush
>>コピペのことですか??
そうではなくて、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
というように数字+拡張子というようにしておかなければなりません。
Re:キャラについて
Posted: 2009年3月04日(水) 00:03
by yuuki
#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 ; // ソフトの終了
}
Re:キャラについて
Posted: 2009年3月04日(水) 00:13
by s-rush
>>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]
というようになっています。
Re:キャラについて
Posted: 2009年3月04日(水) 00:27
by kazuoni
画像が複数あるっという情報だけでは、今やっていることが
有効かどうか分かりませんね。
大きさが違う、方向が違うなどとなっているなら意味がありません。
まだ扱ったことのない物ならば、とりあえず使ってみることをお勧めします。
そのあとに自分で無駄を少なくしていけばいい話ですしね。
とりあえずは
LoadDivGraph( *1 , *2 , *3 , *4 , *5 , *6 , *7 );
で*1~*7で渡すものを理解しましょう。
詳細は本家を見てください。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R3N3
Re:キャラについて
Posted: 2009年3月04日(水) 00:28
by yuuki
え~と・・・
そこに画像の名前を入れるのですか?
Re:キャラについて
Posted: 2009年3月04日(水) 00:30
by s-rush
追記
画像の大きさとかはどうなっていますか??
画像の大きさや分割した時の画像の大きさ、方向が違えば
このプログラムは意味をなさないんですが・・・
Re:キャラについて
Posted: 2009年3月04日(水) 00:35
by s-rush
すでにkazuoniさんに指摘されていましたね^^;
ご指摘ありがとうございました。
>>そこに画像の名前を入れるのですか?
前述のプログラムであれば、
画像の名前を入れる必要はありませんよ。
>sprintf(input, "%d.png", i);
この行ですでに画像の名前を生成してありますので。
まだLoadDivGraphを一度も使われていないのであれば、
kazuoniさんのおっしゃる通り、一度使われてみたらどうですか??
実際にプログラムを打ち込んで動かしてみた方が、理解しやすいかと思います。
Re:キャラについて
Posted: 2009年3月04日(水) 00:36
by yuuki
一応すべて同じです
名前を入れるのが面倒な時は、画像の名前をかえてもいいのですか?
Re:キャラについて
Posted: 2009年3月04日(水) 00:51
by s-rush
>>名前を入れるのが面倒な時は、画像の名前をかえてもいいのですか?
とはどういうことですか?
プログラム内での画像の名前ですか?
それとも元の画像の名前ですか?
どちらにしても、片方の名前を変更したなら他方の名前も同じ名前にする必要があります。
プログラム内での画像の名前のことをおっしゃられているのであれば、
for文で自動生成するようにしてありますので、
元の画像の名前を数字.pngというように名前を変えていただければ、それで充分です。
たとえば、10種類程度なら、LoadDivGraphで10回書けばいいだけなので
それほど苦ではないかもしれませんが、100種類となった場合はどうですか?
LoadDivGraph(…);を100回書くのは面倒ですし、コードも長くなってしまいますよね?
画像サイズや分割後の1つのサイズが同じ、方向も同じといったように
条件が全く同じ下では、前述のプログラムを使用すれば、
少しは楽になると思います。
iのループ条件を変更すればいいだけなので。
Re:キャラについて
Posted: 2009年3月04日(水) 01:37
by yuuki
やっぱり中2ではこのようなこともわからないのですかねぇ~(TДT)
正直、すっげえムズカシイデス;
Re:キャラについて
Posted: 2009年3月04日(水) 01:53
by kazuoni
絶対っといっては語弊があるかもしれませんが、
基礎的なことなら年齢を問わず、理解できます。
いきなりいろいろなことをやろうとするから混乱しているだけです。
まず今使おうとしているものは関数です。
そして何を入れたらいいか悩んでいるものは引数です。
このことが理解できていないなら基礎からやったほうが、結果的に効率が良くなります。
まずは「C言語 基礎」っとググってみましょう。
それをやらないなら、おそらくレスが無駄に長くなっていくだけです。
Re:キャラについて
Posted: 2009年3月04日(水) 10:45
by Dixq (管理人)
C言語の基礎は理解されていますか?
ゲームプログラミングの館はC言語歴1ヶ月でも出来ると宣伝していますが、C言語の基礎を理解している人をターゲットとしています。
突然ここから勉強を始めようとすると難しいと思います。
まずはC言語の入門サイトで勉強してみてください。
また、年齢は関係ないと思います。
ここに来ている方の中で小学生でもシューティングゲームを作っていらっしゃいますし、
私の友達は中学の頃からパソコン雑誌に自作ソフトを投稿していました。
勉強を効率的にするこつは、基礎を大事にすることだと思いますので、順序良く着実にやってみてください。