⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 magicshot.c

📁 Brewgame大家来看看啊 呵呵
💻 C
📖 第 1 页 / 共 3 页
字号:
			pMe->enemy[2].unLayer = SPRITE_LAYER_HIDDEN;
		}
	}
	//碰撞检测
	for(i =0;i < 3;i++)
	{
		if(pMe->magic[0].x+32 > pMe->enemy[i].x && pMe->magic[0].x +32 < pMe->enemy[i].x+16 
			&& pMe->magic[0].y > pMe->enemy[i].y && pMe->magic[0].y < pMe->enemy[i].y+16
			|| pMe->magic[0].x < pMe->enemy[i].x+20 && pMe->magic[0].x > pMe->enemy[i].x
			&& pMe->magic[0].y > pMe->enemy[i].y && pMe->magic[0].y <pMe->enemy[i].y+16)
		{
			pMe->enemyCount[i] = 0;
			pMe->enemy[i].unLayer = SPRITE_LAYER_HIDDEN;
			pMe->enemy[i].x = 999;
			pMe->roleScore += 1;
			//奖励 算法
			ShowGameScore(pMe);
		}
	}
}
//--------------------------------------------------------------------------------------------------------------------------------
//随即数获得器
//--------------------------------------------------------------------------------------------------------------------------------

int Random(int16 range)
{
	uint16 rand;
	GETRAND((byte *)&rand,2);
	return range == 0 ? 0 : rand%range;
}
//--------------------------------------------------------------------------------------------------------------------------------
//更新时间槽
//--------------------------------------------------------------------------------------------------------------------------------

void ShowGameTime(MagicShot *pMe)
{
	if(pMe->gameTime >= 10)
	{
		pMe->gameTime /= 10;
		pMe->gameTimeAcount += 1;
	}

	if(pMe->gameTimeAcount > 8)
	{
		pMe->showTime[0].unSpriteIndex = 16;
		if(pMe->gameTimeAcount >20)
		{
			pMe->showTime[0].unSpriteIndex = 17;
			if(pMe->gameTimeAcount > 30)
			{	
				pMe->showTime[0].unSpriteIndex = 18;
				if(pMe->gameTimeAcount > 40)
				{
					pMe->showTime[0].unSpriteIndex = 19;
					//GAME OVER
					if(pMe->gameTimeAcount > 48)
					{
						pMe->gameState = 2;
					}
				}

			}
		}
	}
}
//--------------------------------------------------------------------------------------------------------------------------------
//更新游戏积分
//--------------------------------------------------------------------------------------------------------------------------------

void ShowGameScore(MagicShot *pMe)
{
	//每得到5分,敌人速度 “基本速度”上升1点;
	if(pMe->roleScore % 12 == 0 && pMe->enemySpeedBase < 6)
	{
		pMe->enemySpeedBase += 1;
	}
	//每得到3分,延长游戏时间 2秒 ,
	if(pMe->gameTimeAcount > 0 && pMe->roleScore % 3 == 0)
	{
		pMe->gameTimeAcount -= 2;//获得时间的奖励
	}
	//每得到3分,发射魔法速度上升
	if(pMe->roleScore % 8 == 0 && pMe->powerTimer > 1)
	{
		pMe->powerMaxTimer -= 1;
		
	}

}
//--------------------------------------------------------------------------------------------------------------------------------
//游戏结束
//--------------------------------------------------------------------------------------------------------------------------------

