게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램

Slides:



Advertisements
Similar presentations
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Advertisements

윈도우 일반 공주영상대학 게임과 이 은 순.
제 3 장 변수와 자료형.
제 11 장 구조체.
4. ADC 충북인력개발원 전자과 공학박사 강원찬.
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조
5장. 단축키와 비트맵 윈도우 프로그램에는 화면에서 사용자들의 입력을 받아 들이고 출력을 위한 코드 외 부분이 존재한다. 이 부분을 주로 리소스라고 부르고 이들은 주로 화면에 나타난다. 메뉴, 툴바, 비트맵, 단축키, 대화상자 등이 여기에 속한다. 이 부분들은 우리의 프로그램의.
Chapter 09. 소켓 입출력 모델(I).
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
제12장 유연한 카메라 클래스 만들기 학기 컴퓨터게임(DirectX).
8. 객체와 클래스 (기본).
DirectX Audio 2002년 3월 최윤석 작성.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
Chapter 11. Raw 소켓.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Part 14 파일 입출력 ©우균, 창병모 ©우균, 창병모.
head data link data link data link NULL a b c
Red Color Detection Course ChanYoung Kim
10장 메모리 관리.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
제8장 스텐실.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
BMP(Bit Map).
14주차.
제 3 장 상수와 변수
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
헤더 파싱 ( Header Parsing ).
Real-time Tactics Game
adopted from KNK C Programming : A Modern Approach
Chapter 09. 소켓 입출력 모델(I).
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해
제 4장 전처리기와 매크로 Hello!! C 언어 강성호 김학배 최우영.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
WSAAsync Select 김대열 Bit - Academy Sunmoon University, Korea.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
조 병 규 Software Quality Lab. 한국교통대학교
Chapter 05. 입출력 함수.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
1.비디오 메모리 잠그기 2.화면에 픽셀찍기 학습목표
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
자료구조 (Data Structure).
CHAP 1:자료구조와 알고리즘.
3장. 제어 메시지 처리하기 1/211 1.
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
DirectX 9 Ch1. Direct3D 초기화.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
printf("Global Korea\n");
실습과제 1번 배열 크기 : 8 문자열 길이 : 7 // MBCS 예제: 출력 결과 이해하기
윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램
배열, 포인터, 함수 Review & 과제 1, 2.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
Presentation transcript:

게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램 DirectX 2D 환경에서 슈팅게임 게임과 1학년 Flipping - 파일을 읽어서 출력하는 프로그램

프로그램 구성 관련 함수들 static void ReleaseObject(void) int LoadBmp(char *filename, LPDIRECTDRAWSURFACE7 DDS, DDSURFACEDESC2 ddsd, int check) int ProcessHere() long FAR PASCAL WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

수업운영방식-프로그래밍 헤더파일들.. #include <windows.h> #include <ddraw.h> #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdarg.h> #include <io.h>

상수들… #define BMP_ID 0x4D42 // BMP 파일의 식별자(19778) #define WINDOW_CLASS_NAME "WINCLASS" // 윈도우 클래스 명칭의 정의 #define WIDTH 640 // BMP 의 가로 넓이 #define HEIGHT 480 // BMP 의 세로 길이 #define PAL_COLOR 256 // 색상 수 #define TIMER_ID 1 #define TIMER_RATE 1000

DirectDraw 객체들 LPDIRECTDRAW7 lpDD = NULL; // DirectDraw 객체 LPDIRECTDRAWSURFACE7 lpDDSPrimary = NULL; // DirectDraw 기본표면 LPDIRECTDRAWSURFACE7 lpDDSBack = NULL; // DirectDraw 보조표면 LPDIRECTDRAWPALETTE lpDDPal = NULL; // DirectDraw 팔레트 PALETTEENTRY pal[256];

비트맵 파일을 위한 BITMAPFILEHEADER bmpfileheader; // BMP 파일의 헤더 BITMAPINFOHEADER bmpinfoheader; // BMP 파일의 정보 PALETTEENTRY bmp_pal[256]; // BMP 파일의 팔레트 unsigned char *bmp_buffer; // BMP 그림 저장용 버퍼

DirectDraw객체 종료함수 static void ReleaseObject(void) { if (lpDD != NULL) { if (lpDDSPrimary != NULL) { lpDDSPrimary->Release(); // 기본표면의 해제 lpDDSPrimary = NULL; } if (lpDDPal != NULL) { lpDDPal->Release(); // 팔레트의 해제 lpDDPal = NULL; } lpDD->Release(); lpDD = NULL; } }

비트맵 파일 구조 BMP 파일헤더 BMP 정보헤더 팔레트 그림데이터

비트맵파일 읽고 출력하기 2진 파일 열기 BMP 파일헤더 BMP 정보헤더 팔레트 그림데이터 표면을 잠근다 비트맵 파일헤더 읽기 BMP 식별자를 판단하기 BMP 정보헤더 비트맵 정보헤더 읽기 팔레트 256색상의 그림인지 판단하여 컬러팔레트 읽기 팔레트를 DirectDraw 로 연계시킨다 그림데이터 그림 데이터로의 위치이동 그림 데이터 읽기 비트맵 파일 닫기 표면을 잠근다 한줄씩 버퍼에서 표면으로 복사한다 표면을 풀어준다

ProcessHere() DirectDraw 객체생성 표면생성 - 기본표면, 보조표면 팔레트생성 그림을 읽어오고 기본표면에 출력한다

플리핑(Flipping) 이란? 기본표면과 보조표면 사이의 자료이동 기본표면 : 비디오카드 메모리에 작성되며, 바로 모니터 화면에 출력 보조표면 : 비디오카드 메모리에 작성되며, 기본표면에 보내어 짐 기본표면 (Primary Surface) 비트맵1 플리핑 보조표면 (Back Buffer) 비트맵2

typedef struct tagBITMAPFILEHEADER {     WORD     bfType; // 파일형식    DWORD   bfSize;    // 파일크기     WORD     bfReserved1;      WORD     bfReserved2;      DWORD   bfOffBits;   // Specifies the offset, in bytes, from the BITMAPFILEHEADER structure to the bitmap bits. } BITMAPFILEHEADER;