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

📄 game.c

📁 以BREW为开发平台,以C为开发语言的大鱼吃小鱼的游戏,容易理解思路简单
💻 C
📖 第 1 页 / 共 3 页
字号:
		BigFishTraval(pMe);
		



		
	pMe->m_Sprite[1].x=pMe->fish1_x;
	pMe->m_Sprite[1].y=pMe->fish1_y;


	pMe->m_Sprite[2].x=pMe->fish2_x;
	pMe->m_Sprite[2].y=pMe->fish2_y;

	
	pMe->m_Sprite[3].x=pMe->fish3_x;
	pMe->m_Sprite[3].y=pMe->fish3_y;

	pMe->m_Sprite[4].x=pMe->bigfish_x;
	pMe->m_Sprite[4].y=pMe->bigfish_y;


//下面的if语句功能是,使3条小鱼在游过屏幕后再重新返回屏幕右面,并且改变纵坐标
	if(pMe->fish1_x<-30)
	{
		pMe->fish1_x=150;
		pMe->fish1_y+=30;
		if(pMe->fish1_y>160)
			pMe->fish1_y=40;
	
	}

	if(pMe->fish2_x<-30)
	{
		pMe->fish2_x=150;
		pMe->fish2_y+=50;
		if(pMe->fish2_y>160)
			pMe->fish2_y=40;
		if(pMe->fish2_y<40)
			pMe->fish2_y=40;
	}

	if(pMe->fish3_x<-30)
	{
		pMe->fish3_x=150;
		pMe->fish3_y+=20;
		if(pMe->fish3_y>160)
			pMe->fish3_y=40;
	}

	//判断自己控制的小鱼是否和目标小鱼重合,如果重合,那么小鱼消失,积分+1 或者+2或者+3

	if(
		(pMe->m_Sprite[0].x>pMe->m_Sprite[1].x-25)&&
		(pMe->m_Sprite[0].x<pMe->m_Sprite[1].x+25)&&
		(pMe->m_Sprite[0].y>pMe->m_Sprite[1].y-20)&&
		(pMe->m_Sprite[0].y<pMe->m_Sprite[1].y+20)&&
		pMe->IsNewLife!=1
	   )
	{	
		pMe->m_Sprite[0].unSpriteIndex=12;
		pMe->m_Sprite[5].unSpriteIndex=11;
	    pMe->fish1_x=150;
		pMe->fish1_y+=20;
		pMe->m_Sprite[1].x=pMe->fish1_x;
		pMe->m_Sprite[1].y=pMe->fish1_y;
		pMe->score+=1;
		
	}



		if(
		(pMe->m_Sprite[0].x>pMe->m_Sprite[2].x-25)&&
		(pMe->m_Sprite[0].x<pMe->m_Sprite[2].x+25)&&
		(pMe->m_Sprite[0].y>pMe->m_Sprite[2].y-20)&&
		(pMe->m_Sprite[0].y<pMe->m_Sprite[2].y+20)&&
		pMe->IsNewLife!=1
	   )
	{	
		pMe->m_Sprite[0].unSpriteIndex=12;
		pMe->m_Sprite[5].unSpriteIndex=11;
	    pMe->fish2_x=150;
		pMe->fish2_y+=50;
		pMe->m_Sprite[2].x=pMe->fish2_x;
		pMe->m_Sprite[2].y=pMe->fish2_y;
		pMe->score+=2;

		
	}


		
		if(
		(pMe->m_Sprite[0].x>pMe->m_Sprite[3].x-25)&&
		(pMe->m_Sprite[0].x<pMe->m_Sprite[3].x+25)&&
		(pMe->m_Sprite[0].y>pMe->m_Sprite[3].y-20)&&
		(pMe->m_Sprite[0].y<pMe->m_Sprite[3].y+20)&&
		pMe->IsNewLife!=1
		  )
	{	
		pMe->m_Sprite[0].unSpriteIndex=12;
		pMe->m_Sprite[5].unSpriteIndex=11;
	    pMe->fish3_x=150;
		pMe->fish3_y+=30;
		pMe->m_Sprite[3].x=pMe->fish3_x;
		pMe->m_Sprite[3].y=pMe->fish3_y;
		pMe->score+=3;
		
	}


		//如果小鱼左上角坐标碰到大鱼嘴附近的区域所程序做的处理
		if(
		(pMe->m_Sprite[0].x>pMe->m_Sprite[4].x-20)&&
		(pMe->m_Sprite[0].x<pMe->m_Sprite[4].x+42)&&
		(pMe->m_Sprite[0].y>pMe->m_Sprite[4].y+20)&&
		(pMe->m_Sprite[0].y<pMe->m_Sprite[4].y+55)&&
		pMe->IsNewLife!=1
		//(pMe->m_Sprite[0].y>pMe->m_Sprite[2].y-20)&&
		//	(pMe->m_Sprite[0].y<pMe->m_Sprite[2].y+20)
			)
	{	
			if(pMe->score<50)
			{
				
				pMe->m_Sprite[4].unSpriteIndex=10;
				pMe->life=pMe->life-1;
				if(pMe->life==2)
				{
					pMe->m_Sprite[8].unSpriteSize=SPRITE_SIZE_END;
					pMe->m_Sprite[0].x=40;
					pMe->m_Sprite[0].y=0;
				    pMe->IsNewLife=1;
				}

				if(pMe->life==1)
				{
					pMe->m_Sprite[7].unSpriteSize=SPRITE_SIZE_END;
					pMe->m_Sprite[0].x=40;
					pMe->m_Sprite[0].y=0;
				    pMe->IsNewLife=1;
				}
				if(pMe->life==0)
				{
					pMe->m_Sprite[6].unSpriteSize=SPRITE_SIZE_END;
					pMe->m_Sprite[0].x=40;
					pMe->m_Sprite[0].y=0;
				    pMe->IsNewLife=1;
				}

				if(pMe->life<0)
				{
				AEEImageInfo imageInfo;
				ISOUNDPLAYER_Release(pMe->pISoundPlayer);  //释放声音接口
				IDISPLAY_ClearScreen(pMe->pIDisplay);
	    		pMe->pIImage=ISHELL_LoadImage(pMe->pIShell,"eat.bmp");
				IIMAGE_GetInfo(pMe->pIImage,&imageInfo);
				IIMAGE_Draw(pMe->pIImage,0,0);
				
				SNPRINTF(pMe->show_score, sizeof(pMe->show_score), "%03u", pMe->score);//将整型数据转换成窄字符串
				STRTOWSTR(pMe->show_score,sscore,50);								   //将窄字符串转换成宽字符串
				//DBGPRINTF(pMe->show_score);
				IDISPLAY_DrawText(
						pMe->pIDisplay,
						AEE_FONT_NORMAL,
						sscore,
						-1,
						96,
						145,
						NULL,
						NULL
									);
				IDISPLAY_Update(pMe->pIDisplay);
				IIMAGE_Release(pMe->pIImage);
				CALLBACK_Cancel(&pMe->cbtime);  
				return;
				}
				

				//取消计时器
				//ISHELL_CancelTimer(pMe->pIShell,NULL,pMe);
				//	IDISPLAY_EraseRgn (pMe->pIDisplay, 0,0, pMe->DeviceInfo.cxScreen, 16 );
			}
			if(pMe->score>=50)
			{
				pMe->m_Sprite[5].unSpriteIndex=11;
				pMe->bigfish_x=(-1000);
				pMe->bigfish_y=(-5);
				pMe->m_Sprite[4].x=pMe->bigfish_x;
				pMe->m_Sprite[4].y=pMe->bigfish_y;
				pMe->score+=10;
			}
			
	}
		

		//用IsNewLife标记是否是小鱼被吃到后  新的一条命  如果是  小鱼 从上面渐渐下到y为90的位置
		if(pMe->IsNewLife==1)
		{
			if(pMe->m_Sprite[0].y<50)
					{
						pMe->m_Sprite[0].y=pMe->m_Sprite[0].y+2;
						pMe->m_Sprite[0].unSpriteIndex=10;
					}
			if(pMe->m_Sprite[0].y>=50)
				pMe->IsNewLife=0;
		}



		//过关
		if(pMe->score>=100)       
		{
			AEEImageInfo imageInfo;
			ISOUNDPLAYER_Release(pMe->pISoundPlayer);  //释放声音接口

			IDISPLAY_ClearScreen(pMe->pIDisplay);

	    	pMe->pIImage=ISHELL_LoadImage(pMe->pIShell,"goldfish.bmp");
				IIMAGE_GetInfo(pMe->pIImage,&imageInfo);
				IIMAGE_Draw(pMe->pIImage,0,0);



			IDISPLAY_Update(pMe->pIDisplay);
			IIMAGE_Release(pMe->pIImage);
			CALLBACK_Cancel(&pMe->cbtime);
			return;
		}
	
