📄 menu.c
字号:
#include <CsAgb.h>
#include <graph.h>
#include <Qgraph.h>
#include <rb_stdio.h>
#define mVRAM (u16 *) 0x06000000
#define bk_co RGB(0,15,5)
extern n_box(u8 xp,u8 yp,u8 xp1,u8 yp1,u16 co,u16 bg);
//extern u16 logo_dat[];
extern void show_text(char *tit,char *txt);
extern void wait(u32 count);
const char redboy_help[]=
"欢迎使用REDBOY FOR GBA
=============================
文件管理器操作说明:
A :进入目录或者打开/选定文件
B :返回上级目录
R :删除文件/目录密码
L :文件/目录加锁
UP :上一文件/目录
DOWN :下一文件/目录
LEFT :上一页文件/目录列表
RIGHT :下一页文件/目录列表
START :清除密码记录
如果是浏览图片,可以按R/L直接浏览上/下一图片.
==============================
文本浏览器操作说明:
R+L :帮助说明
其它操作说明请进入帮助说明中查看
==============================
菜单操作说明:
UP/LEFT :上一菜单项目
DOWN/RIGHT :下一菜单项目
A :选定反显菜单功能
B :取消菜单
==============================
如何输入密码:
A :输入
B/L :删除
R :结束输入
==============================
如果你在使用中还有其它的疑问,请访问我的网页:
http://202.113.13.169/site/redboy/gba/
bpns 3005-07-10
";
const char main_items[8][20]={
"文件管理器",
"RBASIC编程",
"英语学习",
"游戏娱乐",
"数值计算",
"文本编辑",
"备忘录",
"帮助说明"
};
const char calc_items[4][15]={"1.科学计算","2.公式计算","3.统计运算","4.积分运算"};//计算类
const char file_items[4][15]={"1.开机代码","2.储备管理","3.按键延时","4.密码设置"};
const char engl_items[3][15]={"1.英汉詞典","2.汉语词典","3.词库设置"};
const char game_items[4][15]={"1.俄罗斯方块","2.五子棋","3.扑克游戏","4.推箱子"};
const char card_items[3][15]={"1.通讯录","2.万年历","3.常用资料"};
void wait_key()
{
while (1)
{
CS_ReadKey();
if (CS_IsAnyKeyDown(KEY_ALL)) break;
}
}
int menu(char *items,int n)
{
u8 start=1;
int i;
int yp=(160-(n+1)*15)/2;
int sel=1,old=0,done=1;
r_box(70,yp,170,yp+(n+1)*15+2,RGB(24,15,13),1);
Q_box(71,yp+1,169,yp+(n+1)*15-1+2,RGB(30,30,30));
for (i=0;i<=n;i++) Q_box(72,yp+2+i*15,168,yp+15+i*15,RGB(24,15,13));
cwrite(75+6,yp+4,0,">>菜单选项<<");
cwrite(74+6,yp+3,RGB(30,30,30),">>菜单选项<<");
for (i=1;i<=n;i++)
{
cwrite(75,yp+4+15*i,0,items+(i-1)*15);
cwrite(74,yp+3+15*i,RGB(30,30,30),items+(i-1)*15);
}
while (1)
{
if (start) {start=0;CS_ReadKey();} else readkey();
if (CS_IsKeyDown(KEY_UP)||CS_IsKeyDown(KEY_LEFT))
{
if (sel>1) sel--;
else sel=n;
done=1;
}
else if (CS_IsKeyDown(KEY_DOWN)||CS_IsKeyDown(KEY_RIGHT))
{
if (sel<n) sel++;
else sel=1;
done=1;
}
else if (CS_IsKeyDown(KEY_B))
{
//main_redraw(70,yp,170,yp+(n+1)*15+2);
return 0;
}
else if (CS_IsKeyDown(KEY_A))
{
//main_redraw(70,yp,170,yp+(n+1)*15+2);
return sel;
}
if (done)
{
done=0;
if (old)
{
Q_box(72,yp+2+old*15,168,yp+15+old*15,RGB(24,15,13));
cwrite(75,yp+4+15*old,0,items+(old-1)*15);
cwrite(74,yp+3+15*old,RGB(30,30,30),items+(old-1)*15);
}
Q_box(72,yp+2+sel*15,168,yp+15+sel*15,RGB(13,15,24));
cwrite(75,yp+4+15*sel,0,items+(sel-1)*15);
cwrite(74,yp+3+15*sel,RGB(30,30,13),items+(sel-1)*15);
old=sel;
}
}
}
void file_menu()
{
int sel=menu(file_items,4);
switch (sel)
{
case 1://开机代码
autorun_select();
redraw_desk();
break;
case 2://储备管理
rb_sv_files();
redraw_desk();
break;
case 3://按键延时
set_keydelay();
redraw_desk();
break;
case 4://密码设置
chg_apsw();
redraw_desk();
break;
default:
cover_desk();
break;
}
}
void calc_menu()
{
int sel=menu(calc_items,4);
switch (sel)
{
case 1://
calculator();
redraw_desk();
break;
case 2://
formula();
redraw_desk();
break;
default:
cover_desk();
break;
}
}
void eng_menu()
{
int sel=menu(engl_items,3);
switch (sel)
{
case 1://
eng_dic();
redraw_desk();
break;
case 2://
cdic();
redraw_desk();
break;
case 3:
dic_select();
redraw_desk();
break;
default:
cover_desk();
}
}
void game_menu()
{
int sel=menu(game_items,4);
switch(sel)
{
case 2://
fivechee();
redraw_desk();
break;
case 1://
fanggame();
redraw_desk();
break;
//case 3://
//puke();
//break;
case 4:
box_game();
redraw_desk();
break;
default://
cover_desk();
return;
}
}
void card_menu()
{
int sel=menu(card_items,3);
switch (sel)
{
case 1:
card_main();
redraw_desk();
break;
case 2://
calendar();
redraw_desk();
break;
default:
cover_desk();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -