c 캐릭터 이동 만들기 질문

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>

#define kbUP 72
#define kbLEFT 75
#define kbRIGHT 77
#define kbDOWN 80 

//캐릭터 이동
//1.키보드 입력에 대한 이벤트를 알아야 한다.
//2.원하는 위치로 커서를 이동 시킬 수 있어야 한다.
void gotoXY(int x, int y)
{
	COORD Cursor;
	Cursor.X = x;
	Cursor.Y = y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cursor);
}

int main(int argc, char argv[])
{
	char cPosition;
	int iCenterX = 7, iCenterY = 7;
	//Center
	gotoXY(iCenterX, iCenterY);
	printf("*");
	while (1)
	{
		if (kbhit())
		{
			system("cls");
			cPosition = getch();
			switch (cPosition)
			{
			case 'w':
			case kbUP:
				iCenterY--;//up
			case 's':
			case kbDOWN:
				iCenterY++;//down
			case 'a':
			case kbLEFT:
				iCenterX--;//left
			case 'd':
			case kbRIGHT:
				iCenterX++;//right
				break;
			}
			// 맵 크기 설정
			if (iCenterX <= 5)
			{
				iCenterX++;
			}
			if (iCenterX >= 20)
			{
				iCenterX--;
			}
			if (iCenterY <= 5)
			{
				iCenterY++;
			}
			if (iCenterY >= 20)
			{
				iCenterY--;
			}

		}
		gotoXY(iCenterX, iCenterY);
		printf("*");
		Sleep(10);

		if (iCenterX == 7 && iCenterY == 10)
		{
			printf("이벤트 발생1\n");
		}
		if (iCenterX == 10 && iCenterY == 10)
		{
			printf("이벤트 발생3\n");
		}
		if (iCenterX == 20 && iCenterY == 15)
		{
			printf("이벤트 발생2\n");
		}
	}


	return 0;
}

오른쪽이랑 위로는 가지는데 아래랑 왼쪽으로는 안가지네요… 증감 연산자 사용할 때 – 부분이 안들어가는 거 같은데 왜 이럴까요 ㅜㅜ

switch (cPosition)
			{
			case 'w':
			case kbUP:
				iCenterY--;//up
			case 's':
			case kbDOWN:
				iCenterY++;//down
			case 'a':
			case kbLEFT:
				iCenterX--;//left
			case 'd':
			case kbRIGHT:
				iCenterX++;//right
				break;
			}

break가 빠졌어요.

switch에 break는 왜 빠진거에요? up-down-left쪽

헉 그러네요 다들 감사합니다!!!