솔플 테트리스 프로젝트 2
CollisionCheck() 함수 , MoveSwitch(int a) 함수 구현하기
1. CollisionCheck()
이 함수는 영문 뜻 그대로 충돌 검사를 확인하는 함수로 쓰일 것이다.
블록이 바닥에 떨어지거나 맵 밖으로 나가지 못하게 제한하는 함수로써
원래 있던 블록이 바닥에 닿고 새로운 블록을 그리는 함수에서도 쓰이게 될 것이며,
블록을 돌리는 함수나 키 입력을 받아 블록을 움직이게 만들 함수 등에도 쓰이게 될 것이다.
그럼 이 CollisionCheck()함수의 구현을 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 | int CollisionCheck() //충돌 검사 (블록이 떨어졌나 & 맵 밖으로 못 나가게 하는 조건) { int i, j; for (i = 0; i<22; i++) { for (j = 0; j<12; j++) { if (collisionMap[i][j] != immutabilityMap[i][j]) return 1; } } return 0; } | cs |
다른 함수들에 비해 그나마 간단하며 간략한 코드이다.
변하지 않은 맵의 데이터를 항상 가지고 있는 immutabilityMap 변수의 데이터와
블록이 움직이거나 새로운 블록을 가져올 때 등, 여러 상황에서 데이터가 바뀌는
collisionMap 변수의 데이터와 비교를 해서 서로 다르면 1을 반환하고
같으면 0을 반환시키는 원리이다. (TRUE / FALSE)
2. MoveSwitch(int a) 함수
이 함수는 매개변수 a에 따라 움직임을 나타내는 변수 Move, Move2를 조정하는 함수이다.
Switch는 주로 On/Off 2가지 선택이 있기 때문에 매개변수 a에 들어가는 값은 0, 1 이 2가지이다.
함수의 내용은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void MoveSwitch(int a) { int i; for (i = 0; i<4; i++) { if (map[y + 1][x + i] >= 1) { if (a == 0) Move = 0; else if (a == 1) Move2 = 0; break; } } } | cs |
이 함수의 최종적 목표는 Move, Move2변수를 조정하는 데 있다.
혹시나 비슷한 스위치 함수를 만들 때 참고했으면 좋겠다.
(블록은 키입력을 받을 때 좌, 우로 움직이며
계속 아래로 떨어지는 것을 나타내기 위해 if조건문에 map[y+1][x+i]와 같이
x축에 변수 i가 들어간 모습을 알 수 있다.)
(도움을 주신 분: 레고(LEGO) : https://blog.naver.com/hosung337)
'Try Programs' 카테고리의 다른 글
원하는 개수의 정수들의 최소공배수 구하기(JAVA) (0) | 2019.02.16 |
---|---|
원하는 개수의 정수들의 최대공약수 출력 (JAVA) (0) | 2019.02.15 |
솔플 테트리스를 만들어보자 1 (0) | 2019.01.29 |
똥 피하기 (간단한 콘솔게임) (코드 저장겸 포스팅) (0) | 2019.01.23 |
로또 번호 추첨기 (약 5년 기간의 확률통계 이용) (0) | 2019.01.21 |