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

📄 fan.c

📁 brew Timer的应用! 画面的更新 等等
💻 C
📖 第 1 页 / 共 2 页
字号:
			//		sTimerApp->flag2=1;
			//	}
			//}
		  //Over(sTimerApp);
		 // SETAEERECT(&TempRect,0,0,sTimerApp->cx,sTimerApp->cy);
	//	  IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,MAKE_RGB(255,255,255));
		  //IDISPLAY_DrawRect(sTimerApp->a.m_pIDisplay,&TempRect,0xff000000,0xffffffff,250,IDF_RECT_FRAME|IDF_RECT_FILL);
		 // IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, gameOver, -1, 40, 40, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
		 // IDISPLAY_Update (sTimerApp->a.m_pIDisplay); 
		  //sTimerApp->isPaused = 1;
		  //sTimerApp->Y = 1;
		//	ISHELL_CancelTimer(sTimerApp->a.m_pIShell,TimerCB,(void *)sTimerApp) ;
		
			Over(sTimerApp);
			ISHELL_CancelTimer(sTimerApp->a.m_pIShell,TimerCB,(void *)sTimerApp) ;
			SETAEERECT(&TempRect,20,25,68,sTimerApp->cy/2);
			//SETAEERECT(&TempRect,0,0,sTimerApp->cx,sTimerApp->cy);
			//IDISPLAY_FillRect(pMe->a.m_pIDisplay,&pMe,MAKE_RGB(255,255,255));
			IDISPLAY_DrawRect(sTimerApp->a.m_pIDisplay,&TempRect,0xff000000,0xffffffff,250,IDF_RECT_FRAME|IDF_RECT_FILL);
			
			//IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL, gameOver, -1, 40, 40, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
		            IDISPLAY_Update (sTimerApp->a.m_pIDisplay); 
					sTimerApp->window = SPRITE_OVER ;
		   return TimeApp_EnterOver(sTimerApp);
		  
		  break;
//			SetTimer(IDC_TIMER,time,NULL);

		}
		
	}
