2주동안 미친듯이 윤성우 C랑 C++ 기본서 독파하고(모든 예제,연습문제다풀어봄) 플밍갤러리에서 하도 테트리스테트리스 하길래 하나짜봄
2차원배열가지고 10시간넘게 노가다햇더니힘들다 ㅠㅠ
c언어로 개노가다해서 어디까지되는지가궁금햇는데 일단 테트리스는되네
화면깜빡이는건양해좀 ㅋㅋ화면 실시간처리하는법을몰라서 블록위치바뀔때마다 화면지웟다 그렸다를반복함 동영상에선 심하게끊겨보이네
다음에 C++로 게임하나만들어볼건데 도전해볼만한거잇음 추천해줘
언어새로운배울때마다 그언어로 게임하나씩만드는게 목표임ㅋ
2주만에 기본서 독파하고 나서 하루만에 이정도 만드는건 재능이냐? ㄷㄷ
나도 이거 만드는데 15시간은 넘긴거같은데 자괴감드노
ㄴㄴ 엠창인생 갓수라 시간이 남아돌아서 집에서 책만죶나게봣음 ㅋㅋ
C 이제 시작해서 switch까지 배웠는데 C 다 떼면 이런거 만들 수 있냐?
ㅇㅋ 블럭움직일때마다 필드전체 다시그림잼 ㅋㅋㅋㅋ 근데 화면상에서 원하는부분만 지웠다가 다시출력하는게 가능함? 하긴 가능하니까 하라고하는거겠지?ㅋㅋ 내일한번 검색해봐야겠네
ㅇㅇ// C문법 다때고 C기본서에 안나와있을수도있는 window.h랑 conio.h 만 좀 검색해보면 만들수잇음
혹시 소스 파일 올려줄 수 있냐. 소스가 궁금한 건 아니고 테트리스 게임 자체는 만들기가 어렵지 않은데 버그 없는 테트리스 만들기가 생각보다 성가시다. 일단 블록이 바로 옆에 있을 때 회전하는 거 정상적으로 잘 되냐? 그런 이례적인 상황들에 대해서 버그 없는 테트리스 만든 거라면 인정
ㅋㅋㅋ ㄹㅇ 테트리스는 버그잡는데 시간 80%를 소비하는게 기본이제
원하는 영역만 다시 출력하는 거 당연히 가능하지. Turbo C++면 conio.h 헤더에 gotoxy() 함수(특정 위치로 커서 이동), clrscr() 함수(화면 전체 지우기) 같은 걸로 얼마든지 할 수 있는데 Visual C++면 저 함수들이 없어서(비표준 함수라 그럼) SetConsoleScreenBufferInfo 같은 윈도우 API로 직접 구현해 줘야 하는 게 함정. 물론 구글에 저 함수 이름으로 검색해 보면 Visual C++용 함수 다른 사람이 구현해 놓은 거 나오니까 복사해서 쓰면 됨.
아 API 함수 이름 순간 헷갈렸다. SetConsoleCursorPosition 함수임.
헤더파일 소스파일 여러개로 나눠져있는데 프로젝트파일로올려야하나? 버그는없음 내가좀꼼꼼해서 버그다잡으면서 진행하거든 ㅎ. 벽에붙어있을때 회전하는것도 잘됨 ㅋㅋ 덕분에 for문 if문떡칠이지만
비주얼 스튜디오 2013사용중이고 API는 아예몰라서 최대한 책에서 배운거로만하려다보니 저렇게됨ㅋㅋㅋ ㅠ
ㄴㄴㄴ 벽에 붙어있을 때는 기본이고 내 말은 이런 경우.
□□□□□■■■■■
□□□####□□□
■■■■□■■■■■
이런 경우에서 # 위치에 일자 블럭이 저렇게 있을 때 회전하면 어떻게 될까라던가. 아 실제로 저럴 순 없겠지. 일자 블럭 있는 줄에 맨 오른쪽에 한 칸이라도 있어야 저 상태가 되겠지만. 아무튼 뭐 얘기하는지 알겠음? 이런 식으로 다른 칸이랑 붙어있을 때 회전하는 거 버그 없음?
대충해봐서 저런상황있어본적은 없는데 내가생각하고 짠 로직이 맞다면 회전 될듯 블록 회전시키기전이랑 회전 후 상황이랑 하나하나 대조해서 블럭이었던 부분이 장애물로 바뀌는 부분이 하나라도 있으면 회전 안되게 하는 식으로 짜서
일단 내려놓지 않은 블럭은 맵 배열에 쓰지 않고 그냥 좌표만 가지고 있다가 내려놓은 블럭만 맵 배열에 쓰도록 짰다면 버그의 90%는 해결될 듯.
저렇게 안 짰나 보네. ㅋㅋㅋ 내 이럴 줄 알았다. 니가 올린 코드 쭉 읽어 봤는데 저런 상황되면 이미 내려놓은 블럭까지 함께 회전될 듯.
아니 함께 회전되진 않고 테트리스 블럭이 차지하고 있던 공간에서 이미 내려놓은 블럭 칸들이 사라질 듯.
? 내 로직대로라면 회전이 안되면 안됐지 블럭이 사라질일은 없는데 ㅋㅋ 일단테스트해보고 알려줌
버그발견됨ㅅㄱ 운지하러감
다음에 나올 블럭을 표시 안해서 미완성