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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tank1.cpp

?? 在vc 6.0環(huán)境下的一個坦克小游戲
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
				m_Normal->Sety(y+TANKHEIGHT-BULLETHEIGHT);
				break;
			case RIGHT:
				m_Normal->Setx(x+TANKWIDTH);
				m_Normal->Sety(y+TANKHEIGHT-BULLETHEIGHT);
				break;
			}
			m_Normal->SetGame(m_pGame);
			m_Normal->SetDamage(m_nDamage);
			m_Normal->SetBulletBmp(m_pGame->m_pBulletBuffer);
			m_Normal->SetBelong(Belong());
			m_pGame->m_BulletList.AddHead(m_Normal);
		}
		if(m_nDoubleBullet==3)
		{
		   m_Normal=new CNormalBullet;
   			if(m_Normal)
			{
			 SetBullet();
			 m_pGame->m_BulletList.AddHead(m_Normal);		
			}
		}
		m_pGame->m_wavShoot.Play();
	}
}

void CTank::SetCell(Cell type,BYTE mask)
{
	for(int i=m_nX;i<m_nX+2;i++)
		for(int j=m_nY;j<m_nY+2;j++)
			m_pGame->m_TankMap.SetMapCell(i,j,type,mask);
}

void CTank::DestroyTank()
{
	if(m_bmpTank)
	{
		m_bmpTank->Release();
		m_bmpTank=NULL;
	}
	if(m_bmpTankState)
	{
		m_bmpTankState->Release();
		m_bmpTankState=NULL;
	}	
}

void CTank::DrawTank(LPDIRECTDRAWSURFACE pdds)
{
	RECT rc;
	rc.left=m_nDirection * TANKWIDTH;
	rc.top=m_nSkin*TANKHEIGHT;
	rc.right=rc.left + TANKWIDTH;
	rc.bottom=rc.top + TANKHEIGHT;
	pdds->BltFast( x, y, m_bmpTank, &rc, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT );
	rc.left=0;rc.top=0;rc.right=32;rc.bottom=5;
	pdds->BltFast( x, y-6, m_bmpTankState, &rc, DDBLTFAST_WAIT );
	rc.top=5;rc.bottom=10;
	if(Belong()==1||Belong()==2)rc.right=int(32 * float(m_nTankLife)/200);
	if(Belong()==3)
	{
		switch(m_nSkin)
		{
			case 0:
			case 1:
			case 2:
			case 3:
				rc.right=int(32 * float(m_nTankLife)/100);
				break;
			case 4:
			case 5:
				rc.right=int(32 * float(m_nTankLife)/150);
			    break;
		    
			case 6:
				rc.right=int(32 * float(m_nTankLife)/200);
				break;
			case 7:
				rc.right=int(32 * float(m_nTankLife)/250);
				break;			
			case 8:
				rc.right=int(32 * float(m_nTankLife)/300);
				break;
		}
	}
	pdds->BltFast( x, y-6, m_bmpTankState, &rc, DDBLTFAST_WAIT );
}

int CTank::MapxyTonXnY()
{
	int ret=0;
	m_nX= (x==0 ? 0 : x/TANKMAPCELL);
	m_nY= (y==0 ? 0 : y/TANKMAPCELL);
	return ret;
}