void GameOver(MagicShot* pMe)
{
	IImage *pImage;
//	AEEImageInfo info;
	int mx=0,my=0;
	//音乐停止
	IMEDIA_Stop(pMe->BKMedia);

	IDISPLAY_ClearScreen(pMe->pIDisplay);
	if(pMe->roleScore < 20)
	{
		pImage = ISHELL_LoadImage(pMe->pIShell,"bad.bmp");
		PlayYXMedia(pMe,3);
	}
	else if(pMe->roleScore >= 20 && pMe->roleScore < 40 )
	{
		pImage = ISHELL_LoadImage(pMe->pIShell,"normal.bmp");
		PlayYXMedia(pMe,4);
	}
	else
	{
		pImage = ISHELL_LoadImage(pMe->pIShell,"good.bmp");
		PlayYXMedia(pMe,5);
	}
//	IIMAGE_GetInfo(pImage,&info);
//	mx = (pMe->DeviceInfo.cxScreen - info.cx)/2;
//	my = (pMe->DeviceInfo.cyScreen - info.cy)/2;
	
	
	IIMAGE_Draw(pImage,mx,my);
	IDISPLAY_Update(pMe->pIDisplay);
	IIMAGE_Release(pImage);
	

}
//--------------------------------------------------------------------------------------------------------------------------------
//画字符串ZZ
//--------------------------------------------------------------------------------------------------------------------------------
void DrawStr(MagicShot* pMe, uint16 DrawStringID)
{
    AECHAR* pBuffer;
    uint32 bufSize;

    ISHELL_GetResSize(pMe->pIShell,GMENU_RES_FILE,DrawStringID,RESTYPE_STRING,&bufSize);
    pBuffer = (AECHAR*)MALLOC(bufSize);
    
    IDISPLAY_ClearScreen(pMe->pIDisplay);

    ISHELL_LoadResString(pMe->pIShell,
                    GMENU_RES_FILE,
                    DrawStringID,
                	pBuffer,
                	bufSize);

            IDISPLAY_DrawText(pMe->pIDisplay,
                AEE_FONT_NORMAL,
            	pBuffer,
                -1,50,50,
            	NULL,
                IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
            IDISPLAY_Update(pMe->pIDisplay);
            FREE(pBuffer);

}
//--------------------------------------------------------------------------------------------------------------------------------
//菜单ZZ
//--------------------------------------------------------------------------------------------------------------------------------
boolean g_init_menu(MagicShot* pMe)
{
    
    AEERect rect;           //定义菜单显示的区域
    CtlAddItem ai1,ai2,ai3,ai4;         //定义 带图标菜单的结构
    AEEMenuColors  pc;
    rect.x = 0;
    rect.y = 0;
    rect.dx = pMe->DeviceInfo.cxScreen; //全屏显示菜单
    rect.dy = pMe->DeviceInfo.cyScreen;
    
    pc.cSelBack=MAKE_RGB(255,255,255);
    pc.cSelText=MAKE_RGB(255,0,0);
    pc.cTitleText=MAKE_RGB(255,255,255);
    pc.cFrame=MAKE_RGB(255,255,0);

/*
	IImage *pImage;
    AEEImageInfo imageInfo;
    pImage=ISHELL_LoadImage(pMe->a.m_pIShell,"gmenu.bci");
    IIMAGE_GetInfo(pImage,&imageInfo);
    IIMAGE_SetAnimationRate(pImage,10000);
    IIMAGE_Start(pImage,50,110);
    IIMAGE_Release(pImage);
*/

    

    ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,&pMe->pIMenuCtl);   //创建菜单实例
    IMENUCTL_SetColors (pMe->pIMenuCtl , &pc ) ;

    //------定义一个带图标菜单-------
    ai1.dwData =213;
    ai1.pszResImage = GMENU_RES_FILE;   //包含有菜单图标的资源文件名
    ai1.pszResText = GMENU_RES_FILE;    //包含有菜单文本字符串的资源文件名
    ai1.wItemID = MY_MENU_ID_M1;            //该菜单项的ID
    ai1.wText = IDS_STRING_1001;            //资源文件中菜单文本字符串的ID
    ai1.wImage = IDI_OBJECT_5001;       //资源文件中菜单图标的ID
    ai1.pText = NULL;
    ai1.pImage = NULL;
    ai1.wFont = 0;          			//字体

    //------定义一个带图标菜单-------
    ai2.dwData =213;
    ai2.pszResImage = GMENU_RES_FILE;   //包含有菜单图标的资源文件名
    ai2.pszResText = GMENU_RES_FILE;    //包含有菜单文本字符串的资源文件名
    ai2.wItemID = MY_MENU_ID_M2;            //该菜单项的ID
    ai2.wText = IDS_STRING_1002;            //资源文件中菜单文本字符串的ID
    ai2.wImage = IDI_OBJECT_5002;       //资源文件中菜单图标的ID
    ai2.pText = NULL;
    ai2.pImage = NULL;
    ai2.wFont = 0;          			//字体

    ai3.dwData =213;
    ai3.pszResImage = GMENU_RES_FILE;   //包含有菜单图标的资源文件名
    ai3.pszResText = GMENU_RES_FILE;    //包含有菜单文本字符串的资源文件名
    ai3.wItemID = MY_MENU_ID_M3;            //该菜单项的ID
    ai3.wText = IDS_STRING_1005;            //资源文件中菜单文本字符串的ID
    ai3.wImage = IDI_OBJECT_5003;       //资源文件中菜单图标的ID
    ai3.pText = NULL;
    ai3.pImage = NULL;
    ai3.wFont = 0;          			//字体

    ai4.dwData =213;
    ai4.pszResImage = GMENU_RES_FILE;   //包含有菜单图标的资源文件名
    ai4.pszResText = GMENU_RES_FILE;    //包含有菜单文本字符串的资源文件名
    ai4.wItemID = MY_MENU_ID_M4;            //该菜单项的ID
    ai4.wText = IDS_STRING_1003;            //资源文件中菜单文本字符串的ID
    ai4.wImage = IDI_OBJECT_5004;       //资源文件中菜单图标的ID
    ai4.pText = NULL;
    ai4.pImage = NULL;
    ai4.wFont = 0;          			//字体


    //-------设置菜单的标题----------------
    IMENUCTL_SetTitle(pMe->pIMenuCtl,GMENU_RES_FILE,IDS_STRING_1004,NULL);
    //-------使用IMENUCTL_AddItem()函数添加两个不带图标的菜单----------------
//  IMENUCTL_AddItem(pMe->pIMenuCtl,GMENU_RES_FILE,IDS_STRING_1001,MY_MENU_ID_M1,NULL,0);
//  IMENUCTL_AddItem(pMe->pIMenuCtl,GMENU_RES_FILE,IDS_STRING_1002,MY_MENU_ID_M2,NULL,0);
//  IMENUCTL_AddItem(pMe->pIMenuCtl,GMENU_RES_FILE,IDS_STRING_1005,MY_MENU_ID_M3,NULL,0);
//  IMENUCTL_AddItem(pMe->pIMenuCtl,GMENU_RES_FILE,IDS_STRING_1003,MY_MENU_ID_M4,NULL,0);


    //-------使用IMENUCTL_AddItemEx()函数添加1个带图标的菜单----------------
    if (IMENUCTL_AddItemEx(pMe->pIMenuCtl,&ai1) == TRUE) 
    {
        DBGPRINTF("icon menu item add success");
    }else
    {
        DBGPRINTF("icon menu item add faild");
    }

    //-------使用IMENUCTL_AddItemEx()函数添加1个带图标的菜单----------------
    if (IMENUCTL_AddItemEx(pMe->pIMenuCtl,&ai2) == TRUE) 
    {
        DBGPRINTF("icon menu item add success");
    }else
    {
        DBGPRINTF("icon menu item add faild");
    }
    //-------使用IMENUCTL_AddItemEx()函数添加1个带图标的菜单----------------
    if (IMENUCTL_AddItemEx(pMe->pIMenuCtl,&ai3) == TRUE) 
    {
        DBGPRINTF("icon menu item add success");
    }else
    {
        DBGPRINTF("icon menu item add faild");
    }
    //-------使用IMENUCTL_AddItemEx()函数添加1个带图标的菜单----------------
    if (IMENUCTL_AddItemEx(pMe->pIMenuCtl,&ai4) == TRUE) 
    {
        DBGPRINTF("icon menu item add success");
    }else
    {
        DBGPRINTF("icon menu item add faild");
    }



    IMENUCTL_EnableCommand(pMe->pIMenuCtl,TRUE);
    IMENUCTL_SetRect(pMe->pIMenuCtl,&rect);
    IMENUCTL_SetActive(pMe->pIMenuCtl,TRUE);
    return TRUE;
 
}
//--------------------------------------------------------------------------------------------------------------------------------
//画字符串CLC
//--------------------------------------------------------------------------------------------------------------------------------

