迷路探索プログラムについて
Posted: 2012年2月15日(水) 18:35
プログラムの勉強を始めて1ヶ月ほどの初心者です。
現在簡単な迷路探索プログラムを作っているのですが、ほぼで出しで躓いてしまいました。
map[4][9]がプレイヤーで、map[4][9]の上の座標。すなわちmap[4][8]が0であったならば、
map[4][8]を1とする。というつもりで作ったプログラムです。
ですが、コンパイルするとなぜか1がmap[9][5]にでてきてしまいます。
いったいなぜなのでしょうか?一人では見直しても原因が分からなくて困っています。
原因が分かる方どうかお願いします。
下が自分が考えたプログラムです。
現在簡単な迷路探索プログラムを作っているのですが、ほぼで出しで躓いてしまいました。
map[4][9]がプレイヤーで、map[4][9]の上の座標。すなわちmap[4][8]が0であったならば、
map[4][8]を1とする。というつもりで作ったプログラムです。
ですが、コンパイルするとなぜか1がmap[9][5]にでてきてしまいます。
いったいなぜなのでしょうか?一人では見直しても原因が分からなくて困っています。
原因が分かる方どうかお願いします。
下が自分が考えたプログラムです。
#include<iostream>
#include<windows.h>
using namespace std;
//0=通れる道
//1=自分が通った道
//2=壁
//3=ゴール
//プレイヤーの座標は map[4,9] #
//ゴールの座標は map[2,6]
int map[10][10]={
{2,2,2,2,2,2,2,2,2,2},
{2,0,0,0,0,0,3,2,0,2},
{2,0,0,2,0,2,2,2,0,2},
{2,0,0,2,0,2,0,2,2,2},
{2,0,0,2,0,2,0,2,0,2},
{2,0,2,2,0,2,0,2,0,2},
{2,0,2,0,0,0,0,2,0,2},
{2,0,2,0,2,2,2,2,2,2},
{2,0,2,1,2,0,0,0,0,2},
{2,2,2,2,2,2,2,2,2,2},
};
int ix,iy;
int px,py;
int main(){
ix=0;//map配列for文用
iy=0;//map配列for文用
px=4;//プレイヤー初期位置
py=9;//プレイヤー初期位置
cout<<"プレイヤー位置map{"<<px<<"]["<<py<<"]\n";
//マップの表示
for(ix=0;ix<10;ix++){
for(iy=0;iy<10;iy++){
cout << map[ix][iy];
}
cout<<"\n";
}
//Sleep(1000);
//プレイヤーの↑が0だったらpy-1としてpyに代入
if(map[px][py-1]==0) {
py=py-1;
map[px][py]=1;
}
cout<<"プレイヤー位置map{"<<px<<"]["<<py<<"]\n";
for(ix=0;ix<10;ix++){
for(iy=0;iy<10;iy++){
cout << map[ix][iy];
}
cout<<"\n";
}
return 0;
}