반응형

학원/경일게임아카데미 68

27. 열여섯번째 수업과제 [악어 게임]

경일게임아카데미 프로그래밍반 28기 16일차 수업과제 (2021. 04. 29) 오늘은 WIN32 API을 활용하여 악어 게임을 제작해봅시다! 과제2 - 악어 게임을 제작하세요 조건. 1. 윗 이빨 10개, 아래 이빨 10개를 만드세요. 2. 20개의 버튼중 1개의 버튼은 누르면 악어 입이 닫히게 됩니다. 3. 닫히고 나서 게임을 다시 시작하게 하세요. 소스코드 (내가 작업한 것) #include "stdafx.h" #include "playGround.h" #include playGround::playGround() { } playGround::~playGround() { } //초기화는 여기다 하세요 제발 HRESULT playGround::init() { gameNode::init(); // 시간 ..

26. 열여섯번째 수업과제 [러닝 게임]

경일게임아카데미 프로그래밍반 28기 16일차 수업과제 (2021. 04. 29) 오늘은 WIN32 API을 활용하여 러닝 게임을 제작해봅시다! 과제1 - 러닝 게임을 제작하세요 조건. 1. 주인공은 가만히 있는 상태이며, 땅이 뒤로 가는 상태이다. 2. 주인공이 땅 사이에 빠지면 게임 오버 된다. 3. 2단 점프를 구현해라. 5. 장애물의 종류는 정사각형, 2단 점프용 박스, 3. 엎드린 상태에서 피할 수 있는 박스 총 3가지 이다. 4. 1번 2번 장애물 위에 점프로 올라가게 되면 장애물 위에 있다가 장애물이 다 지나갈 시 땅으로 떨어진다. //5. 3번 장애물은 숙여서 피하기 6. 장애물에 부딪치면 주인공은 뒤로 스르륵 밀린다. 후에 다시 앞으로 스르륵 천천히 오며 주인공이 맵 밖으로 다 나가게 되면..

25. 열여섯번째 수업

경일게임아카데미 프로그래밍반 28기 16일차 수업 (2021. 04. 29) WIN32 API 백버퍼 (댕글링포인터) image.h 파일 소스코드 #pragma once class image { public: typedef struct tagImageInfo { HDC hMemDC; HBITMAP hBit; HBITMAP hOBit; int width; int height; tagImageInfo() { hMemDC = NULL; hBit = NULL; hOBit = NULL; width = 0; height = 0; } }IMAGE_INFO, *LPIMAGE_INFO; private: LPIMAGE_INFO _backBuffer; public: image(); ~image(); HRESULT init(..

24. 열다섯번째 수업과제

경일게임아카데미 프로그래밍반 28기 15일차 수업과제 (2021. 04. 28) 오늘은 WIN32 API을 활용하여 플래피버드 게임을 제작해봅시다! 과제1 - 플래피버드 게임을 제작하세요 조건. 1. 파이프 위아래 크기는 랜덤으로 생성한다 2. 파이프 사이를 지나가게 되면 점수를 오르게 한다. 3. 파이프가 맵밖으로 다 지나가기전에 새로운 파이프를 만들어준다 소스코드 (내가 작업한 것) 프로젝트 실수로 삭제해버린 것 같다.. 어디에다가 작업했는지 기억두 안나고.. 수업자료를 매번 받고 지우고 하는과정에서 내가 실수로 지워버린 것 같다.. 😢 소스코드 (선생님) #include "stdafx.h" #include "playGround.h" playGround::playGround() { } playGrou..

23. 열다섯번째 수업

경일게임아카데미 프로그래밍반 28기 15일차 수업 (2021. 04. 28) 지금까지의 나는 프로젝트 정리를 '경일'이라는 프로젝트안에 '경일'이라는 솔루션안에 API 프로젝트를 새로 만들고, 그 밑에 새로운 수업중 진행되는 폴더들을 매번 만들어줘서 진행하였다. 그러나 오늘부터 싱글톤, 게임 로직 환경 구축(키보드, PLAYGROUND, GAMENODE)등 다양한 클래스와 여러 작업들이 채 어떻게 돌아가는지 확인하기도전에 생성되고, 이를 활용하였다. 이를 직접 보고 타이핑하려고 했지만, 시간이 너무 오래 걸린다는 단점이 있었다. 무엇보다 내가 결국 다 타이핑하여 완성을 했지만 프로젝트가 잘 동작하지 않았다. 아쉽지만 내가 완성했을 때 오류가 없음에도 불구하고 프로젝트가 동작되지 않았다. 아울러 프로젝트가..

22. 열네번째 수업과제 [윈도우 탐색기 구현]

경일게임아카데미 프로그래밍반 28기 14일차 수업과제 (2021. 04. 27) 오늘은 WIN32 API을 마우스를 활용하여 드래그 앤 드롭 기능을 제작해봅시다! 과제1 - 아이콘 드래그 앤 드롭 과제2 - 윈도우 탐색기 구현 이하 과제 2. #include "stdafx.h" HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("경일 28기 :-) "); void setWindowsSize(int x, int y, int width, int height); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hP..