/*	CMainFrame * frame=(CMainFrame *)AfxGetMainWnd();
	UINT nID,nStyle;
	int cxwidth;
	frame->m_wndStatusBar.GetPaneInfo(0,nID,nStyle,cxwidth);
	frame->m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NORMAL,cxwidth);
	CString cs;
	cs.Format("得分=%d",count);
	frame->m_wndStatusBar.SetPaneText(0,cs);*/
}
/////////////////////////////////////////////
//清除当前小方块处的数据。
////////////////////////////////////////////
void clean(TimerApp * sTimerApp)
{
	int i;
	for(i = 0;i < 4;i++)
	{
		sTimerApp->dd[i].x = sTimerApp->aa[i].x;
		sTimerApp->dd[i].y = sTimerApp->aa[i].y;
		sTimerApp->cor[sTimerApp->aa[i].x][sTimerApp->aa[i].y] = 0;
	}
}
void myDraw(TimerApp * sTimerApp)
{
	RGBVAL rgbFrameT = MAKE_RGB(120,120,120);
	RGBVAL rgbFillB = MAKE_RGB(255,255,255);
	AEERect TempRect;
	int i,j;
	int x,y;
	int cx = 9;
	int cy = 10;
	
	// 清除上一次的方块。
	for(i=0;i<4;i++)
	{
		x = sTimerApp->dd[i].y * cx;
		y = sTimerApp->dd[i].x * cy;
		SETAEERECT(&TempRect,x,y,cx,cy);
		IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,rgbFrameT);
		IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,rgbFillB);
	}

	SETAEERECT(&TempRect,95,90,40,40);
	IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,rgbFillB);

	// 显示下一个方块
	for(i=0;i<4;i++)
	{
		x = (sTimerApp->nn[i].y + 15) * 5;
		y = (sTimerApp->nn[i].x + 20) * 5;
		SETAEERECT(&TempRect,x,y,8,8);
		IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,sTimerApp->NextTempColor);
		IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,sTimerApp->NextTempColor);
	}

	//画方块,flag表明现在小方块正处在移动阶段。
	if(sTimerApp->flag)
	{
		for(i = 0;i < 4;i++)
		{
			//把相应的方块位置处(即cor[i][j])置为1,表明要加色。
			sTimerApp->cor[sTimerApp->aa[i].x][sTimerApp->aa[i].y] = 1;
		}
		
		//对整个方块区域进行搜索,有小方块处(即cor[i][j]==1)就上色。
		for(i=0;i<14;i++)
		{
			for(j=0;j<10;j++)
			{
				if(sTimerApp->cor[i][j]==1)
				{
					x = j * cx;
					y = i * cy;
					SETAEERECT(&TempRect,x,y,cx,cy);
					IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,sTimerApp->TempColor);
					IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,sTimerApp->TempColor);
				}
			}
		}
	}
	

	//表明小方块到底部了或在其它小方块的上面。
	if(sTimerApp->flag2)
	{
			for(i=0;i<14;i++)
			{
				for(j=0;j<10;j++)
				{
					//重新画方格区域。
					x = j * cx;
					y = i * cy;
					SETAEERECT(&TempRect,x,y,cx,cy);
					IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,rgbFrameT);
					IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,rgbFillB);
				}
			}

			//上色所有被标志为有小方块和停止的小方块。
			for( i=0;i<14;i++)
			{
				for(j=0;j<10;j++)
				{
					if((sTimerApp->cor[i][j]==1)||(sTimerApp->cor[i][j]==2))
					{
						x = j * cx;
						y = i * cy;
						SETAEERECT(&TempRect,x,y,cx,cy);
						IDISPLAY_DrawFrame(sTimerApp->a.m_pIDisplay,&TempRect,AEE_FT_EMPTY,sTimerApp->color[i][j]);
						IDISPLAY_FillRect(sTimerApp->a.m_pIDisplay,&TempRect,sTimerApp->color[i][j]);
					}
				}
			}
			sTimerApp->flag2=0;
	}

	IDISPLAY_Update(sTimerApp->a.m_pIDisplay);

}

