DXライブラリでゲームを作ろうとしてます
と、ゆうことでまずは一番簡単と思われるノベルゲームに挑戦してます
ソースはこんな感じです↓
#include "DxLib.h"
struct mystruct {
char bun[256];
int boi;
};
struct mystruct s[2];
int i,White;
char Key[256];
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理
White=GetColor(255,255,255);//白色習得
s[0].bun = "テスト。";
s[0].boi=LoadSoundMem( "test1.wav" );
s[1].bun = "テスト2。";
s[1].boi=LoadSoundMem( "test1.wav" );
int img = LoadGraph("メッセージボックス.png");//メッセージボックス
int img2 = LoadGraph("背景.png");//背景
SetDrawScreen( DX_SCREEN_BACK );//裏画面に設定
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない
DrawGraph(0,0,img2,FALSE);//背景描写
DrawGraph(0, 338, img, TRUE);//メッセージボックス描写
for(i=0;i<1;i++){
DrawFormatString(10,400,s.bun,White);//文章表示
PlaySound( s.boi, DX_PLAYTYPE_BACK );//ボイス再生
if( Key[ KEY_INPUT_RETURN ] == 1 ) ;
}
ScreenFlip() ;
}
DxLib_End();
return 0;
}
これをデッバグすると
1>------ ビルド開始: プロジェクト: ゲーム作成, 構成: Debug Win32 ------
1>コンパイルしています...
1>ゲーム作成.cpp
1>c:\noberu\ゲーム作成.cpp(19) : error C2440: '=' : 'const char [9]' から 'char [256]' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\noberu\ゲーム作成.cpp(21) : error C2440: '=' : 'const char [10]' から 'char [256]' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\noberu\ゲーム作成.cpp(36) : error C2664: 'DxLib::DrawFormatString' : 3 番目の引数を 'char [256]' から 'int' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。
1>c:\noberu\ゲーム作成.cpp(37) : error C2665: 'PlaySoundA' : 2 オーバーロードのどれも、すべての引数の型を変換できませんでした
1> c:\users\documents\dxlib_vc\プロジェクトに追加すべきファイル_vc用\dxlib.h(2900): 'int DxLib::PlaySoundA(const char *,int)' の可能性があります。
1> 引数リスト '(int, int)' を一致させようとしているとき
1>c:\noberu\ゲーム作成.cpp(39) : warning C4390: ';' : 制御が空の文が見つかりました。意図した記述でしょうか?
1>ビルドログは "file://c:\noberu\Debug\BuildLog.htm" に保存されました。
1>ゲーム作成 - エラー 4、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
とゆうエラーが出てしまいます
これはどうやって解決するのですか?
何か初歩的なことですいません
あとC言語の勉強でお勧めの本があったら教えてください
このエラーはどうゆう意味・・・
Re:このエラーはどうゆう意味・・・
> これはどうやって解決するのですか?
まずは、C++の文字列の扱いをしっかり復習してください。
あと、DXライブラリのドキュメントもちゃんと読んでください。
> あとC言語の勉強でお勧めの本があったら教えてください
『新版 明解C言語 入門編』がおすすめです。
ついでに国語も復習しましょう。
× どうゆう意味
○ どういう意味
× ゆうことで
○ いうことで
まずは、C++の文字列の扱いをしっかり復習してください。
あと、DXライブラリのドキュメントもちゃんと読んでください。
> あとC言語の勉強でお勧めの本があったら教えてください
『新版 明解C言語 入門編』がおすすめです。
ついでに国語も復習しましょう。
× どうゆう意味
○ どういう意味
× ゆうことで
○ いうことで
Re:このエラーはどうゆう意味・・・
>これはどうやって解決するのですか?
これはたかぎさんの仰っているいる通り、もう一度文字列について勉強しなおした方がてっとり早いと思われます。ソースを見たところ、エラーというより勉強不足と言う言葉が当てはまるような内容になっていますので
とりあえず、なんでもかんでもINT型で定義するのを即やめるべきだと思います。音声なら音声、画像ならと使うファイル形式によって変数の型は異なります。その点も調べてみてくださいね
>あとC言語の勉強でお勧めの本があったら教えてください
Cの絵本などは分かりやすかったと思います。gggさんはこのレベルからやり直したほうがいいと思われます
それと質問の仕方についてですがちゃんとサイトの約束事は読みましたか?OSや開発環境、自分のプログラミング知識の程など抜けていることだらけです。しっかりルールを守ってください
これはたかぎさんの仰っているいる通り、もう一度文字列について勉強しなおした方がてっとり早いと思われます。ソースを見たところ、エラーというより勉強不足と言う言葉が当てはまるような内容になっていますので
とりあえず、なんでもかんでもINT型で定義するのを即やめるべきだと思います。音声なら音声、画像ならと使うファイル形式によって変数の型は異なります。その点も調べてみてくださいね
>あとC言語の勉強でお勧めの本があったら教えてください
Cの絵本などは分かりやすかったと思います。gggさんはこのレベルからやり直したほうがいいと思われます
それと質問の仕方についてですがちゃんとサイトの約束事は読みましたか?OSや開発環境、自分のプログラミング知識の程など抜けていることだらけです。しっかりルールを守ってください
Re:このエラーはどうゆう意味・・・
> gggさん
WIN32プロジェクトでは確認しにくい事が多いので、C言語の基本についてはコンソールアプリケーションで作成されてはいかがでしょうか?
「C言語 入門」で検索すると沢山入門サイトが出てきます。
= "aaa";
で代入すると書き込み禁止領域にあるaaaという文字列のアドレスを代入することになります。
今やりたいことはそうではなく、おそらく文字列のコピーだと思います。
文字列のコピーにはstrcpyを使います。
http://www9.plala.or.jp/sgwr-t/lib/strcpy.html
またDrawFormatStringに渡す引数が間違っています。
公式リファレンスで確認してみてください。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
更に、一度読みこんだデータから音楽を再生する時はPlaySoundMem関数を使用します。
関数の使い方が解らない時は、上記リファレンスを参考にしてみてください。
最後に、正しくない日本語をお使いなのはわざとなのだと思いますが、
出来るだけ正しく真面目に文章を書いた方が良い回答が集まりますよ。
> シノニムさん
LoadSoundMemやLoadGraphの返り値はハンドルなので、int型で正しくないでしょうか?
WIN32プロジェクトでは確認しにくい事が多いので、C言語の基本についてはコンソールアプリケーションで作成されてはいかがでしょうか?
「C言語 入門」で検索すると沢山入門サイトが出てきます。
= "aaa";
で代入すると書き込み禁止領域にあるaaaという文字列のアドレスを代入することになります。
今やりたいことはそうではなく、おそらく文字列のコピーだと思います。
文字列のコピーにはstrcpyを使います。
http://www9.plala.or.jp/sgwr-t/lib/strcpy.html
またDrawFormatStringに渡す引数が間違っています。
公式リファレンスで確認してみてください。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html
更に、一度読みこんだデータから音楽を再生する時はPlaySoundMem関数を使用します。
関数の使い方が解らない時は、上記リファレンスを参考にしてみてください。
最後に、正しくない日本語をお使いなのはわざとなのだと思いますが、
出来るだけ正しく真面目に文章を書いた方が良い回答が集まりますよ。
> シノニムさん
LoadSoundMemやLoadGraphの返り値はハンドルなので、int型で正しくないでしょうか?
Re:このエラーはどうゆう意味・・・
ちなみに、DXライブラリを使う場合は、C言語ではなくC++を使うことになります。
C言語ではできたことでも、C++ではできないという場合が多々あります(もちろん逆も)。
特に、ポインタ関連の型変換はそうした部分が大きいので要注意です。
> 最後に、正しくない日本語をお使いなのはわざとなのだと思いますが、
仮にわざとだとすれば、他のすべての部分が正しくない可能性がありますね。
結局何がいいたいのか不明確になってしまいますので、やはり正しい国語の復習が不可欠です。
たまたま間違ったのなら、しかたないと思いますが...
C言語ではできたことでも、C++ではできないという場合が多々あります(もちろん逆も)。
特に、ポインタ関連の型変換はそうした部分が大きいので要注意です。
> 最後に、正しくない日本語をお使いなのはわざとなのだと思いますが、
仮にわざとだとすれば、他のすべての部分が正しくない可能性がありますね。
結局何がいいたいのか不明確になってしまいますので、やはり正しい国語の復習が不可欠です。
たまたま間違ったのなら、しかたないと思いますが...