ページ 1 / 1
ブロック崩しのブロックについて
Posted: 2012年10月04日(木) 23:06
by サイクロン1号
VC++ 2010でDXライブラリを使って、
ブロック崩しを作ろうとしているのですが、
ブロックがうまく表示することができません。
コード:
#include "DxLib.h"
#include "atari.h"
struct box_tag{
int x,y;
int flag;
};
static struct box_tag box[3][5];
static int sizeX,sizeY,habaX,habaY,box_image;
static int i,f,g,r,flag,x,y,gyou,retu;
void box_syokika(){ //boxの初期化
g=sizeof(box)/sizeof(box[0]);
r=sizeof(box[0])/sizeof(box[0][0]);
x=10;
y=10;
habaX = 15;
habaY = 15;
box_image = LoadGraph("画像/box.bmp");
GetGraphSize(box_image,&sizeX,&sizeY);
for(i=0;i<g;i++){
for(f=0;f!=r;f++){
box[i][f].y = y;
y += sizeY+habaY;
}
box[i][f].x = x;
x += sizeX+habaX;
}
}
void box_zyouhou(){ //atariに情報を送る&当たり判定を調べる
atari_box_syokika( g, r, habaX, habaY, sizeX, sizeY);//box_syokikaの初期化
atari_tama_box();
}
void box_syutoku(int a,int b, int c){ //当たり判定の取得
gyou = a;
retu = b;
flag = c;
box[gyou][retu].flag=flag;
}
void box_hyouzi(){ //ボックスを表示する
for(i=0;i<g;i++){
for(f=0;f!=r;f++){
if(box[i][f].flag==0){
DrawGraph( box[i][f].x, box[i][f].y, box_image, TRUE);
}
}
}
}
■ ■ ■ ■ ■
■ ■ ■ ■ ■
■ ■ ■ ■ ■
と言うふうに表示したいのですが、
■
■
■
■
・
・
・
■
■
■
■
というふうになってしまいます。
ちゃんと表示するにはどのようにすれば良いのでしょうか?
Re: ブロック崩しのブロックについて
Posted: 2012年10月04日(木) 23:23
by softya(ソフト屋)
インデントが間違っているので直してくださいね。表示読みづらいのとバグのもとです。
で、今回の問題ですが一文字変数名の多用がご自身にも混乱をもたらしていませんか?
i,f,g,rはboxY,boxX,boxSizeY,boxSizeXとするだけで凄く分かりやすくなると思います。
インデントと変数名を変更したのを貼っておきます。どうです問題点が明確になったのではありませんか?
コード:
#include "DxLib.h"
#include "atari.h"
struct box_tag {
int x, y;
int flag;
};
static struct box_tag box[3][5];
static int sizeX, sizeY, habaX, habaY, box_image;
static int boxY, boxX, boxSizeY, boxSizeX, flag, x, y, gyou, retu;
void box_syokika() //boxの初期化
{
boxSizeY = sizeof( box ) / sizeof( box[0] );
boxSizeX = sizeof( box[0] ) / sizeof( box[0][0] );
x = 10;
y = 10;
habaX = 15;
habaY = 15;
box_image = LoadGraph( "画像/box.bmp" );
GetGraphSize( box_image, &sizeX, &sizeY );
for( boxY = 0; boxY < boxSizeY; boxY++ ) {
for( boxX = 0; boxX != boxSizeX; boxX++ ) {
box[boxY][boxX].y = y;
y += sizeY + habaY;
}
box[boxY][boxX].x = x;
x += sizeX + habaX;
}
}
void box_zyouhou() //atariに情報を送る&当たり判定を調べる
{
atari_box_syokika( boxSizeY, boxSizeX, habaX, habaY, sizeX, sizeY ); //box_syokikaの初期化
atari_tama_box();
}
void box_syutoku( int a, int b, int c ) //当たり判定の取得
{
gyou = a;
retu = b;
flag = c;
box[gyou][retu].flag = flag;
}
void box_hyouzi() //ボックスを表示する
{
for( boxY = 0; boxY < boxSizeY; boxY++ ) {
for( boxX = 0; boxX != boxSizeX; boxX++ ) {
if( box[boxY][boxX].flag == 0 ) {
DrawGraph( box[boxY][boxX].x, box[boxY][boxX].y, box_image, TRUE );
}
}
}
}
あと無駄なことをしていたり、条件文が変だったり、コメントと動作が食い違ったり、グローバル変数を多用しすぎだったりしますが後ほど説明します。
Re: ブロック崩しのブロックについて
Posted: 2012年10月12日(金) 22:05
by サイクロン1号
返信遅れて申しわけございません。
変数を関数を超えて参照させるには、
どのような手段と取れば良いのでしょうか?
Re: ブロック崩しのブロックについて
Posted: 2012年10月12日(金) 22:08
by softya(ソフト屋)
サイクロン1号 さんが書きました:返信遅れて申しわけございません。
変数を関数を超えて参照させるには、
どのような手段と取れば良いのでしょうか?
引数を使ってください。
Re: ブロック崩しのブロックについて
Posted: 2012年10月13日(土) 13:18
by サイクロン1号
少し本題とは違うのですが、VC2012をインストールしてみた所、
大量のエラーが出ました。
ググっても全く原因がわからず困っています。
どのようにすれば解決するのでしょうか。
1>------ ビルド開始: プロジェクト: GameProg, 構成: Debug Win32 ------
1>atari.obj : warning LNK4075: /EDITANDCONTINUE は /SAFESEH の指定によって無視されます。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>DxUseCLib_d.lib(DxUseCLib.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>DxUseCLib_d.lib(DxUseCStrmBaseFilter.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngrio.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngerror.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngget.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngread.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngmem.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngtrans.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngrtran.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(png.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngwrite.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngset.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(inflate.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngrutil.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(crc32.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngwutil.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngwio.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(pngwtran.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(deflate.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(zutil.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(inffast.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(inftrees.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(adler32.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(trees.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libpng_d.lib(compress.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdmarker.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdapimin.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdapistd.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jerror.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcapimin.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcapistd.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcparam.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdatadst.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcomapi.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jutils.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdinput.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jmemmgr.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdmaster.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcmarker.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcinit.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jmemansi.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdmainct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdcoefct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdhuff.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdarith.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jddctmgr.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdpostct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdsample.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdcolor.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jdmerge.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jquant2.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jquant1.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcmainct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jccoefct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jchuff.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcarith.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcdctmgr.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcprepct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcsample.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jccolor.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jcmaster.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jidctint.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jidctfst.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jidctflt.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jfdctint.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jfdctfst.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libjpeg_d.lib(jfdctflt.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>ogg_static_d.lib(framing.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(vorbisfile.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(info.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(synthesis.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(block.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(psy.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(sharedbook.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(codebook.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(bitrate.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(envelope.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(smallft.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(mdct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(lpc.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(window.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(mapping0.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(res0.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(floor1.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(floor0.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>vorbis_static_d.lib(lsp.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(apiwrapper.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(decapiwrapper.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(internal.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(info.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(decode.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(state.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(decinfo.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(quant.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(huffdec.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(bitpack.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(fragment.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(idct.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>libtheora_static_d.lib(dequant.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>ogg_static_d.lib(bitwise.obj) : error LNK2026: モジュールは SAFESEH イメージには安全ではありません。
1>C:\Users/ユーザー名\Videos\プログラム\GameProg\Debug\GameProg.exe : fatal error LNK1281: SAFESEH イメージを生成できません。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
Re: ブロック崩しのブロックについて
Posted: 2012年10月13日(土) 13:54
by softya(ソフト屋)
DXライブラリがVS2012に対応したと表明されていませんので未対応なのでしょう。
なので、正式に対応されるまで使わないほうが良いと思います。
Re: ブロック崩しのブロックについて
Posted: 2012年10月13日(土) 23:18
by ISLe
Visual Studio Express 2012 for Windows Desktopで既存のプロジェクトを変換したり、Win32プロジェクトを新規に作成したりしてみましたが、こちらでは何も問題ありませんね。
/SAFESEHオプションはデフォルトでは指定されないようですが。
#/SAFESEHオプション自体は.NET2003からあるみたいです。
/SAFESEHオプションを削除すればコンパイルできると思いますが、なぜ紛れ込んだのか理由を知りたいですね。
有償版だと違うとか?
Re: ブロック崩しのブロックについて
Posted: 2012年10月14日(日) 17:27
by サイクロン1号
ありがとうごさいます。
2012版で動かないのは、僕が設定し忘れていたからでした。
僕のミスでご迷惑をかけて本当に申し訳ございません。
後、ブロックをちゃんと並ばせることもできました。
変数名が思い浮かばなくて全角文字ですが・・・
コード:
for(i=0;i<boxSize;i++){
box[i].x = 30+boxsizeX+幅の差;
box[i].y = 10+boxsizeY+高さの差;
boxsizeX += sizeX;
幅の差 += habaX;
if(i%9==0){
boxsizeY += sizeY;
高さの差 += habaY;
box[i].y = 10+boxsizeY+高さの差;
boxsizeX = 0;
幅の差 = 0;
}
Re: ブロック崩しのブロックについて
Posted: 2012年10月24日(水) 00:20
by
こちらのトラブルについてですが私も同じ状況になり、以下のURLのサイトが参考になりましたので報告します。
http://www44.atwiki.jp/bokuyo/pages/187.html
コンパイルの流れについてよく分かっておらず、サイトの指示通り操作したところ
~\001_control.pdb' の PDB 形式に互換性がありません。削除して再度ビルドしてください。
というエラーが出ましたが言われた通りに削除したところ問題なくコンパイルできました。
Re: ブロック崩しのブロックについて
Posted: 2012年10月24日(水) 01:25
by ISLe
旧版から2012のプロジェクトに変換すると/SAFESEHオプションが勝手に付くのですか。
こちらでもVisual C++ 2010 Expressのプロジェクトを、Express 2012 for Windows Desktopで読み込ませたのですが付きませんでした。
質問者さんがRC版を使ったようには思えませんし。
必ず付くわけではないのでしょうかね。