初めまして、uesyuuと申します。
今、学校でポケモン風RPGを作っているのですが、「主人公がキャラクターの前に立ってEnterキーを押すと、相手のいる座標から相手の言葉を割り出し表示する」というプログラムがいまいち動きません。
プログラムは重要なところだけを抜き出せば、こんな感じです。
int hantei[15][20] = {
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,4,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,2,0,3,0,0,0,0,0,0,2,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,3,0,0,2,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,2,0,0,0,0,0,0,0,3,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,3,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,2,1,1 },
{ 1,1,1,1,1,0,2,0,0,0,1,0,2,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,3,0,0,1,0,0,0,1,1 },
{ 1,1,1,1,1,0,0,0,3,0,0,0,0,0,0,0,2,0,1,1 },
{ 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
};
int talk[14][3] = {
{0,3,6},
{0,3,8},
{0,3,15},
{0,4,10},
{0,4,13},
{0,5,7},
{0,5,15},
{0,6,11},
{0,7,17},
{0,8,6},
{0,8,12},
{0,10,11},
{0,11,8},
{0,11,16},
};
char* talk2[14] = {
"敵1が現れた!",
"味方1が現れた!",
"敵2が現れた!",
"味方2が現れた!",
"敵3が現れた!",
"敵4が現れた!",
"味方3が現れた!",
"味方4が現れた!",
"敵5が現れた!",
"敵6が現れた!",
"敵7が現れた!",
"味方5が現れた!",
"味方6が現れた!",
"敵8が現れた!",
};
Talk(int map,int x,int y){
if(ch.muki==0){
x = x/24;
y = y/24-1;
}
if(ch.muki==1){
x = x/24-1;
y = y/24;
}
if(ch.muki==2){
x = x/24;
y = y/24+1;
}
if(ch.muki==3){
x = x/24+1;
y = y/24;
}
for(n=0;n<14;n++){
if(talk[n][0]==map && talk[n][1]==x && talk[n][2]==y){
break;
}
}
if(EnemyFlag==0 && Key[ KEY_INPUT_RETURN ] == 1){
EnemyFlag = 1;
}
if(EnemyFlag == 1){
DrawBox(0,352,640,480,GetColor(255,255,255),TRUE);
DrawBox(0,352,640,480,GetColor(0,0,0),FALSE);
DrawFormatString(10,362,GetColor(255,0,0),"%s",&talk2[n]);
}
}
あとは、前に障害物があって進めないときにTalk()を実行するだけです。
なぜかこのプログラムでは、どこの障害物の前でEnterキーを押してもtalk2の配列の1番最初である「敵1が現れた!」が表示されてしまうのです。
あと、文字列の配列にポインタを使っているのですが、それでいいのかもよくわかりません。
解決策を教えてください。