问答详情
源自:2-1 有名有姓的C

求大神, 哪里错了?

#include <stdio.h>

#include <stdlib.h> 

#include <windows.h>

#include <conio.h>

// 无法进入中央区域-- 还有字符莫名其妙消失的问题 

char map[20][20];

int i, j;


void move(int x, int y);


int main(void)

{

int move_x = 1, move_y = 1;

for (i = 0; i < 20; i++) 

scanf ("%s", &map[i]);

map[move_x][move_y] = 'M';

for (i = 0; i < 20; i++)

puts(map[i]);

move(move_x, move_y);

return 0;

}


void move(int x, int y)

{

char ch;

while ((ch = getch()) != 'q')

{

if (ch == 'w' || ch == 's' || ch == 'a' || ch == 'd')

{


map[x][y] = ' ';

switch (ch){

case 'w': map[--x][y] = 'M'; break;

case 's': map[++x][y] = 'M'; break;

case 'a': map[x][--y] = 'M'; break;

case 'd': map[x][++y] = 'M'; break;

}

}

else

{

printf ("不是有效按键!!!\n");

continue;

}

// 重绘地图 

system("cls");

for(i = 0; i < 20; i++)

puts(map[i]); 

}

}

移动时会出现字符莫名其妙消失 还有多个字符飞来飞去, 怎么回事

提问者:qq_愿时光安好_04050009 2017-03-10 22:38

个回答

  • 慕桂英6272599
    2017-03-11 15:01:12

    for (i = 0; i < 20; i++) 

    scanf ("%s", &map[i]);

    map[move_x][move_y] = 'M';


    for (i = 0; i < 20; i++)

    puts(map[i]);

    move(move_x, move_y);

    循环体需要用{}