코딩 (28) 썸네일형 리스트형 2주일 프로젝트(2인) 그동안 배웠던 것들을 가지고 팀을 꾸려 2주동안 게임을 하나 만들어보는 프로젝트를 하게 되었다. 과거에 팀 프로젝트를 하면서 대부분 결과가 별로 좋지 않았다. 생각보다 기획하는 부분에서 시간이 많이 소요되기도 했고, 처음부터 뼈대에 많은 살들을 덧붙이며 많은 기능들을 구현할 계획을 세우며 시작했지만 나중 결과물에서는 뼈대만 남는 경우도 허다했었다. 코딩하는 과정 무난하게 될 것이라 생각했지만, 현실은 엄청 버벅이며 각종 버그와 오류를 고치는데에 정신을 팔렸다. 그래서 이번 팀 프로젝트는 과거의 과오를 절대 반복하지 않으리라 다짐하면서 시작하게 되었다. 23/01/09 ~ 23/01/23일까지의 2주일 프로젝트를 했고(설연휴로 인해 2일정도 더 시간이 있었지만 사실상 각자의 개인사정으로 인해 연휴동안은 작.. [일주일 프로젝트] 모코코 슈팅게임 지금까지 배웠던 것들을 바탕으로 한번 만들어봤습니당ㅎㅎ 무언가 만들기 시작하니까 확실히 좀 재미가 느껴졌습니다. 하지만 만들면서 아직 많이 부족하다는 점도 느끼게 됬습니다...ㅠ 충돌처리는 사각형의 4변의 위치값을 기준으로 총알의 위치값이 해당 변보다 작거나 크다는 조건으로 판별했다. 아직 미숙해서 그런지 Object를 추가해놓고 Update()와 Render()에 추가하는 것을 깜빡하는 실수가 좀 있었다. 모코코 총알에 피격 시, 피격 이미지를 띄우고자 했지만 바로 Hit에서 idle 상태로 돌아와버리는 문제를 해결하지 못했다. 모코코 총알이 화면 밖으로 나갈 시, 카메라는 밖으로 나가지 않게 고정하고자 했지만 문제를 해결하지 못했다. https://youtu.be/Ww1CkTmyCqc [렌더링파이프라인] 원형색상표 만들기 엄청 비효율적인 방법으로 만들게 된 것 같다... primitive topology(기본 토폴로지) 중 Triangle List를 이용하여 원이 만들어지고, 총 360개의 삼각형이 원을 이루고 있을 때, 각 원이 1도 가량의 각도를 가지고 있다. 그래서 1도 삼각형 하나하나 RGB값을 조금씩 변경하면서 for문 돌리면 될 것 같은데, 더 효율적인 방법을 찾지 못하였다. 화면 해상도 끝에 닿으면 꺾이는 화살 https://youtu.be/KwBT0i66F_E 화면 끝에 닿으면 화살이 꺾이면서 다른 방향으로 움직이게 했습니다. 그런데 카메라 이동이나, 해상도 크기 수정 시에 가끔식 화살이 벽에 박혀 안 움직이거나 아예 사라지는 등의 문제가 있었습니다. 문제 해결 조건 if(arrow.GetWorldPos().y >= app.GetHalfHeight())와 같은 것을 통해서 화면 끝에 닿을 시에 충돌판정 검사하는 부분은 맞았다. 충돌 시에 fireDir.y *= -1;을 통하여 날아가는 방향을 바꾸어 주었는데, 여기서 가끔씩 방향이 바뀌었지만 계속 충돌판정 조건에 걸려서 벽에 박힌 것처럼 이동하는 문제였다. 이것을 해결하기 위해 충돌 시에 방향을 바꿈과 더 이상 충돌이 안나도록 화살을 SetWorldPos()를.. 포물선을 그리며 날아가는 화살쏘기 한동안 블로그 글 안쓰다가 오랜만에 왔습니당..ㅎㅎ;; 포물선을 그리면서 날아가는 투사체를 구현해봤습니다. 게이지 바에 따라서 날아가는 속도도 달라집니다. https://youtu.be/B_z4v6jrMcU 상점_인벤토리(복사생성자 추가) 앞서 만들었던 상점_인벤토리에서 복사생성자를 이용한 깊은 복사를 추가했습니다. //item.h #pragma once class Item { public: string name; int price; public: Item(); //추상화로 생성했다면 가상함수로 소멸 virtual ~Item(); Item(string _name, int _price); //복사생성자 Item(const Item& src); //가상함수 : 자식클래스에서 재정의가 이루어질거라고 예상될 때 virtual void Print(); virtual Item* Create(const Item* src); }; class Weapon : public Item //상속 { public: int att; Weapon(); ~Weapon(.. 상점_인벤토리 추가(가상함수, 추상화) 가상 함수, 추상화를 사용해서 바꾸어 봤다. 몇가지 예외처리 및 보관함에서 판매기능까지 추가해봤다. //item.h #pragma once class Item { public: string name; int price; public: Item(); virtual ~Item(); //가상소멸자 Item(string _name, int _price); virtual void Print(); //가상함수 Print() }; class Weapon : public Item //상속 { public: int att; Weapon(); ~Weapon(); Weapon(string _name, int _price, int _att); void Print() override; }; class Armor : public.. 블랙잭 ver2 기존의 블랙잭에서 참가 인원 수 정할 수 있게 추가 A카드 뽑을 시, 1 또는 11 중 원하는 값으로 적용되게 추가(dealer는 무조건 1) 카드 덱 3뭉치로 셔플하는 것으로 변경 #include #include #include #include using namespace std; //매크로 #define SET 3 //숫자 열거형 enum Number { A = 1, J = 11, Q, K }; //문양 열거형 enum Shape { DIA, CLOVER, HEART, SPADE }; //카드 구조체 struct Card { int number; string shape; void Print() { switch (number) { case A: cout 이전 1 2 3 4 다음