void drawgamethanks(MagicShot* pMe)
{
		int s;
		int i;
		int height;
		int lines;
		int count;
		int fit;
		AECHAR *LTXT;				
	
		height = IDISPLAY_GetFontMetrics(pMe->pIDisplay,AEE_FONT_NORMAL,NULL,NULL);
		lines = pMe->DeviceInfo.cyScreen/height;
		count = 0;

		IDISPLAY_ClearScreen(pMe->pIDisplay);
		ISHELL_GetResSize(pMe->pIShell,THXANDHELP_RES_FILE,IDS_STRING_1001,RESTYPE_STRING,&s);
		
		LTXT = (AECHAR *)MALLOC(s);
		ISHELL_LoadResString(pMe->pIShell,THXANDHELP_RES_FILE,IDS_STRING_1001,LTXT,s);

		for(i = 0;i < lines;i++)
		{
			IDISPLAY_MeasureTextEx(pMe->pIDisplay,AEE_FONT_NORMAL,LTXT+count,-1,pMe->DeviceInfo.cxScreen,&fit);
			if(fit != -1)
			{
				IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,LTXT+count,fit,0,i*height,NULL,IDF_TEXT_TRANSPARENT);
				count+=fit;

			}
			else
			{
				IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,LTXT+count,-1,0,i*height,NULL,IDF_TEXT_TRANSPARENT);
			}
		}

				
				
		IDISPLAY_Update(pMe->pIDisplay);
		FREE(LTXT);
}
//--------------------------------------------------------------------------------------------------------------------------------
//画字符串GH
//--------------------------------------------------------------------------------------------------------------------------------

