U E D R , A S I H C RSS

[Lovely]boy^_^/Arcanoid

1. Korean

1.1. 일지

1.1.1. Until 10/16

  • 공 움직임
  • 비행기 움직임
  • 비행기와 공의 충돌 체크(위에서 부딪치든 옆에서 부딪치든)
  • 랑 블록들 충돌 체크(약간 삐리삐리하다?--; 동량 1 아닌 2가 되어 버려서 그렇다.)
  • 장나라 배경화면에서 그냥 파란 하늘 배경으로 바꿨다. 좌표 계산 삽질로 인해 야자수가 짤려버렸다.
  • 옛날에는 1ms까지 멀티 타머가 먹혔는데, 지금 하는건 5ms 하로 하니까 끊긴다. 왜그럴까
  • 스테지는 역시 파일로 처리

1.1.2. 10/17

  • 점수, 깨뜨린 블록, 걸린 시간 나옴
  • 약간 어설프긴 하지만 움직는 바에 맞을때 각도 바뀐다. 속도를 정확히 유지하긴 힘들듯 하다.
  • 멀티 타머 해결봤다. 객체가 너무 크면 그런가 보다. 전부 크기를 1/4로 줄였더니 1ms까지 먹힌다.
  • 아무리 생각해도 배열의 행과 열은 너무 헷갈린다. 한동안 그림 90도회전되서 나오더니, 저거 고치니까 되는군.
  • 소스에 것저것 막 넣다 보니 지금 코드가 상당히 지저분해졌다. 중복을 최대한 없애는 방향으로 해놔서 중복은 별루 없지만, 한 메소드가 너무 길고, 클래스 별 역할 분담 제대로 뤄지지 않은것 같다. 모든 충돌루틴CArcaBall에 집중되어 있다.
  • ... 생각해보니 데터 통신 공부를 안하고 있었다. 제길--; 공부하쟈

1.1.3. 10/18

  • 템 떨어진다.
  • 컨테너에 포인터 안 넣을라고 복사 생성자, 대입 연산자 런것도 만들어야 했다..--;
  • 전체적인 디자인 변화 : 먼저번게 분산식었다면, 번건 커다란 관리 클래스에서 알아서 하는 식으로 바꼈다. OOP로부터 점점 멀어지는거 같긴 하지만..--;
  • 점점 배드볼화 되가고 있다.--;

1.1.4. 10/28

  • 그동안 시험기간라 좀 쉬었다.
  • 충돌처리 버그 제거했다.
  • 미사일 나가는 것만 넣으면 된다.
  • 공 여러개 돌아댕기는것도 넣어볼까 한다.

1.1.5. 10/29

  • 미사일 나가는 루틴 완성

1.1.6. 10/30

  • 매번 느끼는 거지만 C++은 리팩토링하기가 정말 힘든것 같다. 거 고치면, 헤더도 고쳐야 하고 ::앞에것도 고쳐줘야 하고.. 아 짜증나.--;
  • 열심히 리팩토링 중. 다른 객체보다 공 객체 덩치가 커지는건 어쩔수 없는건가..
  • 쯤에서 손떼자

1.1.7. 11/12

  • 제출후 발표 그리고 끝

1.2. 캡쳐 화면 10/30(완성본)

1.4. Class

~cpp 
CArcaObject - 알카노드에 등장하는 모든 오브젝트들의 부모 클래스(위치, 크기, 비트맵, getter/setter)
CArcaBall : public CArcaObject - 공
CArcaBar : public CArcaObject - 바
CArcaBlock : public CArcaObject - 블록
CArcaBackground - 배경
CArcaItem : public CArcaObject - 아템
CArcaMissile : public CArcaObject - 미사일

CArcaDoc : 위의 객체들을 포함한다. 블록은 벡터로 저장한다. 아템은 먼저 나온걸 먼저 먹게 되므로 덱으로 저장한다.
CArcaView : 그려준다.

1.5. 사용하는 특수 기능

  • MMTimer
  • 더블버퍼링 & 비트맵 마스킹

1.6. 고민중

  • 지난번에 할때는 무조건 45도로 해서 별루 생각안했지만..
  • 번에는 움직는 바에 맞으면 각도가 꺾여야 한단다...
  • 지난번엔 x로 1, y로 1 렇게 움직였지만.. 번에 대각선 길 루트2에다가 cos22.5, sin22.5 런걸 해버리면.. 캐스팅 될때 1,0 되면서 수직, 또는 수평으로만 움직일 수가 있다.
  • 그러자고 동량을 늘리자니, 충돌처리가 애매해지고 부드럽지도 않게 되더란 말다.
  • 기능 추가를 해야 하는데 뭘 해야 할까. 걍 갤러그를 만들어버릴까..--;

1.7. 잡담

1.7.1. MFC에 관해?

  • MFC 책에 보면 비트맵 또는 GDI 쓸때 CPen pen, *pOldPen 렇게 해서 뭔가 상한 짓을 하는데 갠적으로는 왜 그렇게 하는지 해를 못하겠다. 그냥 멤버에 넣어버리면 pOldPen 런거 안해도 되던데.. 아시는분은 갈쳐 주세요.^^;
    • 정확히 무슨 상한 짓라는 거지? 코드를 보여주라 --상민
      • 음. 예를 들자면 다음과 같은..

