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

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

?? bullet.cpp

?? 在vc 6.0環境下的一個坦克小游戲
?? CPP
字號:
// Bullet.cpp: implementation of the CBullet class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "tank.h"
#include "Bullet.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBullet::CBullet():m_nSpeed(5),index(-1),m_nDamage(50)
{
  
}

CBullet::~CBullet()
{

}
BOOL CBullet::ChangeColor(COLORREF x/* =0x00000000ff */)
{
	return FALSE;
}
BOOL CBullet::BulletAnimate(int start/* =START */)
{
	switch(start)
	{
	case 1:
        strMsg="沖呀";
		break;
	case 2:
		strMsg="我要砍死他";
		break;
	case 3:
		strMsg="殺呀";
		break;
	}
	return TRUE;
}

Result CBullet::IsWhat(int xt,int yt)
{
	Result rst;
	memset(rst.type,0,3*sizeof(CellType));
	rst.num=0;
	rst.bCanGo=TRUE;
	int n1,n2;
	int m;
//	xt=min(SCREEN_WIDTH-1,max(0,xt));
//	yt=min(SCREEN_HEIGHT-1,max(0,yt));
	switch(m_nDirection)
	{
	case UP:
	case DOWN:
		if(yt<0 || yt>=SCREEN_HEIGHT-BULLETHEIGHT)
		{
			rst.bCanGo=FALSE;
			break;
		}
		if(m_nDirection==UP)
			m=yt / TANKMAPCELL;
		else
			m=(yt + BULLETHEIGHT) / TANKMAPCELL-1;
		n1=xt / TANKMAPCELL;
		n2=(xt + BULLETWIDTH) / TANKMAPCELL;
		if(n1<0 || n1>=TANKMAPWIDTH || n2<0 || n2>=TANKMAPWIDTH || m<0 || m>=TANKMAPHEIGHT)
		{
			rst.bCanGo=FALSE;
			break;
		}
		if(n1==n2)
		{
			rst.num=1;
			rst.type[0]=m_pGame->m_TankMap.GetCellType(n1,m);
			rst.position[0].x=n1;
			rst.position[0].y=m;
			if(rst.type[0].cell != CT_EMPTY && rst.type[0].cell != CT_TREE && rst.type[0].cell != CT_ICE && rst.type[0].cell != CT_WATER)
			{
				CExplode *p=new CExplode;
				if(p)
				{
					p->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					p->SetPostion(n1*TANKMAPCELL,m*TANKMAPCELL);
					m_pGame->m_Explode.AddTail(p);
					m_pGame->PlaySound();
				}
				rst.bCanGo=FALSE;
			}
		}
		else
		{
			rst.num=2;
			rst.type[0]=m_pGame->m_TankMap.GetCellType(n1,m);
			rst.position[0].x=n1;
			rst.position[0].y=m;
			if(rst.type[0].cell != CT_EMPTY && rst.type[0].cell != CT_TREE && rst.type[0].cell != CT_ICE && rst.type[0].cell != CT_WATER)
			{
				CExplode *p=new CExplode;
				if(p)
				{
					p->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					p->SetPostion(n1*TANKMAPCELL,m*TANKMAPCELL);
					m_pGame->m_Explode.AddTail(p);
					m_pGame->PlaySound();
				}
				rst.bCanGo=FALSE;
			}
			rst.type[1]=m_pGame->m_TankMap.GetCellType(n2,m);
			rst.position[1].x=n2;
			rst.position[1].y=m;
			if(rst.bCanGo && rst.type[1].cell != CT_EMPTY && rst.type[1].cell != CT_TREE && rst.type[1].cell != CT_ICE && rst.type[1].cell != CT_WATER)
			{
				CExplode *p=new CExplode;
				if(p)
				{
					p->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					if(n2==39)n2-=1;
					p->SetPostion(n2*TANKMAPCELL,m*TANKMAPCELL);
					m_pGame->m_Explode.AddTail(p);
					m_pGame->PlaySound();
				}
				rst.bCanGo=FALSE;
			}
		}
		break;
	case LEFT:
	case RIGHT:
		if(xt<0 || xt>=SCREEN_WIDTH-BULLETWIDTH)
		{
			rst.bCanGo=FALSE;
			break;
		}
		if(m_nDirection==LEFT)
			m=xt / TANKMAPCELL;
		else
			m=(xt + BULLETHEIGHT) / TANKMAPCELL-1;
		n1=yt / TANKMAPCELL;
		n2=(yt + BULLETHEIGHT) / TANKMAPCELL;
		if(n1<0 || n1>=TANKMAPHEIGHT || n2<0 || n2>=TANKMAPHEIGHT || m<0 || m>=TANKMAPWIDTH)
		{
			rst.bCanGo=FALSE;
			break;
		}
		if(n1==n2)
		{
			rst.num=1;
			rst.type[0]=m_pGame->m_TankMap.GetCellType(m,n1);
			rst.position[0].x=m;
			rst.position[0].y=n1;
			if(rst.type[0].cell != CT_EMPTY && rst.type[0].cell != CT_TREE && rst.type[0].cell != CT_ICE&& rst.type[0].cell != CT_WATER)
			{
				CExplode *p=new CExplode;
				if(p)
				{
					p->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					p->SetPostion(m*TANKMAPCELL,n1*TANKMAPCELL);
					m_pGame->m_Explode.AddTail(p);
					m_pGame->PlaySound();
				}
				rst.bCanGo=FALSE;
			}
		}
		else
		{
			rst.num=2;
			rst.type[0]=m_pGame->m_TankMap.GetCellType(m,n1);
			rst.position[0].x=m;
			rst.position[0].y=n1;
			if(rst.type[0].cell != CT_EMPTY && rst.type[0].cell != CT_TREE && rst.type[0].cell != CT_ICE&& rst.type[0].cell != CT_WATER)
			{
				CExplode *p=new CExplode;
				if(p)
				{
					p->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					p->SetPostion(m*TANKMAPCELL,n1*TANKMAPCELL);
					m_pGame->m_Explode.AddTail(p);
					m_pGame->PlaySound();
				}
				rst.bCanGo=FALSE;
			}
			rst.type[1]=m_pGame->m_TankMap.GetCellType(m,n2);
			rst.position[1].x=m;
			rst.position[1].y=n2;
			if(rst.bCanGo && rst.type[1].cell != CT_EMPTY && rst.type[1].cell != CT_TREE && rst.type[1].cell != CT_ICE&& rst.type[1].cell != CT_WATER)
			{
				CExplode *p=new CExplode;
				if(p)
				{
					p->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					p->SetPostion(m*TANKMAPCELL,n2*TANKMAPCELL);
					m_pGame->m_Explode.AddTail(p);
					m_pGame->PlaySound();
				}
				rst.bCanGo=FALSE;
			}
		}
		break;
	}
	return rst;
}
void CBullet::DrawBullet(LPDIRECTDRAWSURFACE pdds)
{
	RECT rc;
	rc.left=index * BULLETWIDTH;
	rc.top=0;
	rc.right=rc.left + BULLETWIDTH;
	rc.bottom=BULLETHEIGHT;
	pdds->BltFast( x, y, m_bmpBullet, &rc, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT );
}

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