/*	for(i;i<3;i++)
	{
	pMe->m_Sprite[i].unComposite=COMPOSITE_KEYCOLOR;
	pMe->m_Sprite[i].unLayer=SPRITE_LAYER_0;
	pMe->m_Sprite[i].unSpriteIndex=i;
	pMe->m_Sprite[i].unSpriteSize=SPRITE_SIZE_32X32;
	pMe->m_Sprite[i].unTransform=0;
	pMe->m_Sprite[i].x=i+5;
	pMe->m_Sprite[i].y=i+60;
	}*/
	//pMe->m_Sprite[4].unSpriteSize=SPRITE_SIZE_END;
	
	
		//pMe->pshow_score=pMe->show_score[0];

	//	WWRITELONGEX (pMe->show_score, pMe->score, 3, &n ) ;
        SNPRINTF(pMe->show_score, sizeof(pMe->show_score), "%03u", pMe->score);//将整型数据转换成窄字符串
        STRTOWSTR(pMe->show_score,sscore,50);								   //将窄字符串转换成宽字符串
		//DBGPRINTF(pMe->show_score);
		//IDISPLAY_EraseRgn (pMe->pIDisplay, 0,0, pMe->DeviceInfo.cxScreen, 16 ); 
		IDISPLAY_DrawText(
						pMe->pIDisplay,
						AEE_FONT_NORMAL,
						score,
						-1,
						70,
						3,
						NULL,
						NULL
					);

		IDISPLAY_DrawText(
						pMe->pIDisplay,
						AEE_FONT_NORMAL,
						sscore,
						-1,
						105,
						3,
						NULL  ,
						NULL
					);

				IDISPLAY_Update(pMe->pIDisplay);
				ISPRITE_DrawSprites(pMe->pISprite,pMe->m_Sprite);//画精灵


				if(pMe->m_Sprite[0].unTransform!=0)
				 {pMe->m_Sprite[0].unTransform=0;}

				if(pMe->m_Sprite[5].unTransform!=0)
				pMe->m_Sprite[5].unTransform=0;

		
}





