game_utile.c

来自「智原mp3 SDK 开发包 与巨力 有mp3 wma ogg decoder」· C语言 代码 · 共 527 行 · 第 1/2 页

C
527
字号
        	mine.area[mine.mine_y][mine.mine_x].init_info = MINE_MINE;
    	}
}

void mine_load_num()
{
    	char i;
    	for(i = 0; i < mine.mine_num; i++)
    	{
        	mine.mine_cur = mine.mine_area[i];
        	mine_get_xy();

        	//chek left
        	if(mine.mine_x)
        	{
            		if(mine.area[mine.mine_y][mine.mine_x - 1].init_info != MINE_MINE)
            		{
                		mine.area[mine.mine_y][mine.mine_x - 1].init_info ++;
            		}
        	}
        	//chek right
        	if(mine.mine_x < (MINE_LIE - 1))
        	{
            		if(mine.area[mine.mine_y][mine.mine_x + 1].init_info != MINE_MINE)
            		{
                		mine.area[mine.mine_y][mine.mine_x + 1].init_info ++;
            		}
        	}
        	//chek down
        	if(mine.mine_y < (MINE_HANG - 1))
        	{
            		if(mine.area[mine.mine_y + 1][mine.mine_x].init_info != MINE_MINE)
            		{
                		mine.area[mine.mine_y + 1][mine.mine_x].init_info ++;
            		}
        	}
        	//chek UP
        	if(mine.mine_y)
        	{
            		if(mine.area[mine.mine_y - 1][mine.mine_x].init_info != MINE_MINE)
            		{
                		mine.area[mine.mine_y - 1][mine.mine_x].init_info ++;
            		}
        	}


        	//chek left UP DOWN
        	if (mine.mine_x)
        	{
            		//check up
            		if(mine.mine_y)
            		{
                		if (mine.area[mine.mine_y - 1][mine.mine_x - 1].init_info != MINE_MINE)
                		{
                    			mine.area[mine.mine_y - 1][mine.mine_x - 1].init_info ++;
                		}    
            		}
            		//check down
            		if(mine.mine_y < (MINE_HANG - 1))
            		{
                		if(mine.area[mine.mine_y + 1][mine.mine_x - 1].init_info != MINE_MINE)
                		{
                    			mine.area[mine.mine_y + 1][mine.mine_x - 1].init_info ++;
                		}    
            		}
        	}
        	//chek right UP DOWN
        	if(mine.mine_x < (MINE_LIE - 1))
        	{
           		//check up
            		if(mine.mine_y)
            		{
                		if(mine.area[mine.mine_y - 1][mine.mine_x + 1].init_info != MINE_MINE)
                		{
                    			mine.area[mine.mine_y - 1][mine.mine_x + 1].init_info ++;
                		}    
            		}
            		//check down
            		if(mine.mine_y < (MINE_HANG - 1))
            		{
                		if (mine.area[mine.mine_y + 1][mine.mine_x + 1].init_info != MINE_MINE)
                		{
                    			mine.area[mine.mine_y + 1][mine.mine_x + 1].init_info ++;
                		}    
            		}
        	}
    	}
}

void mine_handle_null()
{
    	char x,y;

    	int status;

    	status = TRUE;

    	while (status)
    	{
        	status = FALSE;
        	for (y = 0; y < MINE_HANG; y++)
            		for (x = 0; x < MINE_LIE; x++)
            		{
                		if(mine.area[y][x].play_info == MINE_CHK)
                		{    
                    			if(mine_handle_null_area(x, y))
                    			{
                        			status = TRUE;
                    			}
                		}
            		}
    	}
}