~cpp 
...
CDC *pDC = GetDC();
CPen pen, *pOldPen;
pen.CreatePen(~~);
oldpen = pDC->SelectObject(&pen);
... 그려준다 ...
pDC->SelectObject(pOldPen);
pen.DeleteObject();

  • 대충 런건데요. 저는 왜 저렇게 하는지 잘 몰라서, 그냥 런식으로 하거든요.

~cpp 
// 헤더
CPen pen;
...

// 소스 OnInitialUpdate() 맞나? 어쨌든 초기화 하는거에서
pen.CreatePen(만든다.);
//해주고

//그려줄때는 pDC->SelectObject(&pen);
//런식으로 해서 그리다가

//OnDestroy()에서 DeleteObject()하는 방식을 쓰거든요.
  • 고로 요지는.. 아--; 왜 렇게 전달 안돼지. 저렇게 포인터 만들었다가 그리다가 다시 선택하다가 하는 유를 잘 모르겠다는..^^;
  • 전자의 코드에 억매는거 같은데, 전자의 코드의 전제가 여러명 동시에 그릴려고 달려들때의 상황으로 생각하자. gdi에서는 event driven 기 때문에 모든 책의 예제들 항상 그런 경우를 상정하고 바로 전의 객체로 그리기 상태로의 복귀를 전제로 하여 작성되어 있다. 하지만, 네가 그리고자 하는 영역야 계속 하나로 선택되어 있어도 아무 상관 없는걸. CPen 어디로 도망가는 것도 아니고 말지.

    나는 좀더 욕심을 부려서, pDC 까지 보관하여 ~cpp GetDC로 얻지도 않고 그릴려고 시도 했는데, 해봐 결과를 알수 있을꺼야. pDC는 끊임없 변화를 시도하는 녀석라 상태 유지가 되지 않더군. 바로 전까지 가진 pDC는 옛날 녀석거지, 결론으로 네가 의도하는 대로 상태 저장 가능한 GDI Object를 그렇게 쓰는거 부담없다. --neocoin

여담으로, 전에 MFCStudy 로 할때 각도 계산까지 넣었다면 좋을뻔 했지? ^^;; 하지만 아마 그때 넣었으면 더 시간 걸렸을꺼 같아서;; 어 인수 과거 소스를 나에게 넘겨 쿨럭. 농담고, 아 진작 소스 겉어 둘껄 ^^;; --neocoin

흑 ㅠ.ㅠ 예전 소스가 있었다면 제가 거 만들고 있겠어요?; 고스트 삽질로 싸그리 날렸더니만, 생각도 못한 ZP 자료실에 실행파일만 덩그라니 남아있을줄은..;
진짜 소스 겉어서 링크 해둘껄 다들 옛날 소스 보면 정말 재미있을텐데 --neocoin

1.7.2. STL

  • 정말 STL은 내 표현의 폭을 넓혀주는 것 같다. 정말 좋다.

1.8. Tutorial

  • 시작할때는 Space
  • 블록 깨졌을때 나오는 아템을 20개 먹으면 미사일 하나 생긴다. Ctrl을 누르면 미사일 발사. 지나가는 코스에 있는 블록들의 내구도 1씩 감소.(미사일 상하게 생겼다. 고쳐야겠다.)


2. English

2.1. Diary

2.1.1. Until 10/16

  • Ball can move.
  • Plane can move.
  • Game can check a collision shuttle and ball.
  • Game can check a collision ball and blocks, but it has a few bugs. maybe ball's move amount is 2, not 1.
  • I change a background picture from a Jang na ra picture to a blue sky picture. but my calculation of coordinate mistake cuts tree picture.
  • My previous arcanoid could process 1ms of multi media timer, but this version of arcanoid can't process over 5ms of multi media timer. why..
  • I process stage datas as files.

2.1.2. 10/17

  • Game can exhibit score, number of broken blocks, and time.
  • When a ball collides with a moving bar, its angle changes, but it's crude. Maybe it is hard that maintains a speed of a ball.
  • I resolve a problem of multi media timer(10/16). its problem is a size of a object. if its size is bigger than some size, its translation takes long time. So I reduce a size of a object to 1/4, and game can process 1ms of multi media timer.
  • A array's row and column is so confused. A long time, screen picture rotates a 90 angle, but I fixed that as change row and column.
  • Now sources become very dirty, because I add a new game skill. I always try to eliminate a duplication, and my source has few duplication. but method's length is so long, and responsiblity of classes is not divided appropriately. All collision routine is focusing on CArcaBall class.
  • ... I don't have studied a data communication. shit. --; let's study hard.

2.1.3. 10/18

  • Game can generate items.
  • I don't want pointers in container, so I had to make a copy constructor, substitute operator.--;
  • I change a design of a arcanoid. - previous version is distribute, but this version is that god class(CArcanoidDoc)' admins a total routine. in my opinion, it's more far from OOP.--;
  • It becomes like the badball--;



["Lovelyboy^_^"]
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:35
Processing time 0.0337 sec