[1] 質問文
[1.1] 自分が今行いたい事は何か
二次元配列を使ってマス目を作る。
マス目の上下左右の両端を1にする。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
#include"Dxlib.h"
void MasuSyokika();//マスに壁(1)の枠を作る
void MasuHyouzi();//表示
int masu[15][7];
int masu_syokika_flag=0;//マスの外側を壁(1)にしたか
int WINAPI WinMain(HINSTANCE hI,HINSTANCE hp,LPSTR lpC,int nC)
{
ChangeWindowMode(TRUE); //ウィンドウズモードで起動
if(DxLib_Init()==-1)return(-1); //DXライブラリ初期化
while(ProcessMessage()==0&&CheckHitKey(KEY_INPUT_ESCAPE)==0)
{
MasuSyokika();
break;
}
DxLib_End(); //Dxライブラリ終了
return(0); //終了
}
void MasuSyokika()
{
int a=0;
int b=0;
while(ProcessMessage()==0&&CheckHitKey(KEY_INPUT_ESCAPE)==0&&masu_syokika_flag==0)
{
masu[0][a]=1;
masu[15][a]=1;
masu[b][0]=1;
masu[b][7]=1;
if(a<8)a++;
if(b<16)b++;
printfDx("a=%d,b=%d¥n¥n",a,b);
MasuHyouzi();
if(a==8&&b==16)
{
masu_syokika_flag=1;
printfDx("a=%d,b=%d¥n終了¥n¥n",a,b);
WaitKey();
break;
}
}
}
void MasuHyouzi()
{
int a=0;
int b=0;
while(ProcessMessage()==0&&CheckHitKey(KEY_INPUT_ESCAPE)==0)
{
printfDx("%2d",masu[b][a]);
a++;
if(a==8)
{
printfDx("¥n");
b++;
a=0;
if(b==16)
{
WaitKey();
clsDx();
ClearDrawScreen();
b=0;
break;
}
}
}
}
予期しない要素に1が代入される。
配列の範囲外にも0と1が発生している。
[1.4] 今何がわからないのか、知りたいのか
別の要素にも代入される仕組みが知りたい。
配列について理解を深めたい。
ついでにこのバグを修正したい。
[2] 環境
[2.1] OS : Windows, Linux等々
Windows
[2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
Borand C++5.5.1
[3] その他
・どの程度C言語を理解しているか
14歳からはじめるc言語プログラミングを流し読み。
c言語の切り札を過去問手前まで読み、多分理解。
cの絵本の第2版を読み、多分理解。
苦しんで覚えるc言語を読んでいる途中で今回のプログラムを思い立つ。
・ライブラリを使っている場合は何を使っているか
DXライブラリ
説明不足あれば教えて下さるとありがたいです。