int mine_handle_null_area(char x, char y)
{
    	int status;
    	
    	mine.area[y][x].play_info = MINE_0;
    	mine_show_area(x, y, mine.area[y][x].play_info);
    	//chek left
    	if (x)
    	{
        	if(mine.area[y][x - 1].init_info == MINE_0)
        	{
            		if(mine.area[y][x - 1].play_info == MINE_FULL || mine.area[y][x - 1].play_info == MINE_UNSURE)
            		{
                		mine.area[y][x - 1].play_info = MINE_CHK;
                		status = TRUE;	
            		}
        	}
        	else if (mine.area[y][x - 1].init_info >= MINE_1 && mine.area[y][x - 1].init_info <= MINE_9 )
        	{
            		if(mine.area[y][x - 1].play_info == MINE_FULL || mine.area[y][x - 1].play_info == MINE_UNSURE)
            		{
                		mine.area[y][x - 1].play_info = mine.area[y][x - 1].init_info;
                		mine_show_area(x - 1, y, mine.area[y][x - 1].play_info);
            		}
        	}
    	}
    	//chek right
    	if(x < (MINE_LIE - 1))
    	{
        	if(mine.area[y][x + 1].init_info == MINE_0)
        	{
            		if(mine.area[y][x + 1].play_info == MINE_FULL || mine.area[y][x + 1].play_info == MINE_UNSURE)
            		{
                		mine.area[y][x + 1].play_info = MINE_CHK;
                		status = TRUE;
            		}
        	}
        	else if(mine.area[y][x + 1].init_info >= MINE_1 && mine.area[y][x + 1].init_info <= MINE_9 )
        	{
            		if(mine.area[y][x + 1].play_info == MINE_FULL || mine.area[y][x + 1].play_info == MINE_UNSURE)
            		{
                		mine.area[y][x + 1].play_info = mine.area[y][x + 1].init_info;
                		mine_show_area(x + 1, y, mine.area[y][x + 1].play_info);
            		}
        	}
    	}
    	//chek down
    	if (y < (MINE_HANG - 1))
    	{
        	if (mine.area[y + 1][x].init_info == MINE_0)
        	{
            		if(mine.area[y + 1][x].play_info == MINE_FULL || mine.area[y + 1][x].play_info == MINE_UNSURE)
            		{
                		mine.area[y + 1][x].play_info = MINE_CHK;
                		status = TRUE;
            		}
        	}
        	else if (mine.area[y + 1][x].init_info >= MINE_1 && mine.area[y + 1][x].init_info <= MINE_9 )
        	{
            		if(mine.area[y + 1][x].play_info == MINE_FULL || mine.area[y + 1][x].play_info == MINE_UNSURE)
            		{
                		mine.area[y + 1][x].play_info = mine.area[y + 1][x].init_info;
                		mine_show_area(x, y + 1, mine.area[y + 1][x].play_info);
            		}
        	}
    	}
    	//chek UP
    	if (y)
    	{
        	if (mine.area[y - 1][x].init_info  == MINE_0)
        	{
            		if (mine.area[y - 1][x].play_info == MINE_FULL || mine.area[y - 1][x].play_info == MINE_UNSURE)
            		{
                		mine.area[y - 1][x].play_info = MINE_CHK;
                		status = TRUE;
            		}
        	}
        	else if (mine.area[y - 1][x].init_info >= MINE_1 && mine.area[y - 1][x].init_info <= MINE_9 )
        	{
            		if (mine.area[y - 1][x].play_info == MINE_FULL || mine.area[y - 1][x].play_info == MINE_UNSURE)
            		{
                		mine.area[y - 1][x].play_info = mine.area[y - 1][x].init_info;
                		mine_show_area(x, y - 1, mine.area[y - 1][x].play_info);
            		}
        	}
    	}

    	//chek left UP DOWN
    	if (x)
    	{
        	//check up
        	if (y)
        	{
            		if (mine.area[y - 1][x - 1].init_info >= MINE_1 && mine.area[y - 1][x - 1].init_info <= MINE_9 )
            		{
                		if (mine.area[y - 1][x - 1].play_info == MINE_FULL || mine.area[y - 1][x - 1].play_info == MINE_UNSURE)
                		{
                    			mine.area[y - 1][x - 1].play_info = mine.area[y - 1][x - 1].init_info;
                    			mine_show_area(x - 1, y - 1, mine.area[y - 1][x - 1].play_info);
                		}
            		}    
        	}
        	//check down
        	if (y < (MINE_HANG - 1))
        	{
            		if (mine.area[y + 1][x - 1].init_info >= MINE_1 && mine.area[y + 1][x - 1].init_info <= MINE_9 )
            		{
                		if (mine.area[y + 1][x - 1].play_info == MINE_FULL || mine.area[y + 1][x - 1].play_info == MINE_UNSURE)
                		{
                    			mine.area[y + 1][x - 1].play_info = mine.area[y + 1][x - 1].init_info;
                    			mine_show_area(x - 1, y + 1, mine.area[y + 1][x - 1].play_info);
                		}
            		}
        	}
    	}
    	//chek right UP DOWN
    	if (x < (MINE_LIE - 1))
    	{
        	//check up
        	if (y)
        	{
            		if (mine.area[y - 1][x + 1].init_info >= MINE_1 && mine.area[y - 1][x + 1].init_info <= MINE_9 )
            		{
                		if (mine.area[y - 1][x + 1].play_info == MINE_FULL || mine.area[y - 1][x + 1].play_info == MINE_UNSURE)
                		{
                    			mine.area[y - 1][x + 1].play_info = mine.area[y - 1][x + 1].init_info;
                    			mine_show_area(x + 1, y - 1, mine.area[y - 1][x + 1].play_info);
                		}
            		}    
        	}
        	//check down
        	if (y < (MINE_HANG - 1))
        	{
            		if (mine.area[y + 1][x + 1].init_info >= MINE_1 && mine.area[y + 1][x + 1].init_info <= MINE_9 )
            		{
                		if (mine.area[y + 1][x + 1].play_info == MINE_FULL || mine.area[y + 1][x + 1].play_info == MINE_UNSURE)
                		{
                    			mine.area[y + 1][x + 1].play_info = mine.area[y + 1][x + 1].init_info;
                    			mine_show_area(x + 1, y + 1, mine.area[y + 1][x + 1].play_info);
                		}
            		}    
        	}
    	}
    	return status;
}


    

⌨️ 快捷键说明

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