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

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

?? engine.cpp

?? this block game source
?? CPP
字號:
/////////////////////////////////////////////////////////////////////////////////////////////
// ENGINE.CPP
/////////////////////////////////////////////////////////////////////////////////////////////
#include "engine.h"
#include "graphics.h"
#include "input.h"
#include "sound.h"
#include "level.h"
#include "editor.h"

extern BYTE Keys[256];
extern long MouseX, MouseY;

OBJECT Blocks;
OBJp Player;
OBJp Ball;

int nBlocks;
int ProgramState;


/////////////////////////////////////////////////////////////////////////////////////////////
// DelObject
/////////////////////////////////////////////////////////////////////////////////////////////
void DelBlock(OBJp node)
{
	nBlocks--;
	node->Next->Prev = node->Prev;
	node->Prev->Next = node->Next;
	delete node;
}

/////////////////////////////////////////////////////////////////////////////////////////////
// AddBlock
/////////////////////////////////////////////////////////////////////////////////////////////
void AddBlock(int type, int x, int y)
{
	OBJp node;

	node = new OBJECT;
	if(node == NULL) return;

	node->Width = 31;
	node->Height = 20;
	node->Type = type;
	node->PosX = x;
	node->PosY = y;

	node->Next = Blocks.Next;
	node->Prev = &Blocks;
	Blocks.Next->Prev = node;
	Blocks.Next = node;

	nBlocks++;
}

/////////////////////////////////////////////////////////////////////////////////////////////
// InitEngine
/////////////////////////////////////////////////////////////////////////////////////////////
void InitEngine()
{
	nBlocks = 0;
	ProgramState = PS_ACTIVE;

	Blocks.Next = Blocks.Prev = &Blocks;
	Blocks.PosX = Blocks.PosY = 0;

	for(int i = 0; i < 20; i++)
	{
		AddBlock(Level1[i][0], Level1[i][1], Level1[i][2]);
	}

	Player = new OBJECT;
	Player->Width = 60;
	Player->Height = 15;
	Player->PosX = 300;
	Player->PosY = 450;

	Ball = new OBJECT;
	Ball->Width = 10;
	Ball->Height = 10;
	Ball->PosX = 310;
	Ball->PosY = 60;
	Ball->VelX = 4;
	Ball->VelY = 4;
}

/////////////////////////////////////////////////////////////////////////////////////////////
// PlayerHit
/////////////////////////////////////////////////////////////////////////////////////////////
void HitPlayer(OBJp Obj1, OBJp Obj2)
{
	RECT Dest;

	RECT Src1 = { Obj1->PosX, Obj1->PosY, Obj1->PosX + Obj1->Width, Obj1->PosY + Obj1->Height };
	RECT Src2 = { Obj2->PosX, Obj2->PosY, Obj2->PosX + Obj2->Width, Obj2->PosY + Obj2->Height };

	if(!IntersectRect(&Dest, &Src1, &Src2)) return;

	PlaySound(SND_BALLHIT);

	if(Dest.right - Dest.left > Dest.bottom - Dest.top)
	{
		Ball->VelY = -Ball->VelY;

		if(Src2.left < Src1.left)
		{
			Ball->VelX -= 4;
		}
		if(Src2.left < Src1.left + 10)
		{
			Ball->VelX -= 2;
		}
		else if(Src2.right > Src1.right)
		{
			Ball->VelX += 4;
		}
		else if(Src2.right > Src1.right - 10)
		{
			Ball->VelX += 2;
		}
	}
	else Ball->VelX = -Ball->VelX;
}

/////////////////////////////////////////////////////////////////////////////////////////////
// BlockHit
/////////////////////////////////////////////////////////////////////////////////////////////
HITS HitBlock(OBJp Obj1, OBJp Obj2)
{
	RECT Dest;

	RECT Src1 = { Obj1->PosX, Obj1->PosY, Obj1->PosX + Obj1->Width, Obj1->PosY + Obj1->Height };
	RECT Src2 = { Obj2->PosX, Obj2->PosY, Obj2->PosX + Obj2->Width, Obj2->PosY + Obj2->Height };

	if(!IntersectRect(&Dest, &Src1, &Src2)) return NO_HIT;

	if(Dest.right - Dest.left > Dest.bottom - Dest.top) return HIT_Y;
	else return HIT_X;
}