void drawgamehelp(MagicShot* pMe)
{

		int s;
		int i;
		int height;
		int lines;
		int count;
		int fit;
		AECHAR *LTXT;				
	
		height = IDISPLAY_GetFontMetrics(pMe->pIDisplay,AEE_FONT_NORMAL,NULL,NULL);
		lines = pMe->DeviceInfo.cyScreen/height;
		count = 0;

		IDISPLAY_ClearScreen(pMe->pIDisplay);
		ISHELL_GetResSize(pMe->pIShell,THXANDHELP_RES_FILE,IDS_STRING_1002,RESTYPE_STRING,&s);
		
		LTXT = (AECHAR *)MALLOC(s);
		ISHELL_LoadResString(pMe->pIShell,THXANDHELP_RES_FILE,IDS_STRING_1002,LTXT,s);

		for(i = 0;i < lines;i++)
		{
			IDISPLAY_MeasureTextEx(pMe->pIDisplay,AEE_FONT_NORMAL,LTXT+count,-1,pMe->DeviceInfo.cxScreen,&fit);
			if(fit != -1)
			{
				IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,LTXT+count,fit,0,i*height,NULL,IDF_TEXT_TRANSPARENT);
				count+=fit;

			}
			else
			{
				IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,LTXT+count,-1,0,i*height,NULL,IDF_TEXT_TRANSPARENT);
			}
		}

				
				
		IDISPLAY_Update(pMe->pIDisplay);
		FREE(LTXT);
}
//--------------------------------------------------------------------------------------------------------------------------------
//背景音乐BJ
//--------------------------------------------------------------------------------------------------------------------------------

void PlayBKMedia(MagicShot *pMe)//背景音乐
{	
				
		AEEMediaData pmd;

		if(pMe->BKMedia)
		{
			IMEDIA_Stop(pMe->BKMedia);
			IMEDIA_RegisterNotify(pMe->BKMedia,NULL,NULL);		
			IMEDIA_Release(pMe->BKMedia);
		}
		ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MEDIAMIDI,(void**)&pMe->BKMedia);
				
		pmd.clsData=MMD_FILE_NAME;
		pmd.pData=(void**)"midi.mid"; //实际的数据指针
		pmd.dwSize=0;

		IMEDIA_SetMediaData(pMe->BKMedia,&pmd); //设置MEDIA数据
		IMEDIA_RegisterNotify(pMe->BKMedia,NULL/*MediaNotify*/,pMe); //注册回调函数

		pMe->m_bIsContinue=TRUE;	//设置连续播放
		IMEDIA_Play(pMe->BKMedia);	//开始播放

						
}
//--------------------------------------------------------------------------------------------------------------------------------
//效果音乐MY
//--------------------------------------------------------------------------------------------------------------------------------
void PlayYXMedia(MagicShot *pMe,int playcase)//效果音乐
{	
				
		AEEMediaData pmd;

		if(pMe->YXMedia)
		{
			IMEDIA_Stop(pMe->YXMedia);
			IMEDIA_RegisterNotify(pMe->YXMedia,NULL,NULL);		
			IMEDIA_Release(pMe->YXMedia);
		}
		ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MEDIAMIDI,(void**)&pMe->YXMedia);
				
		pmd.clsData=MMD_FILE_NAME;
		
		switch(playcase)
		{
		case 1:
			pmd.pData=(void**)"shot.mp3"; 
			break;
		case 2:
			pmd.pData=(void**)"down.mp3"; 
			break;
		case 3:
			pmd.pData=(void**)"lost.mp3"; 
			break;
		case 4:
			pmd.pData=(void**)"normal.mp3"; 
			break;
		case 5:
			pmd.pData=(void**)"win.mp3"; 
			break;
		}
		
		pmd.dwSize=0;

		IMEDIA_SetMediaData(pMe->YXMedia,&pmd); //设置MEDIA数据
		IMEDIA_RegisterNotify(pMe->YXMedia,NULL/*MediaNotify*/,pMe); //注册回调函数

		pMe->YX_bIsContinue=FALSE;	//设置连续播放
		IMEDIA_Play(pMe->YXMedia);	//开始播放
						
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -