#include <stdio.h>
#include <stdlib.h>
#define XSIZE 16
#define YSIZE 12
int x, y; //x,yを定義
struct masu {
int p; //pを定義
int right; //rightを定義
int bottom; //bottomを定義
};
struct masu board[XSIZE][YSIZE];
void print_board()
{
int i, j;
system("cls"); /* windowsではsystem("cls");、macではsystem("clear"); */
for (j=0; j<YSIZE; j++)
printf("+---");
printf("+\n");
for (i=0; i<XSIZE; i++) {
printf("|");
for (j=0; j<YSIZE; j++) {
if (i == x && j == y) printf("you");
else if (board[i][j].p == 1) printf(" o ");
else printf(" ");
if (j==YSIZE-1 || board[i][j].right == 1) printf("|");
else printf(" ");
}
printf("\n");
for (j=0; j<YSIZE; j++) {
printf("+");
if (i==XSIZE-1 || board[i][j].bottom == 1) printf("---");
else printf(" ");
}
printf("+\n");
}
printf("\n");
}
void initialize()
{
int i, j;
//srandom(time(NULL));
for (i=0; i<XSIZE; i++) {
for (j=0; j<YSIZE; j++) {
board[i][j].right = 0;
board[i][j].bottom = 0;
if (rand() % 3 == 0) board[i][j].right = 1;
if (rand() % 3 == 0) board[i][j].bottom = 1;
board[i][j].p = 1;
}
}
}
int main()
{
char input;
initialize();
x = 0;
y = 0;
board[x][y].p = 0;
while (1) {
print_board();
//if (x == XSIZE && y == YSIZE);{ break;}
printf("input(2,3,4,5)> ");
scanf("%c", &input);
printf("\n");
if (input == '2'){
x=x-1;
}
else if (input == '3'){
y=y-1;
}
else if (input == '4'){
x=x+1;
}
else if (input == '5'){
y=y+1;
}
else{
}
board[x][y].p = 0;
}
printf("goal!!\n");
return 0;
}
たびたびすみません
たびたびすみません
先ほどの続きですが、これで壁を突き抜けないようにしたいのですが。どのようにすれば壁を突き抜けなくなりますか??
Re: たびたびすみません
こちらの続きということでしょうか?k さんが書きました:先ほどの続きですが、これで壁を突き抜けないようにしたいのですが。どのようにすれば壁を突き抜けなくなりますか??
http://dixq.net/forum/viewtopic.php?f=3&t=7674
なぜ、先ほどのトピックを放置してわざわざ新規トピックを立てるのでしょうか?
解決していないのであれば元のトピックに継続して記入してください。
とりあえず、学校の課題でしたね。
では、答えを直接は書きません。
突き抜けるというのは壁を抜けて動いてしまうということで良いですね?
現在、2~5の値を入力された際に移動の処理を行っている部分で、
現在は座標にかかわらず強制的に移動してしまっています。
そのため、画面外にも移動できてしまう状態になっています。
例えば、x=0,y=0にいるときにx=x-1とやってしまうとxは-1(ボードの外)に移動できてしまいますので、
if文でxが0の時は移動しないか、xが0より大きいときだけ移動するように条件で処理を分ければ良いでしょう。
例1: 同様にボードサイズの端にいる場合も のようにすることで画面外に出るのを防止することができます。
また、これはどちらでもかまわないのですが 上記に書いたのはボードから抜けない条件であって個々の壁を抜けない条件は、
また別に書く必要がありますが、どのような条件が必要か考えてみてください。