c 언어 배열 질문입니다!

조회수 480회

include

include

include

char a[10][10] = { "##### # ", " # # ", " # # ", " # ## ", " # # ", " # # ", " # # ", "# # ", " "};

void shift_left(int k) { int i = 0, j = 0, xx = 0;

for (i = 0; i < 9; i++) {
    for (j = k; j < 9; j++) {
        gotoxy(xx, i);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        xx += 2;
    }
    for (j = 0; j < k; j++) {
        gotoxy(xx, i);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        xx += 2;
    }
    xx = 0;
}
if (++k > 9) k = 0;
delay(50);

}

void shift_right(int k) { int i = 0, j = 0, xx = 0;

for (i = 0; i < 9; i++) {
    for (j = 9 - k; j < 9; j++) {
        gotoxy(xx, i);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        xx += 2;

    }
    for (j = 0; j < 9 - k; j++) {
        gotoxy(xx, i);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        xx += 2;

    }
    xx = 0;
}
delay(50);

}

void shift_up(int m) { int i = 0, j = 0, yy = 0;

for (j = 0; j < 9; j++) {
    for (i = m; i < 9; i++) {
        gotoxy(j,yy);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        yy += 2;

    }
    for (i = 0; i < m; i++) {
        gotoxy(j,yy);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        yy += 2;

    }
    yy = 0;
}
if (++m > 9) m = 0;
delay(50);

} void shift_down(int m) { int i = 0, j = 0, yy = 0;

for (j = 0; j < 9; j++) {
    for (i = 9 - m; i < 9; i++) {
        gotoxy(i, yy);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        yy += 2;

    }
    for (i = 0; i < 9 - m; i++) {
        gotoxy(i, yy);
        if (a[i][j] == '#') printf("■");
        else printf("  ");
        yy += 2;

    }
    yy = 0;
}
if (++m > 9) m = 0;
delay(50);

} int main() { int ch = 0, direction = 0, k = 0, m = 0;

clrscr();
shift_left(k);
shift_right(k);
shift_up(m);
shift_down(m);
do {
    if (_kbhit()) {
        switch (ch = getch())
        {
        case 75: direction = 0; break;
        case 77: direction = 1; break;
        case 72: direction = 2; break;
        case 80: direction = 3; break;
        case 27: return 0;
        }
    }
    if (direction == 0) shift_left(k);
    if (direction == 1) shift_right(k);
    if (direction == 2) shift_up(m);
    if (direction == 3) shift_down(m);
    if (++k > 9) k = 0;
    if (++m > 9) m = 0;

} while (ch != 27);

} 가 모양이 방향키에 따라 좌우상하로 움직이게 하는건데 좌우는 잘 움직이는데 위 아래는 정말 안돼서 질문 드립니다. 위 아래 함수 만든거에서 어떤게 문제인지 알려주시면 감사하겠습니다!

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)