/////////////////////////////////////////////////
//从顶部到底部逐一检查,下一处被填充,则把整个方
//块填充处就相应的也填充;
//或当小方块有一处到底部了,就把整个方块填充。
//如果都不是,则让方块向下移一处。
/////////////////////////////////////////////////
int dop(TimerApp * sTimerApp)
{
	int i,j,k;
	for(i = 0;i < 14;i++)
	{
		for(j = 0;j < 4;j++)
		{
			if(sTimerApp->cor[sTimerApp->aa[j].x + 1][sTimerApp->aa[j].y] == 2)
			{
				for(k = 0;k < 4;k++)
				{
					sTimerApp->cor[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = 2;
					sTimerApp->color[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = sTimerApp->TempColor ;
					sTimerApp->flag2 = 1;
				}
				return 0;
			}
		}
		for(j = 0;j < 4;j++)
		{
			if(sTimerApp->aa[j].x == 13)
			{
				for(k = 0;k < 4;k++)
				{
					sTimerApp->cor[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = 2;
					sTimerApp->color[sTimerApp->aa[k].x][sTimerApp->aa[k].y] = sTimerApp->TempColor;
					sTimerApp->flag2 = 1;
				}
				return 0;
			}
		}
		for(k = 0;k < 4;k++)
		{
			sTimerApp->aa[k].x = sTimerApp->aa[k].x + 1;
		}
	}
	return 1;
}

int round(TimerApp * sTimerApp)
{
	if (sTimerApp->index != 0)
	{
	int x,y,i,j,k;
	int temp2,temp1;
	x = 0;
	y = 0;
	j = 0;
	k = 0;
	temp1 = 0;
	temp2 = 0;
	for(i=0;i<4;i++)
	{
		sTimerApp->bb[i].x=sTimerApp->aa[i].x;
		sTimerApp->bb[i].y=sTimerApp->aa[i].y;
	}
	if(sTimerApp->index==1)
	{
		temp1=sTimerApp->aa[2].x;
		temp2=sTimerApp->aa[2].y;
		k = 2;

	}
	else
	{
		temp1=sTimerApp->aa[1].x;
		temp2=sTimerApp->aa[1].y;
		k = 1;
	}
	for(i=0;i<4;i++)
	{
		if(i!=k)
		{
			x=(sTimerApp->aa[i].x-temp1);
			y=(sTimerApp->aa[i].y-temp2);
			sTimerApp->aa[i].x=y+temp1;
			sTimerApp->aa[i].y=-x+temp2;
			if((sTimerApp->cor[sTimerApp->aa[i].x][sTimerApp->aa[i].y]==2)||(sTimerApp->aa[i].y>9)||(sTimerApp->aa[i].y<0)||(sTimerApp->aa[i].x>13)||(sTimerApp->aa[i].x<0))
			{
				for(j=0;j<4;j++)
				{
					sTimerApp->aa[j].x=sTimerApp->bb[j].x;
					sTimerApp->aa[j].y=sTimerApp->bb[j].y;
				}
				return 0;
			}
		}
	}
	}
	return 1;
}

void setIndex(TimerApp * sTimerApp)
{
	JulianType julianDate;
	uint16 sec;
	uint16 min;
	
	GET_JULIANDATE(0, &julianDate);
	
	sec = julianDate.wSecond;
	min = julianDate.wMinute;
	
	if(sTimerApp->nextindex == 10)
	{
		sTimerApp->index = sec + min;
		sTimerApp->index %= 7;
		sTimerApp->nextindex = sec;
		sTimerApp->nextindex %= 7;
	}
	else
	{
		sTimerApp->index = sTimerApp->nextindex;
		sTimerApp->nextindex = sec;
		sTimerApp->nextindex %= 7;
	}
}


void displayScore(TimerApp * sTimerApp)
{
	AECHAR scoreBuffer[20] = {0};
	AECHAR HiscoreBuffer[20] = {0};
    AECHAR LevelBuffer[20] = {0};
	AECHAR format[] = {'%', 'd', '\0'};
	if (sTimerApp->count>=sTimerApp->highScore)
	{
		sTimerApp->highScore=sTimerApp->count;
	}
	if (sTimerApp->timerValue>150)
	{
		sTimerApp->level = sTimerApp->count/200+sTimerApp->tempLevel;
	    sTimerApp->timerValue = 1000-(sTimerApp->level*150);
	}
	
	//STR_TO_WSTR(pThis->user[pThis->index].user_name, user_buf, USERNAME_LENGTH+1);
	WSPRINTF(LevelBuffer, sizeof(LevelBuffer), format, sTimerApp->level);
	WSPRINTF(scoreBuffer, sizeof(scoreBuffer), format, sTimerApp->count);
	WSPRINTF(HiscoreBuffer, sizeof(HiscoreBuffer), format, sTimerApp->highScore);
	//IDISPLAY_ClearScreen(sTimerApp->a.m_pIDisplay);
	IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, LevelBuffer, -1, 100, 20, NULL, NULL);
	IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, HiscoreBuffer, -1, 90, 40, NULL, NULL);
	IDISPLAY_DrawText(sTimerApp->a.m_pIDisplay, AEE_FONT_NORMAL, scoreBuffer, -1, 90, 60, NULL, NULL);
	IDISPLAY_Update(sTimerApp->a.m_pIDisplay);
}
void Over(TimerApp * sTimerApp)
{
	int i,j;
	//clean(sTimerApp);
	for(i=0;i<14;i++)
		{
			for(j=0;j<10;j++)
			{
				sTimerApp->cor[i][j]=0;
				sTimerApp->flag2=1;
			}
		}
	sTimerApp->count = 0;
	sTimerApp->level = 0;
	sTimerApp->tempLevel = 0;
	sTimerApp->isPaused = 1;
}

⌨️ 快捷键说明

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