Obj CTank::HasObject(int xpos, int ypos)
{
	Obj object;
    BOOL Result=FALSE;
	CRect rec(xpos,ypos,xpos+TANKWIDTH,ypos+TANKHEIGHT);
	CRect recEgg;
	POSITION position,preposition;
	position=m_pGame->m_Egg.GetHeadPosition();
	CellType celltype;
	while(position)
	{
	   preposition=position;
	   CEgg * p=m_pGame->m_Egg.GetNext(position);
	   recEgg.SetRect(p->m_nXPosition,p->m_nYPosition,p->m_nXPosition+TANKWIDTH,p->m_nYPosition+TANKHEIGHT);
	   CRect rc;
	   Result=rc.IntersectRect(&this->rect,&recEgg);
	   int count=0;
	   if(Result)
	   {
		   switch(p->GetIndex())
		   {
		   case 0:
			    m_nTankLife+=100;
			   	if(Belong()==1||Belong()==2)
				{
					if(m_nTankLife>200)m_nTankLife=200;
				}
				if(Belong()==3)
				{
					switch(m_nSkin)
					{
						case 0:
						case 1:
						case 2:
						case 3:
							if(m_nTankLife>100)m_nTankLife=100;
							break;
						case 4:
						case 5:
							if(m_nTankLife>150)m_nTankLife=150;
							break;					
						case 6:
							if(m_nTankLife>200)m_nTankLife=200;
							break;
						case 7:
							if(m_nTankLife>250)m_nTankLife=250;
							break;			
						case 8:
							if(m_nTankLife>300)m_nTankLife=300;
							break;
					}
				}
				break;
		   case 1:
			   m_nDamage+=50;
			   if(m_nDamage>=300)m_nDamage=300;
			   if(m_nDamage<0)m_nDamage=50;
			   tempDamage=m_nDamage;
			   break;
		   case 2://炸掉所有敵方坦克
			   if(Belong()==3)
				{
				   if(m_pGame->m_tankleft)
				   {
					   int temp=m_pGame->m_tankleft->GetTankLife();
					   temp-=100;			  
						CExplode *pe=new CExplode;
						if(pe)
						{
							pe->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
							pe->SetPostion(m_pGame->m_tankleft->Getx()-12,m_pGame->m_tankleft->Gety()-12);
							m_pGame->m_Explode.AddTail(pe);
							m_pGame->PlaySound();
						}
	 					if(temp<=0)
						{
						delete  m_pGame->m_tankleft;
						m_pGame->m_tankleft=NULL;
                        m_pGame->m_Player.RemoveHead();
						}                        
					   else m_pGame->m_tankleft->SetTankLife(temp);
					}
                    if(m_pGame->m_tankright)
					{
					   int temp=m_pGame->m_tankright->GetTankLife();
					   temp-=100;
					   	CExplode *pe=new CExplode;
						if(pe)
						{
							pe->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
							pe->SetPostion(m_pGame->m_tankright->Getx()-12,m_pGame->m_tankright->Gety()-12);
							m_pGame->m_Explode.AddTail(pe);
							m_pGame->PlaySound();
						}
						if(temp<=0)
						{
							delete  m_pGame->m_tankright;
							m_pGame->m_tankright=NULL;
							m_pGame->m_Player.RemoveTail();
						}                        
					   else m_pGame->m_tankright->SetTankLife(temp);
					}
				   break;
			   }
				position=m_pGame->m_Enemy.GetHeadPosition();
  				while(position)
				{
					CTank * pm=m_pGame->m_Enemy.GetNext(position);
					CExplode *pe=new CExplode;
					if(pe)
					{
						pe->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
						pe->SetPostion(pm->Getx()-12,pm->Gety()-12);
						m_pGame->m_Explode.AddTail(pe);
						m_pGame->PlaySound();
					}
					delete pm;
					count++;
				}
				m_pGame->m_Enemy.RemoveAll();
				if(Belong()==1)
				{
					m_pGame->m_nLeftKills+=count;
					m_pGame->m_nLeftScore+=500;
				}
				else
				{
					m_pGame->m_nRightKills+=count;
					m_pGame->m_nRightScore+=500;
				}
				break;
		   case 3://增加坦克人數(shù)
			   switch(Belong())
			   {
			   case 1:
				   m_pGame->m_nLeftPlayer++;
				   if(m_pGame->m_nLeftPlayer>9)
				   {
					   m_pGame->m_nLeftPlayer=9;
					   m_pGame->m_nLeftScore+=100;
				   }
				   break;
			   case 2:
				   m_pGame->m_nRightPlayer++;
 				   if(m_pGame->m_nRightPlayer>9)
				   {
					   m_pGame->m_nRightPlayer=9;
					   m_pGame->m_nRightPlayer+=100;
				   }
				   break;
			   case 3:
				   m_pGame->m_nLeftEnemy++;
				   break;
			   }
			   break;
		   case 4://提高坦克速度
			   AddTankSpeed();
			   break;
		   case 5://提高發(fā)彈數(shù)量
			   m_nDoubleBullet++;
			   if(m_nDoubleBullet>3)
			   {
				   m_nDoubleBullet=3;
				   switch(Belong())
				   {
				   case 1:
					   m_pGame->m_nLeftScore+=100;
					   break;
				   case 2:
					   m_pGame->m_nRightScore+=100;
					   break;
				   }
			   }
			   break;
		   case 6://提高發(fā)彈頻率
			   m_nFireSpeed=max(m_nFireSpeed-100,200);
			   break;
		   case 7:
			   switch(Belong())
			   {
			   case 1:
				   m_pGame->m_nLeftScore+=1000;
				   break;
			   case 2:
				   m_pGame->m_nRightScore+=1000;
				   break;
			   }				   
			   break;
		   case 8:
			 switch(Belong())
			   {
			   case 1:
				   m_pGame->m_nLeftScore+=500;
				   break;
			   case 2:
				   m_pGame->m_nRightScore+=500;
				   break;
			   }				   
			   break;
		   case 9:
			    switch(Belong())
			   {
			   case 1:
				   m_pGame->m_nLeftScore+=200;
				   break;
			   case 2:
				   m_pGame->m_nRightScore+=200;
				   break;
			   }				   
			   break;
		case 10:
			   switch(Belong())
			   {
			   case 1:
				   m_pGame->m_nLeftScore+=100;
				   break;
			   case 2:
				   m_pGame->m_nRightScore+=100;
				   break;
			   }				  	
		case 11:
			sort=1;
			number=30;
			m_nDamage=10000000;
			break;
		case 12:
		    m_nTankLife=1;
			break;
		case 13:	
			if(Belong()!=3)
			{
				CellType temp;
				temp.cell=CT_STEEL;
				temp.mask=0;
				temp.defence=100000;
				m_pGame->m_TankMap.SetHeadQuarterBorder(temp);
				m_pGame->m_nBorderTime=2000;
			}
		   else
		   {
			   CellType temp;
     			temp.cell=CT_EMPTY;
				temp.mask=0;
				temp.defence=0;
				m_pGame->m_TankMap.SetHeadQuarterBorder(temp);
				m_pGame->m_nBorderTime=2000;
			}
          break;
		case 14:
			if(Belong()!=3)m_pGame->m_nFreezeTime=700;
			else m_pGame->m_bFreeze=TRUE;
			break;
		}
		m_pGame->PlaySound(3);
	    delete p;
	    m_pGame->m_Egg.RemoveAt(preposition);
	    break;
		}
	}
	   
	position=m_pGame->m_Player.GetHeadPosition();
  	while(position)
	{
		preposition=position;
		CTank * p=m_pGame->m_Player.GetNext(position);
		if(p!=this)
		{
			CRect rc;
			Result=rc.IntersectRect(&rec,&p->rect);
			if(Result)
			{
				object.position=preposition;
				object.sort=1;
				object.has=TRUE;
                return object;
			}	   
		}
	}
	position=m_pGame->m_Enemy.GetHeadPosition();
  	while(position)
	{
		preposition=position;
		CTank * p=m_pGame->m_Enemy.GetNext(position);
		if(p!=this)
		{
			CRect rc;
			Result=rc.IntersectRect(&rec,&p->rect);
			if(Result)
			{
				object.position=preposition;
				object.sort=2;
				object.has=TRUE;
                return object;
			}	   
		}
	}
//專門針對坦克新出現(xiàn)時有可能出現(xiàn)的坦克重疊現(xiàn)象的處理方法
	if(m_pGame->m_tankleft==NULL && m_pGame->m_nLeftPlayer>0)
	{
		CRect rc,rc1;
		rc1.SetRect(15*TANKMAPCELL,38*TANKMAPCELL,15*TANKMAPCELL+TANKWIDTH,38*TANKMAPCELL+TANKHEIGHT);
		Result=rc.IntersectRect(&rec,rc1);
		if(Result)
		{
			object.has=TRUE;
			object.sort=1;
			return object;
		}
	}
   if(m_pGame->m_tankright==NULL && m_pGame->m_nRightPlayer>0)
	{
		CRect rc,rc1;
		rc1.SetRect(23*TANKMAPCELL,38*TANKMAPCELL,23*TANKMAPCELL+TANKWIDTH,38*TANKMAPCELL+TANKHEIGHT);
		Result=rc.IntersectRect(&rec,rc1);
		if(Result)
		{
			object.has=TRUE;
			object.sort=1;
			return object;
		}
	}
       
	return object;
}
 
