Code/Winapi
-
메탈슬러그 중간과정 6 - backgroundCode/Winapi 2020. 7. 17. 00:56
* RendManager 와 DBManager 을 합쳐서 기반을 조금 더 단순화 시킨다. - 부피가 조금 더 큰 Manager 를 기반으로 다른 Manager를 함수부터 하나씩 옮긴다. - 메소드 분해의 이유 : 이후에 위와 같이 합치기 쉽도록. * 총알 vector 수정. - Run 함수와 Rend 함수를 ObjManager 로 합쳐줌. - m_DBobjiter++ 가 앞에 있으므로서 데이터가 있는 첫번째 iter (.begin() 된 순번째 iter) 가 검사되지 않고 넘어가는 문제. 후반 위치로 변경. - DBManager 와 RendManager 에 들어있는 vector 를 동시에 삭제시켜주어야 하는 문제를 ObjManager 로 변환하므로서 해결. - bullet 이 client 밖으로 나가거나..
-
메탈슬러그 중간과정 5 - backgroundCode/Winapi 2020. 7. 7. 01:07
애니메이션 구축 방법 1. 스프라이트 : 한번 그릴 때 다 그림을 바꿔 그려 움직이는 것 처럼 보이게 한다. 단점 -> CPU의 성능에 맡기면 일정하게 움직이지 않는다. => CPU 클럭수가 아니라 CPU 시간에 맞추어 움직일 수 있도록. (주로 60 프레임에 맞춤.) timegettime(); 함수 사용. => 컴퓨터가 부팅된 시간으로부터의 시간을 반환한다. (1초 = 1000) ex ) curtime = timegettime(); if (curtime = pertime >= 시간) { 스프라이트 위치 이동 prevtime 갱신. } 여기서 시간을 framdelay 로 느리고 빠르게 시간을 조절할 수 있다. ex ) if ( curtime = pertume >= 시간 * framdelay) framde..
-
메탈슬러그 중간과정 4 - backgroundCode/Winapi 2020. 7. 1. 00:36
플레이어 캐릭터의 Idle 상태 움직이게 하기. 플레이어 캐릭터가 메세지 for문을 돌 때 마다 Animation() 실행하면서 움직임을 반복. 1. 이미지를 담을 HDC 생성. 2. 이미지를 담을 HBITMAP 생성. 3. OLDBITMAP 생성. 4. HBITMAP 에 CreateCompatibleBitmap() 함수로 이미지를 이미지를 로드시킬 hdc 지정 5. HBITMAP 에 LoadBitmap() 함수로 비트맵 로드시키기 6. OLDBITMAP 에 SelectObject() 함수로 bitmap 교체시키기 7. TransparentBlt() 함수로 이미지 출력하기 8. SelectObject() 함수로 원래 Bitmap으로 바꿔주기 9. HDC와 HBITMAP delet..
-
메탈슬러그 중간과정 3 - backgroundCode/Winapi 2020. 6. 21. 01:22
싱글톤에서부터 시작. Mainfrm 파일에서 InputManager, DBManager, RendManager 을 불러와서 관리할 수 있도록 함. 각 Manager 는 static 정의되어 모든 곳에서 사용할 수 있는 instance를 가져오는 함수(GetInstance)로 관리함. ※ static 정의된 함수는 전역변수처럼 쓸 수 있으므로 어디에서든 사용이 가능. 그러므로 하단과 같이 사용할 수 있다. (Mainfrm.cpp) 그러므로 Mainfrm 파일에서 RendManager 를 Rend 해주어서 Background를 실행하도록 하는 Scene class 를 실행하도록 함. RendManager 에서 더블 버퍼링과 Object 를 담은 vector 내부에 접근하여 하나씩 출력할 수 있도록 함. m_..
-
메탈슬러그 중간과정 2 - backgroundCode/Winapi 2020. 6. 3. 02:16
* 잘못 생각하고 있었자너....? * class 두개를 만들어서 좌표값을 맞추어 저장한 뒤 좌표값을 이동시키기 * POINT 변수 사용 * 좌표값은 Image 가 직접 들고 있을 수 있도록 private 변수로 선언하여 setter/getter 함수 생성 * 이미지의 좌표값은 무조건 본인이 들고 있을 수 있도록! * 이미지 출력하는 함수는 따로 두었음. * background class 에서 불러와서 사용하는 식. * setposition 해서 좌표값 이동하는 방식으로 이미지 이동시키기! 조금 더 생각하는 버릇 들이기. 아직도 부족함. 다양한 방식으로 생각하는 방법을 익혀야 할 것 같은데 그게 잘 안 되는 듯. 코드처럼 생각하기 버릇.... 버릇.. 버릇.. 개롭;;;
-
메탈슬러그 중간과정 1 - backgroundCode/Winapi 2020. 6. 1. 12:09
* 싱글톤 생성 및 필요한 파일과 class 생성. Rend 매니저 Input 매니저 DB 매니저 * 싱글톤 디자인을 생성하는 이유 : 각 class 들의 관리를 용이하게 하기 위해. * 배경 출력을 우선으로 하겠음 ! * 배경 출력을 위해 개별 이미지를 관리하는 ObjectImage class 를 생성하여 Background class 에 선언 후 출력. * 이미지를 개별로 관리므로 배경이 좌우로 움직일 때 이미지만 옮기고 윈도우나 자르는 범위는 바뀌지 않도록 함. * 근데 아직 좌우로 움직이는 것을 못하겠다... 좀 더 생각해보기.
-
win api 구조Code/Winapi 2020. 4. 5. 03:25
[ info ] pch.h / stdafx.h => 미리 컴파일되는 header frame work => 프로그램이 돌아가는 큰 흐름 instance => 객체에 대한 권한 handle => 리소스에 대한 권한 CALLBACK => OS가 필요에 따라서 알아서 사용하는 함수. 부 스레드에 할당하여 OS가 사용할 수 있도록 한다. 부 스레드에 설정하고 그 부 스레드를 OS의 권한으로 두는 것은 개발자가 설정해주어야 함. PARAMETER => 데이터를 쪼갠 한 부분. 사실 그냥 매개변수를 뜻하는데, LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); / INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); 이 부분에서 WP..