목록Categories (1104)
KoreanFoodie's Study

윈도우 API 프로그래밍 8 : 객체 지향적인 윈도우 API 프로그래밍 "모든 것은 객체로 이루어져 있다". 객체 지향적으로 코드를 짜면 유지 보수가 편하며 새로운 기능을 안전하고 효율적으로 구현할 수 있다. 이 글에서는 실제 기능 구현을 보며 그 부분에 대한 기초를 간략히 서술한다. 기능 예시1 . 더 자세한 내용이 궁금하시다면 직접 들어보시는 걸 추천드립니다!

윈도우 API 프로그래밍 7 : 게임 프레임워크 구성 지금은 간단한 게임이니까 WindowsProject1.cpp라는 단일 파일에 모든 기능을 구현했지만, 프로그램이 복잡해지면 사실 필요한 코드를 필요한 파일에 분할해서 구성해야 한다. 이 글에서는 이를 위한 밑작업을 어떻게 하는지를 다루고자 한다. GameNode : 먼저 스켈레톤 클래스를 만들자 #pragma once class GameNode { public: GameNode(); ~GameNode(); virtual void Init() = 0; // 순수 가상 함수 virtual void Update() = 0; virtual void Render() = 0; }; 먼저 가장 기본적으로 Init, Update, Render라는 가상 메소드를 가진..

윈도우 API 프로그래밍 6 : 간단한 UI 구현과 똥피하기 게임 예제 이전 글에 이어서 추가적인 기능을 약간 추가해 보자. 전역 변수 재설정 struct tagBox { RECTrt; floatspeed; }; vectorvecBox;// 떨어지는 렉트들의 정보 intnDelay = 50; struct tagBox를 새로 선언하여 RECT를 대체했다. 그 이유는, 각각의 상자마다 떨어지는 속도를 다르게 만들기 위해서인데, 이는 난이도나 약간의 재미 요소를 첨가하는데 사용될 수 있다. WM_TIMER : 점수 계산과 타입 수정 case WM_TIMER:// 타이머에 의해서 호출 { InvalidateRect(hWnd, NULL, true); nLevel = nScore / 100 + 1; // 포지션 위..

윈도우 API 프로그래밍 5 : 물체 떨어뜨리기 이번 글에서는 간단한 물체를 떨어뜨리는 기능을 구현하며 다른 디테일을 설명한다. WM_CREATE case WM_CREATE:// 프로그램이 실행 될 때 한번 호출 된다. (초기화) SetTimer(hWnd, 1, 10, NULL); srand(time(NULL)); break; 초기화 함수를 통해 타이머를 SET 하고, 랜덤 함수를 호출한다. WM_TIMER case WM_TIMER:// 타이머에 의해서 호출 { InvalidateRect(hWnd, NULL, true); // 포지션 위치에 따른 렉트 정보 업데이트 rtBox1 = RECT_MAKE(ptPos1.x, ptPos1.y, 50); if (nDelay == 50) { RECT rt; rt.le..

윈도우 API 프로그래밍 4 : 충돌 검사 (IntersectRect...) 이번 글에서는 도형이 다른 도형과 만났을 때 이를 어떻게 구현하고 처리하는지를 살펴본다. WM_TIMER에서 IntersectRect를 넣어보자 // 아래 두 줄은 전역변수로 선언함 enum MOVE_DIR { MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN }; MOVE_DIReMoveDir; // ... case WM_TIMER:// 타이머에 의해서 호출 InvalidateRect(hWnd, NULL, true); // 포지션 위치에 따른 렉트 정보 업데이트 rtBox1 = RECT_MAKE(ptPos1.x, ptPos1.y, 100); rtBox2 = RECT_MAKE(ptPos2.x, ptPos..

윈도우 API 프로그래밍 3 : 키 입력과 게임 업데이트 이번 글에서는 WIM_KEYDOWN을 통한 키 입력에 대해 알아보도록 한다. 키 입력 처리하기 case WM_CREATE:// 프로그램이 실행 될 때 한번 호출 된다. (초기화) SetTimer(hWnd, 1, 10, NULL); break; case WM_TIMER:// 타이머에 의해서 호출 InvalidateRect(hWnd, NULL, true); break; case WM_KEYDOWN:// 키 입력이 있을 때 마다 호출 된다. switch (wParam) { // 삼항식 (조건) ? 참일 때 : 거짓일 때 case 'A': case VK_LEFT: ptPos.x -= (ptPos.x > 0) ? 1 : 0; break; case 'D': ..

윈도우 API 프로그래밍 1 : 창 생성 및 기본 세팅 먼저 비주얼 스튜디오(2019)에서 Windows 데스크탑 애플리케이션 프로젝트를 생성하자. 그럼 아래와 같은 식으로 프로젝트가 생성되는데, 이중 framework.h, WindowsProject1.cpp 파일이 자동 생성되고, 이 부분을 고치면서 기능을 구현한다. framwork.h 파일은 헤더 파일이나 매크로 선언, 변경이 거의 없는 변수 등을, WindowsProject1.cpp 파일에서는 타이머나 페인팅을 포함하고 있다. framework.h // header.h: 표준 시스템 포함 파일 // 또는 프로젝트 특정 포함 파일이 들어 있는 포함 파일입니다. // #pragma once #include "targetver.h" #define WIN..

경제적 자유를 위해 읽고 정리한 글들을 정리한 포스팅입니다. 재테크, 부자학, 경제적 자유, 자산 관리, 돈 관리, 저축, 주식, 부동산, 투자 등에 관심이 많은 분들께 도움이 되었으면 합니다. 책의 경우, 액기스만 뽑아서 전달해 드리려고 노력했습니다. 유혹에 빠지지 말라. 1. 고수익의 유혹 - 누구나 자신의 돈이 불어나길 바란다 2. 과소비의 유혹 - 남들과 자신이 다르다는 것을 보여주고 싶어한다 3. 게으름의 유혹 - 더 말 않겠음 재정적인 어려움은 직업, 가족, 개인적 영역 전반을 그늘지게 한다. 돈 걱정은 재능, 용기, 잠재력을 갉아먹는다. 돈에 집착하면, 돈을 좇으면 돈은 도망간다. 진정한 부자는 돈에 집착하지 않는다. 돈은 사랑의 대상이 아니라 철저하고 냉정하게 관리되어야 할 대상이다. 원하..

이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 8. 모델링 (정규화, 참조 무결성, 쇼핑몰 모델링) -- tProject 테이블에서 UPDATE 쿼리를 실행한다. UPDATE tProject SET 담당자='문종민' WHERE 프로젝트='TV 광고건'; SELECT 프로젝트명 FROM tProject WHERE 담당자 = '김상형'; CREATE TABLE tEmployee ( name CHAR(10) PRIMARY KEY, salary INT NOT NULL, addr VARCHAR(30) NOT NULL ); INSERT INTO tEmployee VALUES ('김상형', 650, '이천시'); INSERT INTO tEmp..

이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 7. 제약(제약, 기본키, 시퀀스) 컬럼 무결성 : 컬럼 하나에 저장되는 원자적인 값을 점검(도메인 무결성). 타입 지정, 널 허용 여부, 체크, 기본값 등의 제약이 있다. 엔터티 무결성 : 레코드끼리 중복값을 가지지 않도록 하여 유일한 식별자를 관리한다. 기본키와 유니크 제약이 있다. 참조 무결성 : 테이블간의 관계를 구성하는 키가 항상 유효하도록 관리하며 외래키 제약으로 관리한다. 이쪽 테이블이 참조하는 정보가 저쪽 테이블에 반드시 존재해야 한다. -- 평범한 데이터 삽입... INSERT INTO tCity VALUES ('평양','엄청 넓음','꽤 많을걸','n','조선인민민주..