BYTE CTank::Belong()
{
  if(m_pGame->m_tankleft==this){return 1;}
  if(m_pGame->m_tankright==this){return 2;}
  return 3;  
}

void CTank::Init(CGame* pGame,int X,int Y,LPDIRECTDRAWSURFACE Tankbmp,LPDIRECTDRAWSURFACE TankStatebmp,int nSkin)
{
	SetGame(pGame);
	SetTankBmp(Tankbmp);
	SetTankStateBmp(TankStatebmp);
	SetSkin(nSkin);
	SetTankPos(X,Y);
	SetRect();
}
void CTank::SetSkin(int nSkin)
{
	BYTE t=Belong();
	if(t==1 || t==2)
	{
		if(nSkin >= NUM_PLAYERTANKSKINS || nSkin<0)
			nSkin=0;
	}
	else if(t==3)
	{
		if(nSkin>=NUM_ENEMYTANKSKINS || nSkin<0)
			nSkin=8;
		switch(nSkin)
		{
		case 0:
			m_nDamage=20;
			SetTankLife(100);
			break;
		case 1:
			m_nDamage=25;
			SetTankLife(100);
			break;
		case 2:
			m_nDamage=30;
			SetTankLife(100);
			break;
		case 3:
			m_nDamage=35;
			SetTankLife(100);
			break;
		case 4:
			m_nDamage=40;
			SetTankLife(150);
			break;
		case 5:
			m_nDamage=40;
			SetTankLife(150);
			break;
		case 6:
			m_nDamage=50;
			SetTankLife(200);
			break;
		case 7:
			m_nDamage=70;
			SetTankLife(250);
			break;
		case 8:
			m_nDamage=100;
			SetTankLife(300);
			break;
		}

	}
	m_nSkin=nSkin;
}


