📄 game_utile.c
字号:
/*********************************
* mp3_utile.c
*********************************/
#include <string.h>
#include "api.h"
#include "lcd.h"
#include "common.h"
#include "ap_common.h"
#include "display.h"
#include "ui_menu.h"
#include "ui_pop_up_list.h"
#include "ui_slider.h"
#include "res.h"
#include "res_show.h"
#include "prefer.h"
#include "mine.h"
INT16U num_set=0;
code INT8U random1[120] ={25,12,75,65,34,32,12,40,50,60,80,79,42,31,39,22,71,61,52,43,21,10,9,78,62,51,44,30,26,15,3,4,28,35,44,50,67,70,65,64,
15,28,39,48,59,66,78,53,62,77,55,47,60,18,17,13,80,57,69,38,49,61,23,15,73,49,11,15,77,63,59,12,3,11,7,5,6,33,7,9,
25,12,11,71,73,75,69,66,50,59,33,11,23,51,67,44,59,61,71,2,3,9,4,2,5,4,4,15,7,17,4,12,4,9,3,2,4,22,4,33};
extern INT8 color_ran;
INT8 rand()
{
INT8U i; //color 5 种
if(color_ran > 120)
color_ran=0;
i= random1[color_ran++];
return i;
}
char mine_handle(UINT8 key)
{
mine_show_mine();
switch(key)
{
case K_ENTER:
switch(mine.area[mine.mine_y][mine.mine_x].init_info)
{
case MINE_MINE:
mine.area[mine.mine_y][mine.mine_x].play_info = mine.area[mine.mine_y][mine.mine_x].init_info;
mine.mine_flash = FALSE;
mine_show_all_mine();
bResShowPic(E02,58,142);
mine_chk_start();
break;
case MINE_0:
mine.area[mine.mine_y][mine.mine_x].play_info = MINE_CHK;
mine_handle_null();
mine_show_cursor();
bResShowPic(E03,58,142);
if(mine_chk_win())
{
mine.mine_status = 1;
mine_chk_start();
}
break;
case MINE_1:
case MINE_2:
case MINE_3:
case MINE_4:
case MINE_5:
case MINE_6:
case MINE_7:
case MINE_8:
case MINE_9:
mine.area[mine.mine_y][mine.mine_x].play_info = mine.area[mine.mine_y][mine.mine_x].init_info;
mine_show_area(mine.mine_x, mine.mine_y, mine.area[mine.mine_y][mine.mine_x].play_info);
mine_show_cursor();
if(mine_chk_win())
{
mine.mine_status = 1;
mine_chk_start();
}
break;
}
break;
case K_DOWN:
mine_show_area(mine.mine_x, mine.mine_y, mine.area[mine.mine_y][mine.mine_x].play_info);
if (mine.mine_y)
{
mine.mine_y --;
mine_get_cur();
mine_show_cursor();
}
else
{
mine.mine_y = (MINE_HANG - 1);
mine_get_cur();
mine_show_cursor();
}
break;
case K_UP:
mine_show_area(mine.mine_x, mine.mine_y, mine.area[mine.mine_y][mine.mine_x].play_info);
if(mine.mine_y < (MINE_HANG - 1))
{
mine.mine_y ++;
mine_get_cur();
mine_show_cursor();
}
else
{
mine.mine_y = 0;
mine_get_cur();
mine_show_cursor();
}
break;
case K_LEFT:
mine_show_area(mine.mine_x, mine.mine_y, mine.area[mine.mine_y][mine.mine_x].play_info);
if(mine.mine_x)
{
mine.mine_x --;
mine_get_cur();
mine_show_cursor();
}
else
{
mine.mine_x = (MINE_LIE - 1);
mine_get_cur();
mine_show_cursor();
}
break;
case K_RIGHT:
mine_show_area(mine.mine_x, mine.mine_y, mine.area[mine.mine_y][mine.mine_x].play_info);
if(mine.mine_x < (MINE_LIE - 1))
{
mine.mine_x ++;
mine_get_cur();
mine_show_cursor();
}
else
{
mine.mine_x = 0;
mine_get_cur();
mine_show_cursor();
}
break;
case K_QUESTION:
if(mine.area[mine.mine_y][mine.mine_x].play_info == MINE_SMINE)
{
mine.area[mine.mine_y][mine.mine_x].play_info = MINE_UNSURE;
num_set ++;
mine_show_mine();
}
else if (mine.area[mine.mine_y][mine.mine_x].play_info == MINE_FULL || mine.area[mine.mine_y][mine.mine_x].play_info == MINE_UNSURE)
{
mine.area[mine.mine_y][mine.mine_x].play_info = MINE_SMINE;
num_set --;
mine_show_mine();
if(mine_chk_win())
{
mine.mine_flash = FALSE;
mine.mine_status = 1;
mine_chk_start();
}
}
mine_show_area(mine.mine_x, mine.mine_y, mine.area[mine.mine_y][mine.mine_x].play_info);
mine_show_cursor();
break;
default:
break;
}
}
int mine_chk_win()
{
char x,y;
for(y = 0; y < MINE_HANG; y++)
for(x = 0; x < MINE_LIE; x++)
{
if(mine.area[y][x].play_info == MINE_FULL)
return FALSE;
if(mine.area[y][x].play_info == MINE_UNSURE)
return FALSE;
}
return TRUE;
}
void mine_init_area()
{
char i,j;
for(i = 0; i < MINE_HANG; i++)
for(j = 0; j < MINE_LIE; j ++)
{
mine.area[i][j].init_info = MINE_0;
mine.area[i][j].play_info = MINE_FULL;
}
}
void mine_init_mine()
{
mine.mine_time = 0;
mine.mine_cur = 0;
mine_get_xy();
mine_init_area();
//show all mines
mine_creat_mine();
//load mine to area
mine_load_mine();
//load mine num area
mine_load_num();
num_set = mine.mine_num;
mine.mine_cur = 0;
bResShowPic(MINE_BCK,0,0);
bResShowPic(E01,58,142);
mine_show_mine();
mine_show_time();
mine_get_xy();
}
void mine_creat_mine()
{
char i,j;
char num;
//pint_debug(mine.mine_num);
for(i = 0; i < mine.mine_num; i ++)
{
while(1)
{
num = (char)rand();
if (num >= MINE_HANG * MINE_LIE)
{
continue;
}
for (j = 0; j < i; j++)
{
if (mine.mine_area[j] == num)
{
break;
}
}
if (j == i)
{
mine.mine_area[i] = num;
break;
}
}
}
}
void mine_load_mine()
{
char i;
for(i = 0; i < mine.mine_num; i++)
{
mine.mine_cur = mine.mine_area[i];
//pint_debug(mine.mine_cur);
mine_get_xy();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -