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

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

?? map.cpp

?? 俄羅斯方塊,適于sdk初學者參考學習
?? CPP
字號:

#include "stdafx.h"
#include "map.h"

map::map(int width,int height)
{
   int i;
 
   m_width=width;
   m_height=height;
   m_length=width*height;
   m_pmap=new char[m_length];  //分配地圖內存
  
  for(i=0;i<m_length;i++)    //初始化地圖
  {
	m_pmap[i]=MAP_HOLLOW;
  }
  m_fill_point=m_height-1;//置地圖水平浮標到底
}
//--------------------------------------------------------------------//
void map::init()
{
 int i;

 for(i=0;i<m_length;i++)    //初始化地圖
  {
	m_pmap[i]=MAP_HOLLOW;
  }
 m_fill_point=m_height-1;//置地圖水平浮標到底
}
//--------------------------------------------------------------------//
map::~map()
{ 
   delete [] m_pmap;
}
//--------------------------------------------------------------------//
int map::checkanddel(const diamond &thediamond,int &y1,int &y2)
{
  int x,y;
  int i;
  int maxy,miny;
  maxy=0;
  miny=m_height;
  for(i=0;i<thediamond.subdiamondval();i++)
  {
	  thediamond.diamondinfo(i,x,y);
	  mapoperate(x,y,MAP_SOLID);
      if(y>maxy)//求出插入方塊的下限 ^v^坐標是倒的
		  maxy=y;
	  if(y<miny)//求出插入方塊的上限
		  miny=y;         
  }
  if(m_fill_point>miny)//如果最后填充點比水平浮標高則置水平浮標
     m_fill_point=miny;    
  //得出地圖中需要檢測刷新的上下限,和屏幕需要刷新的區域調入函數進行刷新決策
   y1=m_fill_point;
   y2=maxy;

  switch(refreshmap(miny,maxy))
  {
  case MAP_CHECK_NEEDREFRESH://如果地圖刷新了則向外發出刷新通知,通知screen刷新
      return MAP_CHECK_NEEDREFRESH;
	  break;
  case MAP_CHECK_NOPROGRAM://如果地圖無需刷新的發出無需刷新的通知
	  return MAP_CHECK_NOPROGRAM;
	  break;
  }
return 0;
}
//--------------------------------------------------------------------//
int map::refreshmap(int y1,int y2)//負責檢查并刪除傳進兩行間已滿的行
{
  int delval,*delbuffer;
  int checkheight;
  int fillpoint;//堆積指針
  int i,k;
  char srcval;
  checkheight=y2-y1+1;
  const int ROW_DEL=0;
  const int ROW_HOLD=1;
  delbuffer=new int[checkheight];

  for(i=0;i<checkheight;i++)
  {
	  delbuffer[i]=ROW_DEL;
  }
  fillpoint=y2;//把堆積指針放到底
  delval=checkheight;
  //*從下到上掃描待檢查地圖區域,決定并記錄操作
  for(i=0;i<checkheight;i++) 
  {
     for(k=0;k<m_width;k++)
	 {
	   if(mapinfo(k,y2-i)==MAP_HOLLOW)
	   {
          delbuffer[i]=ROW_HOLD;//按從下到上的順序記錄待檢查各行需要的操作	   
	      delval--;
	      break;
	   }
	 }
  }
  if(delval==0)  //沒有要刪除的行
  {
      delete [] delbuffer;
	  return MAP_CHECK_NOPROGRAM;
  }
  //*以上完成掃描,并記錄了待檢查區域應該進行的操作

  //*進行另一趟掃描并執行操作,y2-i為從下到上行號
  for(i=0;i<checkheight;i++)
  {
    if(delbuffer[i]==ROW_HOLD&&fillpoint!=y2-i)
	  //如果該行保留并且行號堆積指針不同則把這行堆到指針指示的那行
    {    
		for(k=0;k<m_width;k++)//執行操作把該行復制到堆積指針所在行
		{
           srcval=mapinfo(k,y2-i);
		   mapoperate(k,fillpoint,srcval);
		}
		fillpoint--;//堆積指針提升
    }
    else if(delbuffer[i]==ROW_HOLD&&fillpoint==y2-i)
       //如果該行保留要保留并且和堆積指針相同則提升堆積指針
	{
	   	fillpoint--;
	}
  }
  //*以上完成了區域內操作,接下來把剩下的行往下平移checkheight-delval行
  
  //*區域上的行順著堆積指針繼續往上堆
  
  for(i=0;i<y1-m_fill_point;i++)  //取出水平浮標計算出待下移行數
  {
      for(k=0;k<m_width;k++)
	  {
        srcval=mapinfo(k,y1-1-i);
	    mapoperate(k,fillpoint,srcval);
	  }
	  fillpoint--;
  }
  //*最后刪除最上方的沒用的行
 
  for(i=0;i<delval;i++)
  {
     for(k=0;k<m_width;k++)
	 {
	   mapoperate(k,m_fill_point+i,MAP_HOLLOW);
	 }
  }
  m_fill_point=m_fill_point+delval;//重置水平浮標
	
  delete [] delbuffer;
  return MAP_CHECK_NEEDREFRESH;
}
//--------------------------------------------------------------------//
void map::mapoperate(int x,int y,char val)
{

   int addpoint;
   if(x>m_width-1||y>m_height-1||x<0||y<0)
   {
	//MessageBox(NULL,"map越界","WARNING",0);
	return;
   }
   
   addpoint=y*m_width+x;
   m_pmap[addpoint]=val;
}

char map::mapinfo(int x,int y) const
{
   int infopoint;
  
   if(x>m_width-1||y>m_height-1||x<0||y<0)
   {
	//MessageBox(NULL,"mapinfo越界","WARNING",0);
	return FALSE;
   }
   infopoint =y*m_width+x;
   return(m_pmap[infopoint]);
}
//--------------------------------------------------------------------//
int map::checkaction(int diamondaction,const diamond &thediamond)
{
  int i,x,y,max;
  diamond temp;

  max=thediamond.subdiamondval();
  
  switch(diamondaction)
  {
  case DIAMOND_ACTION_CREATE://產生新方塊
	    for(i=0;i<max;i++)
		{
          thediamond.diamondinfo(i,x,y);
			if(mapinfo(x,y)==MAP_SOLID)
				return CHECK_RESULT_DEAD;
		}
        return CHECK_RESULT_OK;
        break;
  case DIAMOND_ACTION_DOWN://方塊下移
	    for(i=0;i<max;i++)
		{
			thediamond.diamondinfo(i,x,y);
			if(y+1>m_height-1||mapinfo(x,y+1)==MAP_SOLID)
				return CHECK_RESULT_FREEZE;
		}
        return CHECK_RESULT_FREE;
		break;
  case DIAMOND_ACTION_LEFT://左鍵
	    for(i=0;i<max;i++)
		{
			thediamond.diamondinfo(i,x,y);
		    if(x-1<0||mapinfo(x-1,y)==MAP_SOLID)
				return CHECK_RESULT_BUTT;
		}
		return CHECK_RESULT_FREE;
		break;
  case DIAMOND_ACTION_RIGHT://右鍵
	    for(i=0;i<max;i++)
		{
			thediamond.diamondinfo(i,x,y);
			if(x+1>m_width-1||mapinfo(x+1,y)==MAP_SOLID)
				return CHECK_RESULT_BUTT;
		}
		return CHECK_RESULT_FREE;
		break;
  case DIAMOND_ACTION_ROTATE://旋轉
	   temp=thediamond;
	   temp.rotatediamond();
	   for(i=0;i<max;i++)
	   {
		  temp.diamondinfo(i,x,y);
		  if(x>m_width-1||x<0||y>m_height-1||y<0||mapinfo(x,y)==MAP_SOLID)
			  return CHECK_RESULT_BUTT;
	   }
	   return CHECK_RESULT_FREE;
	   break;
  }
  
return CHECK_RESULT_FREE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区精华| 亚洲黄色小视频| 视频在线观看一区二区三区| 91丨九色丨蝌蚪富婆spa| 久久久久久久久岛国免费| 美女在线一区二区| 在线观看视频91| 亚洲精品第1页| 蜜桃一区二区三区四区| 91免费视频观看| 国产精品天美传媒沈樵| 色婷婷av一区| 亚洲日本va在线观看| 99久久精品免费看| 国产精品免费免费| 91麻豆自制传媒国产之光| 中文字幕日本乱码精品影院| 99久久精品国产观看| 亚洲精品五月天| av毛片久久久久**hd| 日本一区二区成人在线| 国产不卡免费视频| 国产精品国产馆在线真实露脸| 风间由美一区二区三区在线观看 | 成人av免费网站| 亚洲欧洲三级电影| 欧美亚州韩日在线看免费版国语版| 国产精品水嫩水嫩| 91行情网站电视在线观看高清版| 亚洲午夜视频在线观看| 91精品婷婷国产综合久久| 亚洲精品久久久蜜桃| 欧美亚洲综合久久| 久久99久久精品| 中文字幕av一区二区三区免费看| 9i在线看片成人免费| 爽好多水快深点欧美视频| 精品国产乱码久久久久久老虎| 国内不卡的二区三区中文字幕| 国产午夜精品一区二区三区视频| 99久久精品国产一区| 日韩精品久久理论片| 国产性做久久久久久| 日本大香伊一区二区三区| 日本欧美在线观看| 蜜桃视频在线观看一区| 综合中文字幕亚洲| 欧美一区二区私人影院日本| 毛片av一区二区三区| 日韩视频123| 97久久超碰国产精品| 日日夜夜免费精品| 最新国产精品久久精品| 日韩一区二区三区电影在线观看| 高清不卡在线观看av| 婷婷成人激情在线网| 亚洲色图制服诱惑| 久久久午夜精品理论片中文字幕| 色婷婷av一区二区三区gif| 国产一区二区福利视频| 亚洲欧美另类小说| 日韩欧美资源站| 波多野结衣亚洲一区| 久久精品国产成人一区二区三区 | 国产一区二区久久| 亚洲午夜影视影院在线观看| 日韩一区二区中文字幕| 在线视频一区二区三区| 春色校园综合激情亚洲| 免费在线视频一区| 亚洲午夜激情网站| 综合久久国产九一剧情麻豆| 国产精品麻豆99久久久久久| 精品久久久久久久人人人人传媒| 国产很黄免费观看久久| 麻豆传媒一区二区三区| 亚洲愉拍自拍另类高清精品| 91精品国产全国免费观看| 色婷婷综合久久久久中文| 人人精品人人爱| 亚洲综合图片区| 亚洲私人黄色宅男| 国产精品成人午夜| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩片之四级片| 日韩一级大片在线| 欧美在线999| 欧美日韩久久久| 欧美日韩在线观看一区二区 | 日韩三级免费观看| 欧美精品aⅴ在线视频| 成人免费视频国产在线观看| 久久91精品国产91久久小草 | 激情五月播播久久久精品| 日日夜夜精品视频免费| 欧美国产欧美综合| 久久久91精品国产一区二区精品| 欧美tk丨vk视频| 日韩免费一区二区| 日韩片之四级片| 久久亚洲私人国产精品va媚药| 制服丝袜av成人在线看| 日韩精品中文字幕一区| 精品国产一区二区亚洲人成毛片 | 中文字幕一区二区三区精华液 | 欧美电视剧在线看免费| 日韩欧美不卡在线观看视频| 国产xxx精品视频大全| 成人白浆超碰人人人人| 91亚洲国产成人精品一区二区三| 91在线一区二区| 在线免费精品视频| 在线综合亚洲欧美在线视频| 欧美大度的电影原声| 久久先锋影音av鲁色资源网| 国产亚洲一区二区三区四区| 国产精品美女久久久久久久| 中文字幕欧美日韩一区| 亚洲国产精品成人久久综合一区| 亚洲天堂成人在线观看| 国产一区二区中文字幕| 99精品国产视频| 欧美三级电影网| 日韩亚洲欧美综合| 国产精品美女久久久久久2018| 久久久国产午夜精品| 亚洲女同ⅹxx女同tv| 天天综合天天综合色| 国产精品一区在线观看你懂的| 9久草视频在线视频精品| 欧美中文字幕一区二区三区| 欧美日韩国产天堂| 亚洲国产精品欧美一二99| 天堂一区二区在线免费观看| 极品少妇xxxx偷拍精品少妇| 欧美午夜精品久久久久久超碰| 欧美日韩中文精品| 日韩精品中午字幕| 欧美激情一区二区| 日本亚洲最大的色成网站www| 成人午夜电影久久影院| 欧美三级三级三级爽爽爽| 久久久精品综合| 性久久久久久久| 丁香婷婷综合网| 日韩视频在线你懂得| 亚洲欧美一区二区不卡| 久久成人久久爱| 色综合久久综合网97色综合| 久久久久久日产精品| 亚洲成人精品一区| 9i在线看片成人免费| 精品国产污污免费网站入口| 亚洲曰韩产成在线| 成人福利视频在线看| 久久新电视剧免费观看| 久久97超碰国产精品超碰| 制服丝袜国产精品| 天堂av在线一区| 欧美日韩日日夜夜| 亚洲第一av色| 欧美日韩大陆一区二区| 亚洲成a人片在线观看中文| 色94色欧美sute亚洲线路一久| 国产精品久久久一本精品| 成人福利在线看| 国产精品久久三| a级精品国产片在线观看| 国产精品毛片久久久久久久| 成人一道本在线| 亚洲国产精品高清| 成人精品国产一区二区4080| 中文一区在线播放| 成人午夜视频免费看| 中文字幕精品一区| 91网站最新网址| 亚洲精品久久久蜜桃| 欧美在线不卡一区| 日本亚洲免费观看| 精品国产乱码久久| 国产成人免费视| 日韩毛片一二三区| 欧美亚洲动漫另类| 日韩vs国产vs欧美| 精品美女被调教视频大全网站| 国产精品一级黄| 国产精品色噜噜| 色婷婷综合激情| 婷婷成人综合网| 久久久精品黄色| 色成年激情久久综合| 蜜桃久久久久久久| 中文字幕av在线一区二区三区| 成人av小说网| 五月天久久比比资源色| 欧美电影免费观看完整版| 欧美三区在线视频| 麻豆国产欧美日韩综合精品二区 | 成人午夜免费电影| 亚洲1区2区3区4区|