21. 열네번째 수업과제 [드래그 앤 드롭]

경일게임아카데미 프로그래밍반 28기 14일차 수업과제 (2021. 04. 27) 오늘은 WIN32 API을 마우스를 활용하여 드래그 앤 드롭 기능을 제작해봅시다! 과제1 - 아이콘 드래그 앤 드롭 과제2 - 탐색기 창 각 끄트머리 잡고 드래그 앤 드롭 이하 과제 1. #include "stdafx.h" HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("경일 28기 이시영 :-) "); void setWindowsSize(int x, int y, int width, int height); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInst..

20. 열네번째 수업

경일게임아카데미 프로그래밍반 28기 14일차 수업 (2021. 04. 27) WIN32 API 마우스 #include "stdafx.h" HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("경일 28기 :-) "); void setWindowsSize(int x, int y, int width, int height); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int cmdShow) { _hInstance = hInstance; MSG mes..

19. 열세번째 수업과제 [사각형 밀기]

경일게임아카데미 프로그래밍반 28기 13일차 수업과제 (2021. 04. 26) 오늘은 WIN32 API을 활용하여 사각형 밀기를 제작해봅시다! 공통사항 1. 내가 움직이는 사각형 안에 작은 사각형이 있다. 큰 사각형 움직일 때 작은 사각형은 내 움직임에 맞춰 끌려 다닌다. 2. 모든 사각형은 화면 밖으로 나갈 수 없다. 과제 1. 사각형 밀기. 과제 2. 사각형이 움직이다가 다른 사각형이랑 부딪혔다. 안에 있는 작은 사각형이 다른 사각형 가운대로 이동하더니 그 사각형이 움직인다. 이하 과제 1. #include "stdafx.h" HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("경일 28기 :-) "); void setWindowsSize(i..

18. 열세번째 수업

경일게임아카데미 프로그래밍반 28기 13일차 수업 (2021. 04. 26) WIN32 API RECT 생성, 이동 #include "stdafx.h" HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("경일 28기 :-) "); void setWindowsSize(int x, int y, int width, int height); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int cmdShow) { _hInstance = hInstance;..

17. 열두번째 수업

경일게임아카데미 프로그래밍반 28기 12일차 수업 (2021. 04. 23) WIN32 API 펜, 색칠, 픽셀 #include HINSTANCE _hInstance; HWND _hWnd; LPCTSTR _lpszClass = TEXT("경일 28기 :-) "); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int cmdShow) { _hInstance = hInstance; MSG message; WNDCLASS wndClass; wndClass.cbClsExtra = 0; wndClass.cbWn..

16. 열한번째 수업과제 [이름 그리기 및 도막사라무 제작]

경일게임아카데미 프로그래밍반 28기 11일차 수업과제 (2021. 04. 22) 오늘은 WIN32 API을 활용하여 본인 이름과 도막사라무를 제작해봅시다! 과제 1. 선과 도형으로 자기 이름을 그려보시오 2. 도막사라무를 제작하세요 // 1. 이름 Ellipse(hdc, 30, 30, 60, 60); MoveToEx(hdc, 75, 15, NULL); LineTo(hdc, 75, 75); MoveToEx(hdc, 100, 30, NULL); LineTo(hdc, 82.5, 62.5); MoveToEx(hdc, 100, 30, NULL); LineTo(hdc, 117.5, 62.5); MoveToEx(hdc, 135, 15, NULL); LineTo(hdc, 135, 75); Ellipse(hdc, 160..

15. 열한번째 수업

경일게임아카데미 프로그래밍반 28기 11일차 수업 (2021. 04. 22) 맵 맵은 STL의 트리구조로서 연관 컨테이너 종류 중 하나이다. first와 second 인자 2개를 가지고 있다. MapTest.h 파일 #pragma once #include #include using namespace std; // 다른 언어에서는 딕셔너리 라고 한다 있다. class MapTest { private: map_mapTest; map::iterator _mi; // 1만개 미만의 데이터는 벡터가 유리하다 (배열로 구성되어 있기 때문) // 1만개 이상의 데이터는 리스트가 유리하다. // 10만개 이상의 데이터는 맵이 유리하다. // 100만개 이상의 데이터는 해쉬 맵이 유리하다. // hash_map -> u..

14. 열번째 수업과제 [벡터를 이용한 상점과 인벤토리 기능 구현]

경일게임아카데미 프로그래밍반 28기 10일차 수업과제 (2021. 04. 21) 구현해야 할 목록 1. 상점에서 아이템 구매 기능 만들기 방법 - 1. 아이템에 넘버링을 하는 방식 2. 구매안 아이템 목록이 나의 인벤토리로 들어오기 방법 - 1. 각 카테고리별(무기, 아머, 악세사리 등) 배열로 설정하여 구매하는 방법 방법 - 2. for문을 이용하여 배열의 시작과 끝을 돌리며, if문으로 해당 아이템을 구매하는 방법을 사용한다 3. (심화) 구매시 방법들을 설정한다. (중복구매허용, 매장에서 수량부족, 중복구매 불가능 등) 4. 인벤토리 내에서 구매한 물건들을 판매하는 기능 메모사항 - getVShopItem(); 함수는 getVShopItem 베열이 있는 모든 정보를 가져오는 것, 일부분이 아니다. ..