void CBullet::SetPosition(int m, int n)
{
     switch(m_nDirection)
	 {
	 case UP:
		x=m+TANKWIDTH/2-BULLETWIDTH/2;
		y=n-BULLETHEIGHT;
		break;
	 case DOWN:
		x=m+TANKWIDTH/2-BULLETWIDTH/2;
		y=n+TANKHEIGHT+BULLETHEIGHT;
		break;
	 case LEFT:
		x=m-BULLETWIDTH;
		y=n+TANKHEIGHT/2-BULLETHEIGHT/2;
        break;
	 case RIGHT:
		 x=m+TANKWIDTH+BULLETWIDTH;
         y=n+TANKHEIGHT/2-BULLETHEIGHT/2;
        break;
	 }
	 SetRect();
}

void CBullet::SetBulletBmp(LPDIRECTDRAWSURFACE bmp)
{
   m_bmpBullet=bmp;
}

Obj CBullet::HasObject(int xpos, int ypos)
{
	Obj object;
    BOOL Result=FALSE;
	CRect rec(xpos,ypos,xpos+BULLETWIDTH,ypos+BULLETHEIGHT);
	
	POSITION position,preposition;

	position=m_pGame->m_BulletList.GetHeadPosition();
    
	while(position)
	{
		preposition=position;
		CBullet * p=m_pGame->m_BulletList.GetNext(position);
		if(p!=this)
		{
			CRect rc;
			Result=rc.IntersectRect(&rec,&(p->rect));
			if(Result)
			{
				object.position=preposition;
				object.sort=0;
				object.has=TRUE;
				CExplode *pe=new CExplode;
				if(pe)
				{
					pe->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
					pe->SetPostion(p->Getx()-12,p->Gety()-12);
					m_pGame->m_Explode.AddTail(pe);
					m_pGame->PlaySound();
				}
                return object;
			}	   
		}
	}
	
	position=m_pGame->m_Player.GetHeadPosition();
    
	while(position)
	{
		preposition=position;
		CTank * p=m_pGame->m_Player.GetNext(position);
		CRect rc;
		Result=rc.IntersectRect(&rec,&p->rect);
		if(Result)
		{
			object.position=preposition;
			object.sort=1;
			object.has=TRUE;
			CExplode *pe=new CExplode;
			if(pe)
			{
				pe->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
				pe->SetPostion(p->Getx(),p->Gety());
				m_pGame->m_Explode.AddTail(pe);
				m_pGame->PlaySound();
			}
            return object;
		}	   
	}
	position=m_pGame->m_Enemy.GetHeadPosition();
    
	while(position)
	{
		preposition=position;
		CTank * p=m_pGame->m_Enemy.GetNext(position);
		CRect rc;
		Result=rc.IntersectRect(&rec,&p->rect);
		if(Result)
		{
			object.position=preposition;
			object.sort=2;
			object.has=TRUE;
			CExplode *pe=new CExplode;
			if(pe)
			{
				pe->SetExplodeBmp(m_pGame->m_pExplodeBuffer);
				pe->SetPostion(p->Getx(),p->Gety());
				m_pGame->m_Explode.AddTail(pe);
				m_pGame->PlaySound();
			}
	        return object;
		}	   
	
	}   
	return object;
}

