ブロック崩し 画像配置について

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

ブロック崩し 画像配置について

#1

投稿記事 by 初心者 » 15年前

DXライブラリを使ってブロック崩しを作ろうとしています。

一番初めのブロック画像の配置で躓いています。おそらく私がchar型配列変数を十分理解していないことが原因と思うのですが、手元の参考書を読んでも、原因がわかりません。解決のヒントでかまいませんので宜しくご指導お願いします。(もちろんコード書き換えて教えていただいてもかまいせん)

下記に、エラーメッセージとコードを貼り付けさせていただきましたので宜しくお願いいたします。
(コードはブロック配置を表示させるだけのところでとまっています)

エラーメッセージ
1>c:\documents and settings\nimo\my documents\visual studio 2008\projects\dx training\dx training\main.cpp(36) : error C2440: '=' : 'int' から 'char *' に変換できません。
1> 整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
1>c:\documents and settings\nimo\my documents\visual studio 2008\projects\dx training\dx training\main.cpp(43) : error C2664: 'DxLib::DrawGraph' : 3 番目の引数を 'char *' から 'int' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。
1>c:\documents and settings\nimo\my documents\visual studio 2008\projects\dx training\dx training\main.cpp(45) : error C2664: 'DxLib::DrawGraph' : 3 番目の引数を 'char *' から 'int' に変換できません。(新しい機能 ; ヘルプを参照)
1> この変換が可能なコンテキストはありません。

コード:

#include "DxLib.h"

#define MAXW 8
#define MAXH 5

int ball;
int locationwall[MAXH][MAXW]={
// X=0,1,2,3,4,5,6,7
	{1,1,1,1,1,1,1,1}, //0
	{2,2,2,2,2,2,2,2}, //1
	{3,3,3,3,3,3,3,3}, //2
	{4,4,4,4,4,4,4,4}, //3
	{5,5,5,5,5,5,5,5}  //4
};

char *imagewall[]={
	"C:\\nimo\\wall1.bmp",
	"C:\\nimo\\wall2.bmp",
	"C:\\nimo\\wall3.bmp",
	"C:\\nimo\\wall4.bmp",
	"C:\\nimo\\wall5.bmp",

};
char *loadimage[];
int i=0;
int x=0, y=0;



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
	    ChangeWindowMode( TRUE );       
        if(DxLib_Init() == -1 ) return -1; //初期化処理

		SetDrawScreen(DX_SCREEN_BACK);

		for(i=0;i<5;i++){
			loadimage[i]=LoadGraph(imagewall[i]);}

		//while(1)
		//{
			ClearDrawScreen();
			for(x=0; x<MAXW;x++){
				for(y=0;y<MAXH;y++){
					DrawGraph(x*77,y*39 ,loadimage[locationwall[y][x]] ,TRUE);}
			//}
			
			ScreenFlip();
			WaitKey();
    
        DxLib_End();
        return 0;
}


アバター
bitter_fox
記事: 607
登録日時: 15年前
住所: 大阪府

Re: ブロック崩し 画像配置について

#2

投稿記事 by bitter_fox » 15年前

初心者 さんが書きました:一番初めのブロック画像の配置で躓いています。おそらく私がchar型配列変数を十分理解していないことが原因と思うのですが、手元の参考書を読んでも、原因がわかりません。解決のヒントでかまいませんので宜しくご指導お願いします。(もちろんコード書き換えて教えていただいてもかまいせん)

エラーメッセージ
1>c:\documents and settings\nimo\my documents\visual studio 2008\projects\dx training\dx training\main.cpp(36) : error C2440: '=' : 'int' から 'char *' に変換できません。
1> 整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。

コード:

char *loadimage[];

		for(i=0;i<5;i++){
			loadimage[i]=LoadGraph(imagewall[i]);}
LoadGraphの戻り値の型はchar*型ではなくint型です。
ですので、loadimageはint型の配列ないしはポインタとして宣言してください。
http://homepage2.nifty.com/natupaji/DxL ... graph.html : リファレンス

また、この用法では確保されていない領域にアクセスしてしまってます。
宣言時に大きさを指定するなどしてください。

コード:

int loadimage[5];
最後にフォーラムルールには以下のようにあります。
フォーラムルール さんが書きました: 時々「あああ」とか「あいうえお」などという名前で投稿される方がいますが、

ふざけているように捉えられる場合が多く、熱心に回答してあげようという気を殺いでしまいます。

また、「初心者です」「初心者」「初めまして」「名無し」のような

その場だけの名前、また、多くの人が重複して使うであろう名前は避けてください。

なるべくオリジナルな名前を決め、以後同じ名前を使い続けてください。
ですので、これに従っていただくようにお願いします。
http://dixq.net/board/board.html#k2

初心者改め:ken

Re: ブロック崩し 画像配置について

#3

投稿記事 by 初心者改め:ken » 15年前

bitter_foxさん、早速のご返信ありがとうございます。
かなり初歩的なミスですね・・・もう少ししっかり確認いたします。

有難うございました!!

閉鎖

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