#include <stdio.h>
#include <Windows.h>
#include <conio.h>
#define UP 'w'
#define DOWN 's'
#define LEFT 'a'
#define RIGHT 'd'
void gotoxy(int x, int y);
void move(char arrow, int *x, int *y);
int main()
{
int x = 20, y = 20;
char ch;
do {
gotoxy(x, y);
ch = _getch();
move(ch, &x, &y);
printf("a");
}
while ((ch != EOF));
}
void gotoxy(int x, int y)
{
COORD pos = { x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void move(char arrow, int *x, int *y)
{
switch(arrow)
{
case UP: //error
{
*y -= 1;
}
case DOWN:
{
*y += 1;
}
case LEFT: // error
{
*x -= 1;
}
case RIGHT:
{
*x += 1;
}
}
}
wasd로 움직이면서 a 찍는 코드 짜고 싶은데
wa는 아예 안움직이고 sd만 움직인다 ㅠㅠ
고갤러 ㅎㅇ
switch문 쓸 때 보통 break; 도 쓸텐데
break; 이 없으면 다음 케이스도 실행되니까 그래요.
ㄳㄳ. 근데 break없는 상황일때 w 입력하고 s입력하고 내려가는 사이즈?행?의 크기가 다르던데 이거 왜 그런지 아시나요
중괄호도 없어도 괜찮아요.
break 없으면 둘다 똑같이 한칸씩 내려가는데 w가 좀 더 많이 내려감
break 없이 w면 변화가 없고 s면 한칸만 내려가야 할텐데...
정밀하게 움직이지 않는다는 뜻인가 보네요. 아무래도 커서 이동 함수라서 그런 듯 합니다. 다른 함수를 찾아보시면 될 듯