void CBullet::DestroyObj(Obj &object)
{
	int TankLife;
	int NowLife;
	int tempDamage=m_nDamage; 
	POSITION pos;
	switch(object.sort)
	{
	case 0://Bullet
		delete m_pGame->m_BulletList.GetAt(object.position);
		m_pGame->m_BulletList.RemoveAt(object.position);
		break;
	case 1://Player
		pos=m_pGame->m_Player.GetHeadPosition();
		if(pos==object.position && m_pGame->m_tankleft)
		{ 
			if(Belong==1)return;
			if(Belong==2)tempDamage=10;
            TankLife=m_pGame->m_tankleft->GetTankLife();
			NowLife=m_pGame->m_tankleft->SetTankLife(TankLife-tempDamage);
			if(NowLife==0)
			{
				m_pGame->m_nRightScore=0;  //打死了左邊,右邊的坦克分數減為0
                delete m_pGame->m_tankleft;  
				m_pGame->m_tankleft=NULL;
				m_pGame->m_Player.RemoveAt(object.position);
				m_pGame->PlaySound(1);
			}
		}
		else if(m_pGame->m_tankright)
		{
			if(Belong==2)return;
			if(Belong==1)tempDamage=10;
			TankLife=m_pGame->m_tankright->GetTankLife();
			NowLife=m_pGame->m_tankright->SetTankLife(TankLife-tempDamage);
			if(NowLife==0)
			{
				m_pGame->m_nLeftScore=0;//打死了右邊,左邊的坦克分數減為0
                delete m_pGame->m_tankright;  
				m_pGame->m_tankright=NULL;
				m_pGame->m_Player.RemoveAt(object.position);
				m_pGame->PlaySound(1);
			}
		}
		break;
	case 2://Enemy
        CTank * p=m_pGame->m_Enemy.GetAt(object.position);
		if(Belong==3)tempDamage=1;
        TankLife=p->GetTankLife();
		NowLife=p->SetTankLife(TankLife-tempDamage);
		if(NowLife==0)
		{
			int temp=p->GetSkin();
			delete p;
			m_pGame->m_Enemy.RemoveAt(object.position);
			CEgg * egg;
			if(Belong==1)
			{
				m_pGame->m_nLeftKills++;
				switch(temp)
				{
				case 0:
				case 1:
				case 2:
				case 3:
                   m_pGame->m_nLeftScore+=50;
				   break;
				case 4:
				case 5:
                   m_pGame->m_nLeftScore+=75; 
					break;
				case 6:
				    m_pGame->m_nLeftScore+=100;
					break;
				case 7:
                    m_pGame->m_nLeftScore+=125;
					egg=new CEgg;
					if(egg)
					{
						egg->SetEggBmp(m_pGame->m_pEggBuffer);
						egg->RandomSet();
						m_pGame->m_Egg.AddTail(egg);
					}
					break;
				case 8:
					m_pGame->m_nLeftScore+=150;
					egg=new CEgg;
					if(egg)
					{
						egg->SetEggBmp(m_pGame->m_pEggBuffer);
						egg->RandomSet();
						m_pGame->m_Egg.AddTail(egg);
					}
					break;
				}
				if(m_pGame->m_nLeftScore-9999>=0){m_pGame->m_nLeftScore-=9999;m_pGame->m_nLeftPlayer++;}
			}
			else if(Belong==2)
			{		
				m_pGame->m_nRightKills++;
				switch(temp)
				{
				case 0:
				case 1:
				case 2:
				case 3:
                   m_pGame->m_nRightScore+=50;
				   break;
				case 4:
				case 5:
                   m_pGame->m_nRightScore+=75; 
					break;
				case 6:
				    m_pGame->m_nRightScore+=100;
					break;
				case 7:
                    m_pGame->m_nRightScore+=125;
					egg=new CEgg;
					if(egg)
					{
						egg->SetEggBmp(m_pGame->m_pEggBuffer);
						egg->RandomSet();
						m_pGame->m_Egg.AddTail(egg);
					}
					break;
				case 8:
					m_pGame->m_nRightScore+=150;
					egg=new CEgg;
					if(egg)
					{
						egg->SetEggBmp(m_pGame->m_pEggBuffer);
						egg->RandomSet();
						m_pGame->m_Egg.AddTail(egg);
					}
					break;
				}
				if(m_pGame->m_nRightScore-9999>=0){m_pGame->m_nRightScore-=9999;m_pGame->m_nRightPlayer++;}
			}
				m_pGame->PlaySound(1);
		}
		break;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说视频一区二区| 国产91精品一区二区麻豆网站| 2021国产精品久久精品| 欧美日韩五月天| 中文字幕成人av| 国产欧美综合在线观看第十页| 精品福利在线导航| 午夜精品福利一区二区三区蜜桃| 99久久伊人网影院| a在线欧美一区| 久久九九99视频| 麻豆91在线播放免费| 欧美日韩国产系列| 亚洲一区中文在线| 亚洲国产日韩在线一区模特| www.66久久| 国产精品高潮久久久久无| 亚洲国产成人一区二区三区| 国产一区二区福利视频| 国产成人精品免费在线| 久久色中文字幕| 国内久久精品视频| 91激情在线视频| 这里只有精品视频在线观看| 亚洲综合一区二区精品导航| 成人一区二区在线观看| 3d成人h动漫网站入口| 亚洲国产精品尤物yw在线观看| 日本乱人伦aⅴ精品| 亚洲另类在线视频| 午夜精品视频在线观看| 欧美日韩另类一区| 亚洲电影一区二区| 久久爱www久久做| 精品三级在线观看| 亚洲综合在线视频| 欧美性色黄大片| 亚洲成人动漫在线免费观看| 91在线精品一区二区三区| 中文字幕亚洲区| 蜜桃视频一区二区三区在线观看| 欧美一级欧美三级| 日韩黄色免费电影| 欧美一级片在线| 国模少妇一区二区三区| 久久精品水蜜桃av综合天堂| 国产成人免费视频网站高清观看视频| 国产欧美日韩在线| 色综合久久中文字幕| 亚洲一区二区三区自拍| 欧美日韩国产一级片| 日韩国产高清在线| 精品国精品国产| 免费一级欧美片在线观看| 久久欧美中文字幕| 亚洲另类春色国产| 欧美欧美欧美欧美首页| 天天操天天综合网| 精品美女在线播放| www.日韩av| 亚洲成人av一区二区| 91精品蜜臀在线一区尤物| 国产综合色视频| 国产精品美女久久久久高潮| 99re免费视频精品全部| 亚洲激情图片一区| 日韩午夜中文字幕| 国产99久久久国产精品免费看| 国产精品久久国产精麻豆99网站| 在线观看日韩电影| 麻豆一区二区三| 国产精品久久久久影院老司| 欧美三级中文字| 国模无码大尺度一区二区三区| 中文字幕中文在线不卡住| 欧美视频在线一区| 国内精品久久久久影院色 | 国产福利91精品一区二区三区| 国产亚洲自拍一区| 在线观看国产91| 久久国产夜色精品鲁鲁99| |精品福利一区二区三区| 欧美日韩国产区一| 国产91在线看| 亚洲成a人在线观看| 久久精品视频一区| 色婷婷综合久久久中文一区二区| 青青青伊人色综合久久| 国产精品美女久久久久aⅴ国产馆| 欧美日韩一级黄| 国产成人啪午夜精品网站男同| 亚洲午夜久久久久| 国产日韩欧美不卡| 欧美日韩精品一二三区| 国产精品一区二区在线观看网站| 亚洲精品免费在线观看| 26uuu久久天堂性欧美| 色94色欧美sute亚洲线路一ni| 国产在线视频精品一区| 亚洲最大成人网4388xx| 国产日韩欧美精品综合| 欧美久久久一区| 播五月开心婷婷综合| 久久精品久久精品| 亚洲一级片在线观看| 国产蜜臀97一区二区三区| 欧美日韩视频在线一区二区| 成人黄色777网| 久久精品久久99精品久久| 亚洲激情第一区| 欧美国产日本视频| 日韩女优电影在线观看| 欧美色图一区二区三区| 国产suv精品一区二区883| 日本 国产 欧美色综合| 伊人夜夜躁av伊人久久| 国产精品三级在线观看| 欧美α欧美αv大片| 欧美精品v日韩精品v韩国精品v| 99精品一区二区| 国产精品18久久久久| 青青草国产精品亚洲专区无| 一区二区三区蜜桃网| 国产精品色在线| 亚洲精品在线免费播放| 欧美一区二区三区人| 在线国产电影不卡| 99精品热视频| 成人美女视频在线看| 国产精品一区二区男女羞羞无遮挡 | 另类调教123区| 亚洲1区2区3区4区| 国产精品乱码久久久久久| 337p粉嫩大胆噜噜噜噜噜91av| 884aa四虎影成人精品一区| 成人aa视频在线观看| 国产精品自拍三区| 日本不卡一区二区三区高清视频| 亚洲免费在线观看| 中文一区一区三区高中清不卡| 久久久久久97三级| 精品国产一区二区三区不卡| 91精品国产91热久久久做人人 | 日韩中文字幕1| 亚洲成av人片在www色猫咪| 伊人性伊人情综合网| 亚洲视频综合在线| 亚洲区小说区图片区qvod| 国产精品美女一区二区| 国产精品三级久久久久三级| 中文av一区二区| 国产精品女同互慰在线看| 欧美经典三级视频一区二区三区| 久久精品亚洲一区二区三区浴池| 久久午夜国产精品| 久久久久成人黄色影片| 国产欧美日韩在线视频| 欧美激情一区二区三区不卡| 欧美国产精品v| 国产精品黄色在线观看| 亚洲男人的天堂一区二区| 亚洲色图欧洲色图婷婷| 亚洲品质自拍视频网站| 一区二区三区**美女毛片| 亚洲小说春色综合另类电影| 亚洲国产精品一区二区久久| 午夜精品久久久久久久久久久| 日韩精品一区第一页| 秋霞影院一区二区| 六月丁香综合在线视频| 国产精品亚洲视频| 成人自拍视频在线| gogo大胆日本视频一区| 一本大道av伊人久久综合| 欧美视频一区二区在线观看| 5月丁香婷婷综合| 欧美成人一区二区三区| 欧美国产日本韩| 亚洲精品综合在线| 午夜久久久影院| 激情综合色综合久久综合| 成人一级片网址| 色网综合在线观看| 欧美一区二区在线免费观看| 亚洲精品在线三区| 国产精品免费av| 午夜成人在线视频| 日韩av网站在线观看| 精品一区二区三区在线观看国产 | 亚洲精品一区二区三区精华液| 久久婷婷国产综合国色天香| 精品国产免费一区二区三区香蕉| 国产日韩视频一区二区三区| 国产精品日产欧美久久久久| 亚洲一区二区三区中文字幕| 久久爱www久久做| 99久久久无码国产精品| 91精品麻豆日日躁夜夜躁| 精品国精品自拍自在线| 最新热久久免费视频|