/////////////////////////////////////////////////////////////////////////////////////////////
// UpdateFrame
/////////////////////////////////////////////////////////////////////////////////////////////
void UpdateFrame()
{
	HITS rval;
	OBJp node;
	OBJp save;
	BOOL BlockHit;

	switch(ProgramState)
	{
		case PS_EDITOR:
				InitEditor();
			break;

		case PS_SPLASH:
			break;

		case PS_WON:
			break;

		case PS_DEAD:
			break;

		case PS_ACTIVE:

			UpdateInput();

			if(Keys[DIK_TAB] & 0x80) ProgramState = PS_EDITOR;

			if(Keys[DIK_LEFT] & 0x80)  Player->PosX -= 8;
			if(Keys[DIK_RIGHT] & 0x80) Player->PosX += 8;
			if(MouseX) Player->PosX += MouseX;
			if(Player->PosX < 10)  Player->PosX = 10;
			if(Player->PosX > 570) Player->PosX = 570;

			// Player collision detection
			HitPlayer(Player, Ball);

			// Block collision detection
			node = Blocks.Next;
			do
			{
				BlockHit = FALSE;

				rval = HitBlock(node, Ball);

				if(rval == HIT_Y)
				{
					Ball->VelY = -Ball->VelY;
					save = node;
					BlockHit = TRUE;
				}

				else if(rval == HIT_X)
				{
					Ball->VelX = -Ball->VelX;
					save = node;
					BlockHit = TRUE;
				}

				node = node->Next;
				if(BlockHit)
				{
					PlaySound(SND_BLOCKHIT);
					DelBlock(save);
				}
			}
			while(node != &Blocks);

			// Update ball position
			Ball->PosX += Ball->VelX;
			Ball->PosY += Ball->VelY;

			if(Ball->PosX < 10)  { Ball->VelX = -Ball->VelX; PlaySound(SND_WALLHIT); }
			if(Ball->PosX > 620) { Ball->VelX = -Ball->VelX; PlaySound(SND_WALLHIT); }

			if(Ball->PosY < 10)  { Ball->VelY = -Ball->VelY; PlaySound(SND_DEAD); }
			if(Ball->PosY > 470) { Ball->VelY = -Ball->VelY; PlaySound(SND_WALLHIT); }

			// if(nBlocks <= 0) PlaySound(SND_WON);

			UpdateGraphics();
			break;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道久久a久久综合| 久久99久久久久| 91美女精品福利| 亚洲在线视频免费观看| 欧美网站大全在线观看| 日本欧美加勒比视频| 久久网站最新地址| 99r精品视频| 无吗不卡中文字幕| 亚洲精品一区二区三区影院 | 欧美精品一区在线观看| 国产曰批免费观看久久久| 中文字幕国产一区二区| 色94色欧美sute亚洲13| 日本成人超碰在线观看| 中文字幕av免费专区久久| 91同城在线观看| 日韩二区三区四区| 国产精品热久久久久夜色精品三区| 色哟哟日韩精品| 麻豆一区二区在线| 自拍偷拍欧美精品| 欧美成人a在线| 91免费视频网| 全部av―极品视觉盛宴亚洲| 国产精品不卡在线观看| 91超碰这里只有精品国产| 国产成人精品午夜视频免费 | 亚洲欧洲av在线| 91麻豆精品国产自产在线| 丁香婷婷综合色啪| 丝袜亚洲另类丝袜在线| 国产精品久久久久影院老司| 欧美一级片在线观看| 91视频com| 国产一本一道久久香蕉| 午夜影院在线观看欧美| 国产欧美精品一区二区三区四区| 欧美色窝79yyyycom| 福利一区福利二区| 日本视频中文字幕一区二区三区| 国产精品久久久久久久久晋中 | 激情久久五月天| 一二三区精品福利视频| 日本一区二区三区在线不卡 | 日韩免费观看高清完整版| 97久久人人超碰| 国产高清一区日本| 久久99精品一区二区三区三区| 亚洲免费观看高清完整版在线观看熊 | 国产一区二区三区四区五区入口 | 日本乱人伦aⅴ精品| 国产精品18久久久久久vr| 美女精品一区二区| 日韩精品欧美成人高清一区二区| 亚洲免费视频中文字幕| 国产精品久久久久桃色tv| 国产喂奶挤奶一区二区三区| 欧美一级久久久| 91精品国产综合久久精品图片| 色吊一区二区三区| 色偷偷一区二区三区| www.66久久| 成人福利电影精品一区二区在线观看| 国产精品综合在线视频| 国产自产2019最新不卡| 国内欧美视频一区二区| 久久国产生活片100| 久久精品国产色蜜蜜麻豆| 日本欧洲一区二区| 麻豆精品在线观看| 蜜臀久久久久久久| 久久精品国产99| 黄色日韩三级电影| 国产一区二区三区| 国产精品白丝av| 高清视频一区二区| bt7086福利一区国产| 99re6这里只有精品视频在线观看| av在线不卡免费看| 色婷婷亚洲综合| 欧美日韩国产精选| 欧美一区二区视频在线观看| 欧美一区二区三区日韩视频| 日韩欧美一区二区免费| 精品久久五月天| 欧美国产日产图区| 亚洲欧美国产77777| 亚洲福中文字幕伊人影院| 丝袜诱惑制服诱惑色一区在线观看| 婷婷亚洲久悠悠色悠在线播放| 美日韩一级片在线观看| 国产a视频精品免费观看| a亚洲天堂av| 欧美电影在线免费观看| 精品捆绑美女sm三区| 国产精品欧美经典| 一区二区成人在线观看| 日本一区中文字幕 | 久久69国产一区二区蜜臀| 国产一区二区三区美女| a4yy欧美一区二区三区| 欧美日本在线播放| 精品福利一二区| 亚洲欧美电影一区二区| 日本美女视频一区二区| www.99精品| 91精品麻豆日日躁夜夜躁| 国产午夜精品一区二区三区嫩草| 成人免费电影视频| 欧美日韩激情一区| 精品免费国产一区二区三区四区| 日本一区二区三区四区在线视频| 亚洲日本在线a| 免费观看日韩电影| 成人黄色电影在线 | 麻豆91小视频| 成人动漫一区二区在线| 欧美高清视频一二三区 | 亚洲人成网站影音先锋播放| 丝袜亚洲精品中文字幕一区| 91精品国产综合久久久久久久| 久久精品人人做人人综合| 亚洲午夜久久久| 国产99精品在线观看| 国产精品电影一区二区三区| 国产欧美视频一区二区三区| 亚洲国产va精品久久久不卡综合| 国产一区二区三区综合| 欧美亚洲高清一区二区三区不卡| 久久久噜噜噜久噜久久综合| 亚洲国产成人porn| www.亚洲精品| 久久综合精品国产一区二区三区| 亚洲韩国精品一区| av影院午夜一区| 精品国产乱码久久| 天天综合网 天天综合色| 99re热这里只有精品免费视频| 亚洲精品一区二区三区四区高清| 亚洲午夜羞羞片| 一本久道中文字幕精品亚洲嫩| 国产午夜精品一区二区三区视频| 日本亚洲最大的色成网站www| 色婷婷综合久久久久中文一区二区| 国产欧美中文在线| 久久精品国产亚洲高清剧情介绍| 欧美日韩成人综合| 亚洲午夜一二三区视频| 91亚洲永久精品| 国产精品久久久久久久久久久免费看 | 一区二区在线观看免费视频播放| 国产精品白丝jk黑袜喷水| 精品久久99ma| 国内精品免费在线观看| 欧美一级欧美一级在线播放| 亚洲成人动漫一区| 欧美视频一区在线| 亚瑟在线精品视频| 欧美伦理影视网| 日本aⅴ免费视频一区二区三区| 欧美猛男超大videosgay| 亚洲一区免费在线观看| 欧美日精品一区视频| 亚洲高清视频的网址| 4438x亚洲最大成人网| 日韩精品视频网站| 91热门视频在线观看| 欧美精品九九99久久| 五月婷婷激情综合网| 欧美日韩黄色影视| 日韩不卡一区二区| 日韩欧美激情一区| 国产在线精品一区二区三区不卡| 日韩一区二区中文字幕| 久久99国产精品免费网站| 久久久亚洲高清| 国产91精品精华液一区二区三区| 国产欧美日韩在线视频| 97精品电影院| 亚洲不卡在线观看| 日韩一级免费观看| 国产一区二区三区观看| 欧美国产综合色视频| 91精品办公室少妇高潮对白| 亚洲电影一级黄| 亚洲精品一线二线三线| 不卡欧美aaaaa| 亚洲国产精品麻豆| 精品久久久久一区| 91麻豆文化传媒在线观看| 婷婷成人综合网| 国产拍揄自揄精品视频麻豆| 在线观看国产91| 蜜臀av性久久久久蜜臀aⅴ| 国产免费成人在线视频| 欧美影视一区在线| 精品一区二区三区在线播放| 中文字幕一区在线| 6080午夜不卡|