亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? demo7_8.cpp

?? windows游戲編程大師源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// DEMO7_8.CPP 8-bit software bitmap clipper demo

// INCLUDES ///////////////////////////////////////////////

#define WIN32_LEAN_AND_MEAN  // just say no to MFC

#define INITGUID

#include <windows.h>   // include important windows stuff
#include <windowsx.h> 
#include <mmsystem.h>
#include <iostream.h> // include important C/C++ stuff
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h> 
#include <math.h>
#include <io.h>
#include <fcntl.h>

#include <ddraw.h> // include directdraw

// DEFINES ////////////////////////////////////////////////

// defines for windows 
#define WINDOW_CLASS_NAME "WINCLASS1"

// default screen size
#define SCREEN_WIDTH    320  // size of screen
#define SCREEN_HEIGHT   240
#define SCREEN_BPP      8    // bits per pixel

// TYPES //////////////////////////////////////////////////////

// basic unsigned types
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned char  UCHAR;
typedef unsigned char  BYTE;

// the happy face structure
typedef struct HAPPY_FACE_TYP
       {
       int x,y;           // position of happy face
       int xv, yv;        // velocity of happy face
       } HAPPY_FACE, *HAPPY_FACE_PTR;

// MACROS /////////////////////////////////////////////////

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)

// initializes a direct draw struct
#define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }

// PROTOTYPES ////////////////////////////////////////////

void Blit_Clipped(int x, int y, 
                  int width, int height, 
                  UCHAR *bitmap, 
                  UCHAR *video_buffer,int mempitch);

// GLOBALS ////////////////////////////////////////////////

HWND      main_window_handle = NULL; // globally track main window
int       window_closed      = 0;    // tracks if window is closed
HINSTANCE hinstance_app      = NULL; // globally track hinstance

// directdraw stuff
LPDIRECTDRAW4         lpdd4        = NULL;   // dd4 object
LPDIRECTDRAWSURFACE4  lpddsprimary = NULL;   // dd primary surface
LPDIRECTDRAWSURFACE4  lpddsback    = NULL;   // dd back surface
LPDIRECTDRAWPALETTE   lpddpal      = NULL;   // a pointer to the created dd palette
LPDIRECTDRAWCLIPPER   lpddclipper  = NULL;   // dd clipper
PALETTEENTRY          palette[256];          // color palette
PALETTEENTRY          save_palette[256];     // used to save palettes
DDSURFACEDESC2        ddsd;                  // a direct draw surface description struct
DDBLTFX               ddbltfx;               // used to fill
DDSCAPS2              ddscaps;               // a direct draw surface capabilities struct
HRESULT               ddrval;                // result back from dd calls
DWORD                 start_clock_count = 0; // used for timing

char buffer[80];                             // general printing buffer

// a low tech bitmap that uses palette entry 1 for the color :)
UCHAR happy_bitmap[64] = {0,0,0,0,0,0,0,0,
                          0,0,1,1,1,1,0,0,
                          0,1,0,1,1,0,1,0,
                          0,1,1,1,1,1,1,0,
                          0,1,0,1,1,0,1,0,
                          0,1,1,0,0,1,1,0,
                          0,0,1,1,1,1,0,0,
                          0,0,0,0,0,0,0,0};

HAPPY_FACE happy_faces[100]; // this holds all the happy faces


// FUNCTIONS //////////////////////////////////////////////

LRESULT CALLBACK WindowProc(HWND hwnd, 
						    UINT msg, 
                            WPARAM wparam, 
                            LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT		ps;		// used in WM_PAINT
HDC				hdc;	// handle to a device context
char buffer[80];        // used to print strings

// what is the message 
switch(msg)
	{	
	case WM_CREATE: 
        {
		// do initialization stuff here
        // return success
		return(0);
		} break;
   
	case WM_PAINT: 
		{
		// simply validate the window 
   	    hdc = BeginPaint(hwnd,&ps);	 
        
        // end painting
        EndPaint(hwnd,&ps);

        // return success
		return(0);
   		} break;

	case WM_DESTROY: 
		{

		// kill the application, this sends a WM_QUIT message 
		PostQuitMessage(0);

        // return success
		return(0);
		} break;

	default:break;

    } // end switch

// process any messages that we didn't take care of 
return (DefWindowProc(hwnd, msg, wparam, lparam));

} // end WinProc

///////////////////////////////////////////////////////////