13. 열번째 수업

경일게임아카데미 프로그래밍반 28기 10일차 수업 (2021. 04. 21) 리스트 구현 리스트는 일반적으로 데이터가 1만개 이상일 때 빠르다. 리스트의 종류로는 순차리스트, 연결리스트가 있으며 연결 리스트에는 단일 연결리스트, 원형 연결리스트, 이중 연결리스트 등이 있다. List.h #pragma once #include #include using namespace std; class ListTest { private: list _lNum; list::iterator _liNum; public: ListTest(); ~ListTest(); }; List.cpp #include "210421 1. ListTest.h" ListTest::ListTest() { _lNum.push_back(100); _l..

12. 아홉번째 수업

경일게임아카데미 프로그래밍반 28기 9일차 수업 (2021. 04. 20) 접근자, 설정자 (Getter, Setter) #pragma once #include using namespace std; class Player { private: int _hp; int _atk; public: Player(); ~Player(); // 접근자 int getPlayerHP() { return _hp; } int getPlayerAtk() { return _atk; } // 설정자 void setPlayerHP(int hp) { _hp = hp; } void output() { cout output(); // pl의 output은 pl의 체력을 출력한다. tempHp의 체력을 출력하는 것이 아니다. pl->set..

11. 여덟번째 수업

경일게임아카데미 프로그래밍반 28기 8일차 수업 (2021. 04. 19) 상속이란? 가지고 있는 속성을 물려주는 것이다. 인터넷에는 주로 붕어빵과 붕어빵 틀로 비유된다. 붕어빵 틀을 부모라고 생각하면, 붕어빵은 자식으로 비유된다. 보다 쉽게 예를 들자면 롤을 들 수 있다. 붕어빵 틀이 : '챔피언'이라는 카테고리라고 할 경우, 붕어빵은 : 소나, 샤코, 가렌 등이 될 수 있다. 엄마의 비상금을 통한 접근제어자 예제 private, protected, public의 대한 예제 오버로딩과 오버라이딩의 차이 오버로딩은 함수의 중복 정의이며, 오버라이딩은 함수의 재 정의이다. 보다 자세한 내용은 아래 링크를 통해 참고한다. https://psychoria.tistory.com/27 함수 오버로딩(overloa..

10. 일곱번째 수업

경일게임아카데미 프로그래밍반 28기 7일차 수업 (2021. 04. 16) 클래스란? 클래스는 객체라고 생각하면 된다. 클래스를 생성하는 방법 (Visual Studio 기준) 본인이 생성한 솔루션 및 프로젝트에서 우클릭 하여 추가를 선택한다음 클래스를 클릭하여 준다. 생성하고자 하는 클래스 명을 작성하고 클래스를 생성해준다. 클래스를 생성하면 작성한 클래스 명으로 헤더파일에 폴더에 헤더파일과, 소스 파일 폴더에 소스파일이 생성 된다. 예를 들어보자. 사용자는 오늘 날짜인 210416.cpp 라는 소스 파일을 만들고, 위에 클래스를 생성하는 방법을 참고하여 mainGame 이라는 클래스를 만들었다. 그렇다면 소스 파일 폴더 내부에 mainGame.cpp와, 헤더 파일 내부에 mainGame.h 파일이 생..

9. 여섯번째 수업과제 [0을 움직여라 게임 제작]

경일게임아카데미 프로그래밍반 28기 6일차 수업과제 (21. 04. 15) 오늘은 C++을 활용하여 0을 움직이는 게임을 제작해봅시다! 게임 내 사전조건은 아래와 같습니다! 0 ~ 24까지의 숫자가 5 * 5로 나타난다 0은 항상 오른쪽 하단에 있는다. 방향키 혹은 넘패드를 누르면 0이 움직인다. 각 방향 끝에서는 더 옮겨지지 않는다. #include #include #include #define UP 72 #define DOWN 80 #define LEFT 75 #define RIGHT 77 using namespace std; // 변수선언 int Array[25];// 0 ~ 25개의 값을 출력하기 위한 배열 선언 int User_Move;// 사용자의 움직임 변수 선언 int dest, sour,..

8. 여섯번째 수업

경일게임아카데미 프로그래밍반 28기 6일차 수업 (21. 04. 15) 열거형 #include using namesapce std; enum TEST { ZERO, ONE, TWO }; void main() { int number[3]; number[ZERO] = 1; number[ONE] = 3; number[TWO] = 5; // 위 문장을 풀어서 이해하면 number[0] = 1, number[1] = 3, number[2] = 5과 같다. } 마리오의 현재 상태를 이용한 열거형 예제 #include using namesapce std; enum MARIOSTATE { RIGHT_IDEL, LEFT_IDEL, RIGHT_RUN, LEFT_RUN, RIGHT_JUMP, LEFT_JUMP }; void..

반응형