BOOL CTank::HasBlock(int sx, int sy, int ex, int ey)
{
	for(int i=sx;i<=ex;i++)
		for(int j=sy;j<=ey;j++)
		{
			CellType &celltype= m_pGame->m_TankMap.GetCellType(i,j);
				if(celltype.cell==CT_SOIL || celltype.cell==CT_STEEL ||celltype.cell==CT_STONE)
					return TRUE;
		}
	return FALSE;
}

BOOL CTank::DownCanGo()
{
	for(int i=m_nX;i<=m_nX+2;i++)
		for(int j=m_nY+2;j<=m_nY+2;j++)
		{
			if(j>=TANKMAPHEIGHT || i>=TANKMAPWIDTH)return FALSE;
			CellType &ct=m_pGame->m_TankMap.GetCellType(i,j);
			if(ct.cell==CT_SOIL||ct.cell==CT_STONE||ct.cell==CT_STEEL||ct.cell==CT_WATER)
				return FALSE;
		}
	return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜碰碰视频| 久久久99久久| 欧美三级电影在线观看| 99re在线精品| 99久久国产综合精品色伊| 成人一区二区三区视频在线观看| 国内精品视频一区二区三区八戒 | 国产成人丝袜美腿| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩电影免费在线| 丝袜美腿成人在线| 日韩黄色在线观看| 青青草原综合久久大伊人精品 | 大胆亚洲人体视频| 99久久99久久精品免费观看| 色综合天天综合狠狠| 97se亚洲国产综合自在线观| 91成人国产精品| 欧美无砖砖区免费| 日韩视频在线永久播放| 久久亚洲一区二区三区明星换脸| 亚洲精品一区二区三区蜜桃下载| 久久综合色天天久久综合图片| 日韩女优av电影在线观看| 精品少妇一区二区三区日产乱码| 欧美精品一区男女天堂| 国产三级精品三级| 日韩一区中文字幕| 亚洲激情图片一区| 日韩中文字幕91| 国产在线精品一区二区三区不卡 | 欧美在线三级电影| 欧美人妖巨大在线| 精品久久人人做人人爱| 免费欧美高清视频| 国精产品一区一区三区mba视频 | 久久综合资源网| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品麻豆99久久久久久| 亚洲乱码国产乱码精品精小说| 五月婷婷激情综合网| 国产一区在线不卡| 99久久久久久99| 51精品秘密在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 春色校园综合激情亚洲| 欧美亚洲国产一区二区三区| 欧美一二区视频| 欧美高清在线视频| 亚洲6080在线| 国产 欧美在线| 欧美日本视频在线| 国产精品色哟哟网站| 亚洲国产cao| 国产91精品欧美| 欧美日韩精品一区二区三区四区| 久久久久久久久久美女| 亚洲一区视频在线| 国产成人激情av| 欧美电影在哪看比较好| 亚洲国产精品传媒在线观看| 丝袜国产日韩另类美女| 不卡av在线网| 欧美大尺度电影在线| 亚洲精品久久7777| 国产一区免费电影| 欧美精品日韩精品| 亚洲女同一区二区| 国产高清亚洲一区| 日韩午夜在线影院| 一区二区三区在线观看国产| 国产黑丝在线一区二区三区| 欧美一三区三区四区免费在线看 | 日韩码欧中文字| 国产在线视频一区二区| 欧美精品v日韩精品v韩国精品v| 国产精品福利在线播放| 久草在线在线精品观看| 欧美剧在线免费观看网站 | 激情综合网最新| 欧美视频精品在线观看| 亚洲视频在线观看三级| 国产成人精品1024| xnxx国产精品| 蜜桃视频一区二区三区在线观看| 在线免费亚洲电影| 亚洲人精品一区| 成人国产精品免费网站| 久久亚洲捆绑美女| 久88久久88久久久| 日韩三级av在线播放| 亚洲成av人片| 欧美日韩一区二区三区在线| 亚洲色图另类专区| 99精品视频在线观看| 国产精品丝袜一区| 成人激情黄色小说| 国产精品嫩草99a| 成人免费视频一区二区| 欧美国产日韩a欧美在线观看| 国产盗摄精品一区二区三区在线| 久久奇米777| 国产成人免费xxxxxxxx| 国产欧美综合色| 粉嫩aⅴ一区二区三区四区五区| 欧美精品一区二区三区蜜桃视频 | 欧美视频自拍偷拍| 亚洲一区二区黄色| 欧美日韩精品一区二区三区蜜桃| 亚洲成人av在线电影| 欧美日韩在线播放三区| 亚洲福利电影网| 777欧美精品| 久久国产免费看| 久久先锋资源网| 国产在线国偷精品免费看| 国产亚洲一区字幕| yourporn久久国产精品| 亚洲免费电影在线| 欧美日韩国产小视频| 日日夜夜一区二区| 精品日韩欧美一区二区| 国产一区二区精品久久91| 国产精品视频线看| 一本大道久久a久久精品综合| 一区二区三区高清| 欧美军同video69gay| 国产综合色在线| 国产精品萝li| 欧美日韩精品欧美日韩精品一综合 | 韩国精品主播一区二区在线观看| 久久久欧美精品sm网站| 99久久99精品久久久久久 | gogogo免费视频观看亚洲一| 亚洲欧洲av另类| 欧美日韩高清一区二区三区| 免费在线观看精品| 欧美极品xxx| 欧美日韩一区视频| 国产乱码精品一区二区三区五月婷| 中文字幕不卡三区| 欧美日韩亚洲综合| 韩国毛片一区二区三区| 亚洲乱码国产乱码精品精的特点| 884aa四虎影成人精品一区| 国产成人在线影院| 亚洲小说欧美激情另类| 久久久综合网站| 欧美性色黄大片手机版| 麻豆精品精品国产自在97香蕉| 中文字幕第一区第二区| 欧美剧情电影在线观看完整版免费励志电影 | 欧美xxxx在线观看| 99r国产精品| 美国十次综合导航| 亚洲精品国产高清久久伦理二区 | 日日夜夜一区二区| 国产精品久久久久久久久免费樱桃 | 国产成人高清在线| 天堂av在线一区| 日韩美女啊v在线免费观看| 欧美一区二区三区免费大片| 91在线看国产| 久久99九九99精品| 亚洲伊人色欲综合网| 国产日本欧美一区二区| 欧美日韩国产美| 91丨国产丨九色丨pron| 精品一区二区三区的国产在线播放| 亚洲日韩欧美一区二区在线| 欧美成人一区二区三区片免费 | 亚洲精品伦理在线| 国产午夜精品在线观看| 777久久久精品| 91极品美女在线| 成人午夜在线免费| 另类小说欧美激情| 亚洲第一久久影院| 亚洲人成伊人成综合网小说| 久久综合狠狠综合久久综合88| 欧美视频在线播放| jlzzjlzz亚洲日本少妇| 国产一区二区伦理片| 日本成人在线不卡视频| 亚洲伊人伊色伊影伊综合网| 国产精品国产三级国产专播品爱网| 欧美大片一区二区三区| 欧美剧在线免费观看网站| 欧美综合在线视频| 色中色一区二区| 91美女在线观看| 不卡视频免费播放| 国产99久久精品| 国产黑丝在线一区二区三区| 韩国精品在线观看| 韩国精品久久久| 国产精品自拍av| 国内精品视频一区二区三区八戒 | 欧美午夜片在线看| 色爱区综合激月婷婷|