int Game_Main(void *parms = NULL, int num_parms = 0)
{
// this is the main loop of the game, do all your processing
// here

DDBLTFX ddbltfx; // the blitter fx structure

// make sure this isn't executed again
if (window_closed)
   return(0);

// for now test if user is hitting ESC and send WM_CLOSE
if (KEYDOWN(VK_ESCAPE))
   {
   PostMessage(main_window_handle,WM_CLOSE,0,0);
   window_closed = 1;
   } // end if

// use the blitter to erase the back buffer
// first initialize the DDBLTFX structure
DDRAW_INIT_STRUCT(ddbltfx);

// now set the color word info to the color we desire
ddbltfx.dwFillColor = 0;

// make the blitter call
if (FAILED(lpddsback->Blt(NULL, // pointer to dest RECT, NULL for whole thing
                          NULL, // pointer to source surface
                          NULL, // pointer to source RECT
                          DDBLT_COLORFILL | DDBLT_WAIT, 
                          // do a color fill and wait if you have to
                          &ddbltfx))) // pointer to DDBLTFX holding info
return(0);

// initialize ddsd
DDRAW_INIT_STRUCT(ddsd);

// lock the back buffer surface
if (FAILED(lpddsback->Lock(NULL,&ddsd,
                              DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR,
                              NULL)))
    return(0);


// draw all the happy faces
for (int face=0; face < 100; face++)
    {
    Blit_Clipped(happy_faces[face].x, 
                 happy_faces[face].y,
                 8,8,    
                 happy_bitmap, 
                 (UCHAR *)ddsd.lpSurface,
                 ddsd.lPitch);         
    } // end face

// move all happy faces
for (face=0; face < 100; face++)
    {
    // move
    happy_faces[face].x+=happy_faces[face].xv;
    happy_faces[face].y+=happy_faces[face].yv;

    // check for off screen, if so wrap
    if (happy_faces[face].x > SCREEN_WIDTH)
         happy_faces[face].x = -8;
    else
    if (happy_faces[face].x < -8)
        happy_faces[face].x = SCREEN_WIDTH;

    if (happy_faces[face].y > SCREEN_HEIGHT)
         happy_faces[face].y = -8;
    else
    if (happy_faces[face].y < -8)
        happy_faces[face].y = SCREEN_HEIGHT;

    } // end face

// unlock surface
if (FAILED(lpddsback->Unlock(NULL)))
   return(0);

// flip the pages
while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));

// wait a sec
Sleep(30);

// return success or failure or your own return code here
return(1);

} // end Game_Main

////////////////////////////////////////////////////////////

int Game_Init(void *parms = NULL, int num_parms = 0)
{
// this is called once after the initial window is created and
// before the main event loop is entered, do all your initialization
// here

LPDIRECTDRAW lpdd_temp;

// first create base IDirectDraw interface
if (FAILED(DirectDrawCreate(NULL, &lpdd_temp, NULL)))
   return(0);

// now query for IDirectDraw4
if (FAILED(lpdd_temp->QueryInterface(IID_IDirectDraw4,
                                    (LPVOID *)&lpdd4)))
   return(0);

// set cooperation to full screen
if (FAILED(lpdd4->SetCooperativeLevel(main_window_handle, 
                                      DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | 
                                      DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
   return(0);

// set display mode 
if (FAILED(lpdd4->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,0,0)))
   return(0);

// clear ddsd and set size
DDRAW_INIT_STRUCT(ddsd); 

// enable valid fields
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品免费观看| 欧美高清在线精品一区| 欧美日韩中文字幕一区| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲在线视频网站| 亚洲欧美国产毛片在线| 一个色在线综合| 亚洲图片自拍偷拍| 婷婷综合五月天| 免费在线观看一区二区三区| 美女诱惑一区二区| 久久国产精品99久久久久久老狼| 久久精品噜噜噜成人av农村| 精彩视频一区二区三区| 国产精品中文字幕日韩精品| 国产高清精品在线| av不卡在线观看| 色素色在线综合| 欧美一区二区三区在线观看视频| 欧美大片国产精品| 欧美国产精品中文字幕| 亚洲另类在线一区| 日日夜夜一区二区| 国产精品综合久久| 99久久精品免费| 欧美熟乱第一页| 日韩精品一区二区三区老鸭窝| 久久免费午夜影院| 亚洲美腿欧美偷拍| 日本女优在线视频一区二区| 国产精品一区二区x88av| 国产91对白在线观看九色| 色伊人久久综合中文字幕| 555www色欧美视频| 国产日韩欧美制服另类| 亚洲裸体在线观看| 美脚の诱脚舐め脚责91| 成人国产精品视频| 欧美日韩激情在线| 国产清纯在线一区二区www| 玉米视频成人免费看| 精品在线播放午夜| 一道本成人在线| 欧美成人伊人久久综合网| 成人免费小视频| 日韩一区欧美二区| 99精品视频在线免费观看| 在线播放91灌醉迷j高跟美女| 久久精品人人爽人人爽| 亚洲午夜电影在线| 国产成人无遮挡在线视频| 欧美性xxxxx极品少妇| 久久中文字幕电影| 亚洲国产一二三| 国产成人精品免费| 宅男在线国产精品| 亚洲美女一区二区三区| 韩国三级在线一区| 欧美日韩一区二区电影| 中日韩免费视频中文字幕| 日韩激情一二三区| 一本色道亚洲精品aⅴ| 久久久久久久久久久久久女国产乱| 樱花草国产18久久久久| 国产裸体歌舞团一区二区| 欧美日韩一区二区三区不卡| 欧美国产成人精品| 精品亚洲porn| 欧美日韩免费一区二区三区视频| 日本一二三不卡| 久久99在线观看| 欧美日韩精品专区| 亚洲男帅同性gay1069| 国产精品18久久久久久久久| 日韩一区二区在线观看视频播放| 亚洲精品一二三| 成人午夜在线视频| 久久综合九色欧美综合狠狠| 三级一区在线视频先锋| 在线免费观看一区| 自拍偷拍国产精品| 成人免费视频视频在线观看免费| 精品电影一区二区三区| 日本一不卡视频| 欧美日韩精品二区第二页| 一区二区三区在线观看国产| 国产成人精品免费视频网站| 精品欧美乱码久久久久久| 视频一区二区中文字幕| 欧美特级限制片免费在线观看| 亚洲精品高清视频在线观看| jlzzjlzz欧美大全| 欧美激情艳妇裸体舞| 国产成人鲁色资源国产91色综 | 久久蜜臀中文字幕| 韩国精品主播一区二区在线观看| 欧美高清www午色夜在线视频| 一个色在线综合| 欧美在线你懂的| 亚洲一级二级三级在线免费观看| 91在线视频播放地址| 国产精品国产三级国产普通话蜜臀| 国产白丝精品91爽爽久久| 国产三级欧美三级日产三级99 | 97久久超碰国产精品| 国产精品国产三级国产aⅴ无密码| 国产成人免费在线视频| 欧美激情一区二区三区全黄| 国产99精品视频| 国产精品久久久久三级| 99久久er热在这里只有精品15 | 三级久久三级久久| 91精品国产福利在线观看| 日本在线不卡视频一二三区| 678五月天丁香亚洲综合网| 免费精品99久久国产综合精品| 欧美一区二区二区| 狠狠色丁香久久婷婷综合丁香| 精品美女一区二区三区| 国产高清精品网站| 成人欧美一区二区三区白人| 在线观看网站黄不卡| 一卡二卡欧美日韩| 欧美美女直播网站| 乱一区二区av| 国产精品婷婷午夜在线观看| 色婷婷久久久亚洲一区二区三区| 一个色在线综合| 日韩三级中文字幕| 成人久久久精品乱码一区二区三区| 亚洲欧洲精品一区二区精品久久久| 色哟哟亚洲精品| 蜜桃av一区二区三区电影| 国产亚洲自拍一区| 色爱区综合激月婷婷| 日韩综合在线视频| 欧美激情一区二区在线| 日本久久电影网| 久久99日本精品| 亚洲女与黑人做爰| 日韩一区二区免费在线电影| 国产成人在线看| 亚洲成人精品一区二区| 久久久久久久久99精品| 91蜜桃网址入口| 久久精品国产77777蜜臀| 国产精品久久久久久亚洲伦| 欧美性大战久久久| 国产福利一区二区三区在线视频| 一区二区三区在线视频免费观看| 欧美不卡在线视频| 色综合亚洲欧洲| 韩日欧美一区二区三区| 偷拍自拍另类欧美| 国产精品蜜臀在线观看| 7777精品伊人久久久大香线蕉的| 国产成人精品一区二区三区网站观看| 亚洲夂夂婷婷色拍ww47| 久久综合久久综合久久| 欧美男男青年gay1069videost| 国产剧情av麻豆香蕉精品| 亚洲高清在线视频| 中文字幕av一区二区三区高| 在线不卡免费欧美| 91麻豆产精品久久久久久| 韩国欧美国产一区| 图片区日韩欧美亚洲| 中文字幕一区二区三区精华液| 337p亚洲精品色噜噜| www.亚洲激情.com| 狠狠v欧美v日韩v亚洲ⅴ| 午夜精品福利一区二区三区av | 日日夜夜精品视频免费| 中文字幕一区三区| 欧美www视频| 欧美三级中文字幕| 播五月开心婷婷综合| 蜜臀av亚洲一区中文字幕| 亚洲一区二区在线观看视频| 国产性色一区二区| 日韩一级完整毛片| 欧美日韩精品福利| 在线看不卡av| 99精品视频在线播放观看| 国产精品亚洲一区二区三区妖精| 日本在线播放一区二区三区| 亚洲小说春色综合另类电影| 国产精品女主播在线观看| 久久久久久久久免费| 欧美不卡一区二区三区四区| 91精品国产乱码久久蜜臀| 欧美日韩国产bt| 欧美日韩一区二区三区四区 | 欧美视频在线播放| 91看片淫黄大片一级在线观看| 国产成人av电影在线| 精品一区二区国语对白| 久久av老司机精品网站导航| 日本不卡视频一二三区| 青青草国产成人av片免费|