void menu(game * pMe)		//软菜单
{
		    		
			CtlAddItem ai;
		
			
			
			ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SOFTKEYCTL,(void **)&pMe->pIMenuCtl);
			ai.dwData = 2;
			ai.pszResImage=GAMEE_RES_FILE;
			ai.pszResText=GAMEE_RES_FILE;
			ai.wItemID = IDS_STRING_1003;
			ai.wText=IDS_STRING_1003;
	
			ai.wText=NULL;
			ai.wImage=NULL;
			IMENUCTL_AddItem(pMe->pIMenuCtl,GAMEE_RES_FILE,IDS_STRING_1001,IDS_STRING_1001,NULL,0);
			IMENUCTL_AddItem(pMe->pIMenuCtl,GAMEE_RES_FILE,IDS_STRING_1002,IDS_STRING_1002,NULL,1);
			IMENUCTL_AddItem(pMe->pIMenuCtl,GAMEE_RES_FILE,IDS_STRING_1003,IDS_STRING_1003,NULL,1);
			
			
			IMENUCTL_EnableCommand(pMe->pIMenuCtl,TRUE);
			//IMENUCTL_SetRect(pMe->pIMenuCtl,&rect);
			IMENUCTL_SetActive(pMe->pIMenuCtl,TRUE);
}





void  file(game *pMe)			//帮助文档
{
	AECHAR * pBuffer;
	uint32 resSize;
	int fontHeight;
	int pageLine;
	int i;
	int fitNumber;
	int count;
		
	ISHELL_GetResSize(pMe->pIShell,GAMEE_RES_FILE,IDS_STRING_1004,RESTYPE_STRING,&resSize);//获得资源的尺寸
	pBuffer=(AECHAR *)MALLOC(resSize);
	ISHELL_LoadResString(pMe->pIShell,GAMEE_RES_FILE,IDS_STRING_1004,pBuffer,resSize);
	IDISPLAY_SetColor(pMe->pIDisplay,CLR_USER_TEXT,MAKE_RGB(0,255,255));//设置字体颜色
	IDISPLAY_SetColor(pMe->pIDisplay,CLR_USER_BACKGROUND,MAKE_RGB(0,0,0));
	fontHeight=IDISPLAY_GetFontMetrics(pMe->pIDisplay,AEE_FONT_NORMAL,NULL,NULL);
	pageLine=pMe->DeviceInfo.cyScreen/fontHeight;
	count=0;					
	for(i=0;i<pageLine;i++)
	{
		IDISPLAY_MeasureTextEx(pMe->pIDisplay,AEE_FONT_NORMAL,pBuffer+count,-1,pMe->DeviceInfo.cxScreen,&fitNumber);
		if(fitNumber!=-1)
		{
			IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,pBuffer+count,fitNumber,0,i*fontHeight,NULL,IDF_TEXT_TRANSPARENT);
			count+=fitNumber;
		}
		else
		{
			IDISPLAY_DrawText(pMe->pIDisplay,AEE_FONT_NORMAL,pBuffer+count,-1,0,i*fontHeight,NULL,IDF_TEXT_TRANSPARENT);
		}
	}
		
	IDISPLAY_Update(pMe->pIDisplay);
	FREE(pBuffer);

}





	void BigFishTraval(game *pMe)		//设置大鱼轨迹
{
		if(pMe->flag==0)
		{
		pMe->m_Sprite[4].unTransform=0;
			pMe->bigfish_x-=5;
			if(pMe->bigfish_x<=(-100))
			{
					
				pMe->bigfish_y+=50;
				if(pMe->bigfish_y>138)
				{
					pMe->bigfish_y=-5;
				}
				pMe->flag=1;
			}
		}

		if(pMe->flag==1)
		{
			pMe->m_Sprite[4].unTransform=SPRITE_FLIP_Y;
			pMe->bigfish_x+=5;
			if(pMe->bigfish_x>=100)
			{
				pMe->bigfish_y+=50;
				if(pMe->bigfish_y>138)
				{
					pMe->bigfish_y=-5;
				}
				pMe->flag=0;
			}
		}
}



⌨️ 快捷键说明

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