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

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

?? game_地圖.cpp

?? 學游戲不錯的實例教程
?? CPP
字號:
/*********************************
[學VC編游戲]
編著、程序設計:唐明理 2004.7
E-mail:  cqtml@163.com
**********************************/
#include "stdafx.h"
#include "game_地圖.h"
extern unsigned short dw[7][6];
gamemap:: gamemap(){}	//構造函數
gamemap::~gamemap()
{DeleteObject(pen1); //刪除主角尋路畫筆
}	//析構函數
//***********************************************
//	B、	設置小地圖的位置、尺寸
//	C、	SMAP-裝載小地圖
//		定義4個畫筆pen0、pen1;pen、penz編輯用
//	D、	設置幾個初始量。
//***********************************************
void gamemap::initmap()//初始化地圖參數
{	mapt=10,mapb=120;			//小地圖上下
	maph=mapb-mapt;				//小地圖高
	mapl=WIDTH+6;				//小地圖左
	mapr=mapl+maph*WIDTH/HEIGHT;//小地圖右邊是按顯示區比例取得
	mapw=mapr-mapl;				//小地圖寬

	hScrDC=CreateDC("DISPLAY", NULL, NULL, NULL);	//創建屏幕設備句柄

	SMAP  =CreateCompatibleDC(hScrDC);				//創建小地圖設備句柄
	mapbit=CreateCompatibleBitmap(hScrDC,mapw,maph);//創建小地圖位圖內存
	SelectObject(SMAP,mapbit);						//小地圖位圖內存與小地圖設備句柄關聯
	pen0.CreatePen(PS_SOLID,1,RGB(0x0,0xf0,0xf0));	//小地圖中的方格畫筆
	pen1.CreatePen(PS_SOLID,1,RGB(0x60,0x60,0x60));	//主角尋路畫筆
	DeleteDC(hScrDC);								//刪除屏幕設備句柄
	fls=0;			//閃爍標志
	movemap=0;		//地圖移動否?
	init();
}
void gamemap::exitmap()//退出
{	DeleteDC(BK);
	DeleteObject(bi);
	DeleteObject(mapbit);//刪除小地圖位圖內存
	DeleteDC(SMAP);		//刪除小地圖設備句柄
	DeleteObject(pen0); //刪除小地圖中的方格畫筆
	exit();
}
//**************************************************
// mlmap()//地圖塊移動拼接
// 這里使用的是單地圖無縫拼接移動算法。
//**************************************************
void gamemap::mlmap()//地圖塊移動拼接
{	if(	movemap==0)		//地圖移動否?
		BitBlt(BkDC1,0,0,WIDTH,HEIGHT,BkDC0,0,0,SRCCOPY);
	else
	{int gx=scrx%WIDTH,gy=scry%HEIGHT;
	 BitBlt(BK,   0,0,        WIDTH-gx,HEIGHT,BkDC0,gx,0,SRCCOPY);//地圖橫向移動
	 BitBlt(BK,   WIDTH-gx,   0,gx,HEIGHT,    BkDC0,0,0, SRCCOPY);
	 BitBlt(BkDC1,0,0,        WIDTH,HEIGHT-gy,BK,0,gy,   SRCCOPY);//地圖縱向移動
	 BitBlt(BkDC1,0,HEIGHT-gy,WIDTH,gy,       BK,0,0,    SRCCOPY);
	}
	sort();			 //按Y坐標排序,用于在顯示時分出前后位置
	movemap=0;		//地圖移動否?
}
//**************************************************
//	getsmap()//生成小地圖
//	A、調地面塊到BkDC0地圖設備句柄
//	B、全地圖縮成小地圖到SMAP
//	C、全地圖景物微縮到SMAP
//**************************************************
void gamemap::getsmap()//生成小地圖
{//A、調地面塊到BkDC0地圖設備句柄
	char name[256];
	sprintf(name,"%s%s",dir,mapbak);
	loadbmp(name);
	SelectObject(BkDC0,bitmap);//
	DeleteObject(bitmap);			//刪除上次的位圖內存。
//B、全地圖縮成小地圖
	int i,j;
	COLORREF col=RGB(255,255,255);
	for(i=0;i<mapw;i=i+mapw/SCRP0)
		for(j=0;j<maph;j=j+maph/SCRP0)
			   TransparentBlt2
					(SMAP,i,j,mapw/SCRP0,maph/SCRP0,
					 BkDC0,0,0,WIDTH,HEIGHT,col);//透明顯示
//C、全地圖景物微縮
	int wi=WIDTH*SCRP0,he=HEIGHT*SCRP0;
	for(int q=0;q<rs;q++)
	  if(man[q].lb==2)					//是靜物
		{if(getpic("景",man[q].p)==FALSE) continue;//讀取位圖文件cc
		 int x=(man[q].xix-w/4)*mapw;	//x當前位置
		 int y=(man[q].xiy-h)*maph;		//y當前位置
		 TransparentBlt2
			 (SMAP,x/wi,y/he,(w*mapw)/(wi*2/3),(h*maph)/(he*2/3),
			  MemDC,0,0,w,h,col);//透明顯示
		}
//	OldMak=(HBITMAP)SelectObject(MemDC,bitya);//?????????????????
}
//**************************************************
//	movesmap(int x0,int y0)//移動地圖
//	鼠標超過邊界時,改變(scrx,scry)使主顯屏產生相應的移動。
//	每個方向的移動都進行超界檢測。
//**************************************************
void gamemap::movesmap(int x0,int y0)//移動地圖
{	int a=3;
	if(edi==1) a=1;	//編輯時使算法簡單。
	if(x0>SCRWI-10)	//鼠標超過右邊界
		{scrx=scrx+GX/a;if(scrx>WIDTH*(SCRP0-1)) scrx=WIDTH*(SCRP0-1);}
	if(x0<10)		//鼠標超過左邊界
		{scrx=scrx-GX/a;if(scrx<0) scrx=0;}
	if(y0>SCRHE-10)	//鼠標超過下邊界
		{scry=scry+GY/a;if(scry>HEIGHT*(SCRP0-1)) scry=HEIGHT*(SCRP0-1);}
	if(y0<10)		//鼠標超過上邊界
		{scry=scry-GY/a;if(scry<0) scry=0;}
	movemap=1;		//地圖移動否?
}
//**************************************************
//	BOOL dingweimap(int x,int y)//定位地圖
//	這是由按鼠標左鍵調用的。
//	根據按鍵位置,改變(scrx,scry)使主顯屏快速移動
//**************************************************
BOOL gamemap::dingweimap(int x,int y)//定位地圖
{	if(y>mapt&&y<mapb&&x>mapl&&x<mapr)//在小地圖上按鍵
	{scrx=(x-mapl)*WIDTH *SCRP0/mapw-mapw*2;
	 scry=(y-mapt)*HEIGHT*SCRP0/maph-maph*2;
	 scrx=(scrx/GX)*GX;
	 scry=(scry/GY)*GY;
	 //進行邊界檢測。
	 if(scrx>WIDTH*(SCRP0-1)) scrx=WIDTH*(SCRP0-1);
	 if(scrx<0) scrx=0;
	 if(scry>HEIGHT*(SCRP0-1)) scry=HEIGHT*(SCRP0-1);
	 if(scry<0) scry=0;
	 return TRUE;
	}
	return FALSE;
}
//**************************************************
// smlmap(HDC hdc)//顯示小地圖
//	0、小地圖刷新
//	A、在小地圖上顯示主屏框
//	B、顯示主角在小地圖的移動
//	C、在小地圖上顯示主角尋路的路徑
//**************************************************
void gamemap::smlmap(HDC dc0)//顯示小地圖
{	if(rs<1||SCRP0<1) return;
	CDC* dc = CDC::FromHandle (dc0);
//0、小地圖刷新
	BitBlt(dc0,mapl,mapt,mapw,maph,SMAP,0,0,SRCCOPY);//小地圖刷新
//A、在小地圖上顯示主屏框
	CPen *old;
	old=dc->SelectObject(&pen0);//調白色畫筆
	int mapw0=mapw/SCRP0,maph0=maph/SCRP0-1;

	int scrx0=mapl+(scrx*mapw)/(WIDTH*SCRP0);
	int scry0=mapt+(scry*maph)/(HEIGHT*SCRP0);
	//用線畫方框
	dc->MoveTo(scrx0,scry0);		//左上點
	dc->LineTo(scrx0+mapw0,scry0);	//右上點
	dc->LineTo(scrx0+mapw0,scry0+maph0);//右下點
	dc->LineTo(scrx0,scry0+maph0);	//左下點
	dc->LineTo(scrx0,scry0);		//左上點
//B、顯示對象在小地圖的移動
	for(int q=0;q<rs;q++)
	{	COLORREF col=RGB(0x0,0x0,0x0);//

		scrx0=(man[q].xix*mapw)/(WIDTH*SCRP0)-1;
		scry0=(man[q].xiy*maph)/(HEIGHT*SCRP0)-2;
		if(scrx0<1||scry0<1) continue;
		if(man[q].jisu==0)
		 {mann=q;		//取動態的主角下標
		  if(fls==0){fls=1;col=RGB(0xf0,0xf0,0xf0);}//白閃爍	
		  else		{fls=0;col=RGB(0xf0,0x0,0x0);}  //紅
		  dc->SetPixel(mapl+scrx0+1,mapt+scry0,  col);
		  dc->SetPixel(mapl+scrx0+1,mapt+scry0+1,col);
		 }
		if(man[q].lb==2) continue;
		dc->SetPixel(mapl+scrx0,mapt+scry0,  col);
		dc->SetPixel(mapl+scrx0,mapt+scry0+1,col);

	}
//C、在小地圖上顯示主角尋路的路徑
	setfind(dc,old);				//有尋路時用,顯示主角尋路的路徑

	dc->SelectObject(old);
	CDC::DeleteTempMap( );
}
//**************************************************
// int leftdown(HDC hdc,int x,int y)//按左鍵
//	這是由按鼠標左鍵調用的。
//	A、在顯示區按鍵,給出主角的目標位置,調A*算法尋路
//	B、在小地圖區按鍵,調定位地圖。
//	若是尋路,返回尋路的時間。
//**************************************************
int gamemap::leftdown(HDC hdc,int x,int y)//按左鍵
{	int fidtim=0;
	if(x>0&&x<WIDTH&&y>0&&y<HEIGHT&&edi==0)	//在顯示區,非編輯態
	{int i=mann;					//只對主角取目標點
	 man[i].x0=x-2+scrx;
	 man[i].y0=y-10+scry;
	 man[i].p=man[i].m1-1;			//中止當前動作
	}
	if(dingweimap(x,y)==TRUE)		//在小地圖上點左鍵,調定位地圖
					smlmap(hdc);	//顯示小地圖
	return fidtim;
}
//////////////////////////////////////////////////////////////////////
void gamemap::setfind(CDC* dc,CPen *old)//有尋路時用,顯示主角尋路的路徑
{//C、在小地圖上顯示主角尋路的路徑
	int i=mann;//取主角
	dc->SelectObject(old);
	if(man[i].pk<1) 
	{	CDC::DeleteTempMap( );
		return;
	}
	int x,y,x0,y0;
	x=man[i].ph[0].x*GX;
	y=man[i].ph[0].y*GY;
	x0=mapl+(x*mapw)/(WIDTH*SCRP0);
	y0=mapt+(y*maph)/(HEIGHT*SCRP0);
	old=dc->SelectObject(&pen1);//調紅色畫筆
	for (int j=1;j<man[i].pk;j++)
		{dc->MoveTo(x0,y0);
		 x=man[i].ph[j].x*GX;
		 y=man[i].ph[j].y*GY;
		 x0=mapl+(x*mapw)/(WIDTH*SCRP0);
		 y0=mapt+(y*maph)/(HEIGHT*SCRP0);
		 dc->LineTo(x0,y0);
		}
	x0=mapl+(man[i].fx*mapw)/(WIDTH*SCRP0);
	y0=mapt+(man[i].fy*maph)/(HEIGHT*SCRP0);
	dc->LineTo(x0,y0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级电影精品| 国产亚洲欧美日韩日本| 久久综合久色欧美综合狠狠| 国产精品欧美一级免费| 久久国产精品99精品国产| 91国产成人在线| 亚洲国产高清不卡| 久久不见久久见免费视频7| 91蜜桃传媒精品久久久一区二区| 欧美一级夜夜爽| 亚洲自拍偷拍av| 成人av电影在线网| 久久久久国产精品人| 日本免费在线视频不卡一不卡二| 91小视频免费看| 日本一区二区三区久久久久久久久不 | 国产精品久久综合| 另类综合日韩欧美亚洲| 色婷婷综合久久久| 中文字幕亚洲电影| 成人激情开心网| 国产亚洲欧美日韩日本| 国产在线播放一区三区四| 日韩亚洲电影在线| 美国十次了思思久久精品导航| 精品国产91亚洲一区二区三区婷婷 | 日本不卡在线视频| 欧美在线观看视频一区二区三区| 久久精品亚洲精品国产欧美kt∨| 人人狠狠综合久久亚洲| 日韩午夜av电影| 美腿丝袜一区二区三区| 日韩午夜激情免费电影| 久久激五月天综合精品| 精品欧美一区二区三区精品久久| 麻豆精品在线播放| 亚洲精品在线观看网站| 国产精品亚洲综合一区在线观看| 国产日韩欧美精品一区| 成人v精品蜜桃久久一区| 中文字幕一区免费在线观看| 99re热这里只有精品视频| 亚洲天堂精品在线观看| 欧美综合欧美视频| 婷婷一区二区三区| 精品噜噜噜噜久久久久久久久试看| 久久er99精品| 欧美激情一区二区在线| 91香蕉视频黄| 精品国产乱码久久久久久图片 | 亚洲一区视频在线观看视频| 91免费在线播放| 亚洲a一区二区| 欧美成人官网二区| 成人的网站免费观看| 亚洲国产一区在线观看| 日韩欧美精品在线| 成人蜜臀av电影| 一二三四社区欧美黄| 日韩视频在线一区二区| 成人午夜视频网站| 五月天久久比比资源色| 欧美电影免费提供在线观看| 成人小视频在线| 丁香亚洲综合激情啪啪综合| 亚洲女性喷水在线观看一区| 奇米一区二区三区| 久久色视频免费观看| av福利精品导航| 美腿丝袜亚洲综合| 亚洲欧美一区二区三区久本道91| 91精品国产综合久久精品| 成人av在线影院| 免费观看91视频大全| 国产精品免费丝袜| 欧美一级淫片007| 色域天天综合网| 国产伦精品一区二区三区视频青涩 | 理论片日本一区| 亚洲视频在线观看三级| 欧美成人a∨高清免费观看| 91黄色免费网站| 国产69精品一区二区亚洲孕妇| 亚洲国产乱码最新视频| 国产精品久久久99| 欧美精品一区二区三区久久久| 欧美熟乱第一页| 不卡一区二区三区四区| 九九精品视频在线看| 婷婷综合另类小说色区| 亚洲免费在线视频| 亚洲国产精品成人综合| 欧美va在线播放| 日韩一级片网址| 欧美日韩在线播放三区四区| caoporen国产精品视频| 国产成人精品免费视频网站| 日韩精品91亚洲二区在线观看 | 欧美图片一区二区三区| 成人免费看的视频| 国产不卡在线视频| 国产精品一线二线三线| 久久丁香综合五月国产三级网站| 亚洲va在线va天堂| 亚洲v中文字幕| 亚洲大型综合色站| 亚洲va韩国va欧美va精品| 亚洲一区二区三区自拍| 亚洲精品中文字幕在线观看| ㊣最新国产の精品bt伙计久久| 国产精品天干天干在线综合| 久久久久久97三级| 中文字幕第一区二区| 中文字幕中文字幕中文字幕亚洲无线| 久久综合九色综合97婷婷女人| 精品蜜桃在线看| 久久这里都是精品| 国产日韩亚洲欧美综合| 国产精品私房写真福利视频| 国产欧美精品日韩区二区麻豆天美 | 亚洲专区一二三| 午夜精品久久久久久久99樱桃 | 大尺度一区二区| 国产成人亚洲综合a∨婷婷| 国产精品亚洲成人| jlzzjlzz国产精品久久| 色香色香欲天天天影视综合网| 色88888久久久久久影院按摩 | 亚洲在线观看免费| 日韩经典中文字幕一区| 美女在线一区二区| 国产成人av网站| 色综合色狠狠综合色| 欧美电影一区二区| 精品日韩在线观看| 中文字幕一区不卡| 亚洲成人福利片| 国产在线麻豆精品观看| 99热国产精品| 精品视频免费在线| 2019国产精品| 亚洲色图.com| 卡一卡二国产精品 | 欧美精品亚洲一区二区在线播放| 日韩一区二区三区免费观看| 日韩一区二区三区高清免费看看| 亚洲精品一线二线三线| 亚洲欧美日韩久久精品| 日韩和欧美的一区| 成人蜜臀av电影| 欧美一区二区久久久| 1024精品合集| 久久99久久久欧美国产| av亚洲精华国产精华精| 91精品国产品国语在线不卡| 国产欧美日韩视频一区二区 | 日韩一区中文字幕| 蜜臀91精品一区二区三区| 97国产一区二区| 精品国产乱码久久久久久免费| 亚洲精品国产a久久久久久| 韩国成人精品a∨在线观看| 91福利社在线观看| 欧美国产精品中文字幕| 日韩av电影免费观看高清完整版| www.66久久| 久久精品亚洲一区二区三区浴池| 一区二区三区四区精品在线视频 | 日本欧美一区二区三区| 日本韩国欧美国产| 国产网站一区二区三区| 日韩电影在线免费看| 在线亚洲免费视频| 国产精品久久久久久久岛一牛影视 | 亚洲欧洲国产日韩| 国产精品1区2区3区| 日韩亚洲欧美成人一区| 亚洲成人你懂的| 99久久久免费精品国产一区二区 | 亚洲成人免费在线| 91久久精品国产91性色tv| 久久九九99视频| 久久精品国产免费看久久精品| 91成人在线免费观看| 中文字幕一区免费在线观看| 高清成人免费视频| 久久久久久久久久久久久女国产乱| 日韩高清一区二区| 欧美一区二区三区在线观看视频| 亚洲夂夂婷婷色拍ww47| 在线看一区二区| 一区二区三区国产精品| 色综合天天综合网国产成人综合天| 日本一区二区三区四区| 高清在线成人网| 亚洲欧美影音先锋| 欧洲亚洲精品在线| 亚洲影院久久精品| 欧美肥妇bbw| 久久99精品国产麻豆婷婷|