U E D R , A S I H C RSS

Cpp/2011년스터디


1. 스터디 소개

  • 2학기에 들어가기 전에 잉여로운 방학시간을 용해서 C++에 관한 여러가지를 공부해보는 스터디입니다.
  • 스터디 시간: 둘 모두 학교에 오는 저녁시간(7시~10시).
  • 참가자: 김태진, 고한종
  • 진행 방식: 간단하게 C++책을 학습한뒤 테트리스 코드 레스로 둘 짜면서 필요한 부분을 다시 탐독한다.

2. 목표

  • 클래스에 관해 공부하고, 그걸 토대로 프로그램을 짜본다.
  • OOP에 한발 다가선다.
  • 테트리스를 완성한다.

3. 진행 상황

3.1. 8.1~5

  • 클래스부분을 간단하게 공부해봄.
  • 테트리스를 짜는중.
  • 움직는 블럭을 클래스화해서 짜려고 하는 중.
  • 어떻게 짤지 설계는 대충 끝낸 상태고, 코딩에 들어가는 중.

3.2. 8.11~12

  • XCode에서 코드를 좀 더 업그레드 시켜보려고 했으나 망할 VS2008 '윈도' 에만 돌아가는 것들(Windows.h) 있어 실패하고 한종 컴퓨터에서만 짜기로 했음.
  • 역시 마소는 표준따위 무시하는 마레기.
  • 시간에 따라 블럭을 내려오게 하려고 하고 있으나 뭔가 상함.
    • 12시 13분 현재, 블럭 갑자기 사라지는 현상을 수정하고 지정한 시간에 따라 조금씩 내려가게 하는데 성공.

3.3. 8.13~14

  • 진 않고 혼자 했음. 미안.
  • 태진 한텐 좀 미안한데 혼자서 따로 만들어 보고 있었다. X코드와 VS2008은 서로 다른점 너무 많아서 둘하면 래저래 진행 안될것 같아서; 움직는 블록과 미 자리잡은 블럭(+배경) 그리고 들을 움직게 하는 함수. 렇게 3개를 class화 했다. 미 자리를 잡은 블럭은 다른 두개의 객체에서 접근가능하면서, 유일하게 하나만 존재해야 했다. 그래서 찾아본결과. 싱글톤 패턴란게 있어서... 것 때문에 하루동안 고생했다. 어쨋든 성공 ㅋㅋ 뭔가 끝는 느낌다. 근데 왠지 완성시키고 나면 종나 느릴것 같아..

3.4. 8.20~21

  • 사실 저 저번 때부터 럴것 같은 조짐 있었지. 결국 파토 ㅋㅋㅋㅋ 혼자서 합니다 왕시작한거 테트리스는 만들고 끝내야 겠으!
  • 그래서 어제 밤에 초벌 완성
    • 근데 안돌아가
      • 보니까 동적할당한답시고 포인터형만 선언해놓고 정리를 안함
    • 블럭 키를 누르니까 1칸만 움직인다.. 테트리스 블럭은 4칸짜리일텐데.. 1칸
      • 때서야 깨달았다. 아 함수만 선언해놓고 순서를 안정해 놨구나.
    • 번엔 블럭 안떨어져
      • 건 보니까 시간 재설정을 안해줘서 시간재는 카운터가 음의수를 향해 달려가는 중였다.
    • 드디어 성공하나 싶더니 번엔 블럭 벽을 뚫고 지나가는구나
      • Set함수에 false를 반환하는것도 대충해놨었고. false를 받았을시 작업도 안 설정 해놨었다.. 으아
    • 아 됐으 제 해볼까! -> 블럭 바닥에 도달해서 죽어야 하는데 죽지않고 버틴다. 게다가 왼쪽으로 동하기 까지!
      • 건 바닥에 도달하는 조건을 if(MKB()==false)로 했었던가? 인데.. MKB에 들어가보니 false 반환 없었다.. 헐.
      • 왼쪽동은 switch 문에 break;를 안써놔서 그런거였다 ㅡㅡ;
    • 위의 문제를 해결하니 블럭 원하는데로 잘 죽고 잘 생성되더라. 근데 1줄을 없애려 하니...
      • 없애야 하는 줄위의 모든 쌓여있던 블럭 소멸
      • 그 다음턴에 생긴 블럭을 땅에 놓자마자 rayer배열 터짐! 근데 건 절대 터질리가 없는 변수라는거?!
      • 위의 상황은 디버그일때 일고 릴리즈일때는.. 프로그램 죽진 않으나.... 말로 표현할수가 없다.
      • 블럭을 대충쌓아 Game Over 상황을 연출하려 해봤더니 디버그모드에서는 맵의 높은곳에 도착하기도전에 rayer폭파 -_-
      • 릴리즈에선... 안죽어... 사실 죽는 조건을 잘못 설정한 탓도 있긴한데.. 심지어 그냥 냅두면 부활도 한다 으앜 뭐지!

참고 : 경악스러운 문제의 그 릴리즈 http://pds22.egloos.com/pds/201108/21/51/Tetris-rino2.exe

조작은 WASD와 ,.로합니다. space는 아직 못합니다 ㅜㅠ
,는 반시계방향회전
.는 시계방향회전
w를 누르면 시계방향 회전입니다.

4. 후기

  • 고한종 - 정보은닉, 상속, 생성자, 소멸자, 복사생성자... 뭐가 리 많앜ㅋㅋㅋ // 대한민국은 윈도가 甲
    • 실질적 갑은 맥란다 -
  • 고한종 - 디버그 모드와 릴리즈 모드의 차번 기회를 통해 느끼게 되었다.. 속도차 엄청나고.. 디버그 에러가 나고 안나고 차정도, 근데 그게 꽤나 인상깊은.... 상한것 만들어졌다. 아, 설계도 겁나 중요한걸 깨달음 ㅡㅡ; 나중에가서 고치려면 매우 힘듬.

5. 후일담

  • 스터디는 끝났지만(?) 난 아직도 테트리스를 붙잡고 있다.
    • 컬러기능            미묘하게 적용됨.
    • Hold기능            (완성/패널티와 횟수제한 없음ㅋㅋㅋ)
    • 다음에 나올 블럭 보여주는 기능            완성
    • 랭킹기능
    • 도 증가            완성
    • 2인플레
    • 시작시 맵을 선택 가능하게
    • 절차지향적으로 먼저 짜본다
    • 객체지향적으로 짜보고 고친다. 확장성까지 고려된 말끔한 형태가 나올때까지.....

  • 보니까 06년도에 06학번을 대상으로 테트리스 만들기 라는 활동도 있었고 10년 데블스캠프에서도 테트리스가 언급되었던것 같은데 아예 새싹교실할때 테트리스를 포함해보는건 어떨까. 기본적인 블럭낙하에 줄 없어지고 점수가 표시되는 정도라면 잘되는 새싹반은 완성도 가능하지 않을까?
    • 새싹 1학기 끝날때 끝나는데, 그때는 시험기간지. 보통 테트리스를 만든다면 여름방학지 싶다 ㅋㅋ -김태진

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:02
Processing time 0.0358 sec