분류 전체보기(227)
-
공부 정리
기존의 GetMessage 의 경우에는 게임제작에 적합하지 않은 방식이였기 때문에 PeekMessage 함수를 이용해서 메세지가 들어온 경우를 처리 해주었다. 그러나 메세지 처리하는 쪽의 비율이 너무나 작기 때문에 else 쪽의 메세지가 발생하지 않는 대부분의 시간을 이용하여 game 코드를 수행하도록 하였다. 그러기 위해서 CCore 클래스를 이용해서 기능들을 구현하고자 했고 이 CCore 의 디자인형태는 싱글턴 패턴으로 설계하기로 하였다. 싱글턴 패턴은 클래스를 호출하면 인스턴스가 1개만 생기기 때문에 2개이상 생기지 않는 설정이필요로했다. CCore 를 외부에서 초기화 하지 못해야하므로 접근지정자를 이용한다. static CCore* GetInst() => 정적변수로 선언하면 GetInst() 는 ..
2022.12.21 -
싱글톤(Singleton) 패턴
싱글톤 패턴이란? 객체의 인스턴스가 오직1개만 생성되는 패턴을 의미한다. *인스턴스(instance)는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다. Core라는 객체를 처음 호출하면 인스턴스가 생성되고 2번째 이후에는 처음에 생성된 인스턴스를 반환하는 구조이다. 싱글톤 패턴의 장점 메모리적 측면이다 최초의 new연산자를 통해서 고정된 메모리 영역을 사용하고 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 또다른 이점으로는 다른 클래스 간에 데이터 공유가 쉽다. 인스턴스가 static (전역)으로 사용되기 때문이다. 싱글톤 패턴의 단점 테스트하기 어렵다 싱글톤 인스턴스는 자원을 공유하고 있기 때문에 테스트가 결정적으로 격리된 환경에서 수행되려면 매번 인스턴스의 상태를 초기..
2022.12.20 -
PeekMessage
현재 사용하고 있는 GetMessage 의 경우에는 메세지 큐에서 메세지가 확인 될 때까지 대기하는 방식을 사용하고 있어서 게임 프로그래밍에 적합하지 않은 방식이다. 메세지가 입력되지 않으면 아무런 동작을 하지 않기때문이다. 그러므로 이를 수정해서 PeekMessage 라는 함수를 사용하였다. 이런식으로 PeekMessage 의 경우에는 메세지가 들어오는 부분과 메세지가 발생하지 않는 부분으로 나뉜다. 하지만 생각보다 메세지를 처리하는 시간이 매우 빠르기때문에 대부분을 처리하지 않는 부분에서 시간을 소비한다. 그러므로 지금부터는 else 부분에서 코드를 작성하고 게임을 만들기로 하였다. 다음으로 공부할 내용으로는 디자인패턴중에서 가장중요한 싱글톤 패턴에 대해서 공부할 예정이다.
2022.12.19 -
WM_PAINT
Win32API를 이용하여 프로그램 창에 사각형 그림을 그리고 이동시키는 공부를 하였다. 위의 message 값에 W_PAINT 값이 들어올때 실행을 한다. UNIT 에 들어오는 정보의 형태 의미한다. wParam 은 키보드 입력, lParam 은 마우스 입력을 의미한다. switch(message) 에 WM_PAINT 가 입력되어 case 구문이 실행된다. 처음에 기본으로 설정되어있는 펜은 검정색에 브러쉬는 하얀색이다. 펜을 변경하기 위해서는 HPEN 이라는 구조체를 이용하면 된다 CreatePen 함수는 CreatePen 함수(wingdi.h) - Win32 apps | Microsoft Learn 를 검색하면 정보가 나오는데 win32api 의 경우에는 구현되어있는 코드를 사용하기때문에 모든정보를 ..
2022.12.18 -
빙고 게임 / c++
지금까지 배운 내용을 활용해서 빙고 게임을 만들었다. 게임규칙 1. 3X3 판에 1~20 숫자를 중복되는 숫자 없이 9개를 선택해서 판을 구성한다. 2. 나와 컴퓨터가 순서대로 숫자를 입력해서 빙고 칸을 채운다. 3. 먼저 3빙고를 만든 사람이 승리한다. 헤더파일 빙고 클래스 빙고의 멤버함수로는 나의 빙고칸과 컴퓨터의 빙고칸을 배열로 저장하였다. 그리고 나와 컴퓨터의 빙고 카운트는 int 자료형을 사용하였는데 0~3 이므로 1바이트 자료형을 사용해도 상관없었다. CallNumber 의 경우에는 입력한 숫자를 가지는 경우의수보다 넉넉하게 20개로 선택했다. 생성자 생성자의 경우에는 컴퓨터의 빙고는 보이지 않는 상태로 설정했으므로 ShowNum 값을 0 나의 빙고판을 보여야 하므로 1 로 설정했다. 1번째로..
2022.12.17 -
상속
상속 자식 or 부모 클래스는 상속관계에서 다른 클래스의 멤버를 초기화 할 수 없다. 생성자 호출순서는 자식->부모 생성자 실행순서, 초기화 순서 부모->자식 부모쪽에서 구현된 함수도 자식클래스에서 호출 가능하다. 부모파트에서 상속받았다고해도 자식클래스는 부모의 private 멤버함수에 접근할 수 없다. 하지만 protected 접근지정자를 통해서 자식클래스는 접근할 수 있고 외부에서는 접글할 수 없는 멤버를 만들 수 있다. 오버라이딩 상속관계에서 발생하는 개념으로 부모와 자식쪽에 똑같은 함수가 존재하면 자식쪽 클래스에서 함수를 호출하면 자식쪽 함수를 호출한다. 하지만 자식쪽함수에서도 child.CPraent::함수(); 등으로 지정해서 호출도 가능하다. 상속과 포인터 상속관계에서 부모클래스 메모리부터 ..
2022.12.16