pip_menu.c
来自「bbs server linux平台下软件源码」· C语言 代码 · 共 902 行 · 第 1/2 页
C
902 行
/*---------------------------------------------------------------------------*//*主画面和选单 *//*---------------------------------------------------------------------------*/#include <time.h>#include "bbs.h"#include "pip.h"#include "site.h"extern struct chicken d;extern time_t start_time;extern time_t lasttime;//#define getdata(a, b, c , d, e, f, g) getdata(a,b,c,d,e,f,NULL,g)#ifndef MAPLE//extern char BBS_FULL_NAME[];#endif // END MAPLEconst char *menuname[8][2] = { {" ", "[1;44;37m 选单 [46m[1]基本 [2]逛街 [3]修行 [4]玩乐 [5]打工 [6]特殊 [7]系统 [Q]离开 [0m"}, {" ", "[1;44;37m 基本选单 [46m[1]饮食 [2]清洁 [3]休息 [4]亲亲 [Q]跳出: [m"}, {"[1;44;37m 逛街 [46m【日常用品】[1]便利商店 [2]星空药铺 [3]夜里书局 [m", "[1;44;37m 选单 [46m【武器百货】[A]头部武器 [B]右手武器 [C]左手武器 [D]身体武器 [E]脚部武器 [m"}, {"[1;44;37m 修行 [46m[A]科学(%d) [B]诗词(%d) [C]神学(%d) [D]军学(%d) [E]剑术(%d) [m", "[1;44;37m 选单 [46m[F]格斗(%d) [G]魔法(%d) [H]礼仪(%d) [I]绘画(%d) [J]舞蹈(%d) [Q]跳出: [m"}, {" ", "[1;44;37m 玩乐选单 [46m[1]散步 [2]运动 [3]约会 [4]猜拳 [5]旅游 [6]郊外 [7]唱歌 [Q]跳出: [m"}, {"[1;44;37m 打工 [46m[A]家事 [B]保姆 [C]旅馆 [D]农场 [E]餐厅 [F]教堂 [G]地摊 [H]伐木 [m", "[1;44;37m 选单 [46m[I]美发 [J]猎人 [K]工地 [L]守墓 [M]家教 [N]酒家 [O]酒店 [P]夜总会 [Q]跳出[m"}, {" ", "[1;44;37m 特殊选单 [46m[1]星空医院 [2]媚登峰~ [3]战斗修行 [4]拜访朋友 [5]总司令部 [Q]跳出[m"}, {" ", "[1;44;37m 系统选单 [46m[1]详细资料 [2]小鸡自由 [3]特别服务 [4]储存进度 [5]读取进度 [Q]跳出[m"}};/*主选单*/int pip_basic_menu(), pip_store_menu(), pip_practice_menu();int pip_play_menu(), pip_job_menu(), pip_special_menu(), pip_system_menu();const static struct pipcommands pipmainlist[] = { pip_basic_menu, '1', '1', pip_store_menu, '2', '2', pip_practice_menu, '3', '3', pip_play_menu, '4', '4', pip_job_menu, '5', '5', pip_special_menu, '6', '6', pip_system_menu, '7', '7', NULL, '\0', '\0'};/*基本选单*/int pip_basic_feed(), pip_basic_takeshower(), pip_basic_takerest(), pip_basic_kiss();const static struct pipcommands pipbasiclist[] = { pip_basic_feed, '1', '1', pip_basic_takeshower, '2', '2', pip_basic_takerest, '3', '3', pip_basic_kiss, '4', '4', NULL, '\0', '\0'};/*商店选单*/int pip_store_food(), pip_store_medicine(), pip_store_other();int pip_store_weapon_head(), pip_store_weapon_rhand(), pip_store_weapon_lhand();int pip_store_weapon_body(), pip_store_weapon_foot();const static struct pipcommands pipstorelist[] = { pip_store_food, '1', '1', pip_store_medicine, '2', '2', pip_store_other, '3', '3', pip_store_weapon_head, 'a', 'A', pip_store_weapon_rhand, 'b', 'B', pip_store_weapon_lhand, 'c', 'C', pip_store_weapon_body, 'd', 'D', pip_store_weapon_foot, 'e', 'E', NULL, '\0', '\0'};/*修行选单*/int pip_practice_classA(), pip_practice_classB(), pip_practice_classC();int pip_practice_classD(), pip_practice_classE(), pip_practice_classF();int pip_practice_classG(), pip_practice_classH(), pip_practice_classI();int pip_practice_classJ();const static struct pipcommands pippracticelist[] = { pip_practice_classA, 'a', 'A', pip_practice_classB, 'b', 'B', pip_practice_classC, 'c', 'C', pip_practice_classD, 'd', 'D', pip_practice_classE, 'e', 'E', pip_practice_classF, 'f', 'F', pip_practice_classG, 'g', 'G', pip_practice_classH, 'h', 'H', pip_practice_classI, 'i', 'I', pip_practice_classJ, 'j', 'J', NULL, '\0', '\0'};/*玩乐选单*/int pip_play_stroll(), pip_play_sport(), pip_play_date(), pip_play_guess();int pip_play_outing(), pip_play_kite(), pip_play_KTV();const static struct pipcommands pipplaylist[] = { pip_play_stroll, '1', '1', pip_play_sport, '2', '2', pip_play_date, '3', '3', pip_play_guess, '4', '4', pip_play_outing, '5', '5', pip_play_kite, '6', '6', pip_play_KTV, '7', '7', NULL, '\0', '\0'};/*打工选单*/int pip_job_workA(), pip_job_workB(), pip_job_workC(), pip_job_workD();int pip_job_workE(), pip_job_workF(), pip_job_workG(), pip_job_workH();int pip_job_workI(), pip_job_workJ(), pip_job_workK(), pip_job_workL();int pip_job_workM(), pip_job_workN(), pip_job_workO(), pip_job_workP();const static struct pipcommands pipjoblist[] = { pip_job_workA, 'a', 'A', pip_job_workB, 'b', 'B', pip_job_workC, 'c', 'C', pip_job_workD, 'd', 'D', pip_job_workE, 'e', 'E', pip_job_workF, 'f', 'F', pip_job_workG, 'g', 'G', pip_job_workH, 'h', 'H', pip_job_workI, 'i', 'I', pip_job_workJ, 'j', 'J', pip_job_workK, 'k', 'K', pip_job_workL, 'l', 'L', pip_job_workM, 'm', 'M', pip_job_workN, 'n', 'N', pip_job_workO, 'o', 'O', pip_job_workP, 'p', 'P', NULL, '\0', '\0'};/*特殊选单*/int pip_see_doctor(), pip_change_weight(), pip_meet_vs_man(), pip_query(), pip_go_palace();const static struct pipcommands pipspeciallist[] = { pip_see_doctor, '1', '1', pip_change_weight, '2', '2', pip_meet_vs_man, '3', '3', pip_query, '4', '4', pip_go_palace, '5', '5', NULL, '\0', '\0'};/*系统选单*/int pip_data_list(), pip_system_freepip(), pip_system_service();int pip_write_backup(), pip_read_backup();int pip_divine(), pip_results_show();const static struct pipcommands pipsystemlist[] = { pip_data_list, '1', '1', pip_system_freepip, '2', '2', pip_system_service, '3', '3', pip_write_backup, '4', '4', pip_read_backup, '5', '5', pip_divine, 'o', 'O', pip_results_show, 's', 'S', NULL, '\0', '\0'};/*类似menu.c的功能*/int pip_do_menu(menunum, menumode, cmdtable)int menunum, menumode;const struct pipcommands cmdtable[];{ time_t now; int key1, key2; int pipkey; int goback = 0, ok = 0; int class1 = 0, class2 = 0, class3 = 0, class4 = 0, class5 = 0; int class6 = 0, class7 = 0, class8 = 0, class9 = 0, class10 = 0; struct pipcommands *cmd1; struct pipcommands *cmd2; /* * 流控 限制5keys/s */ static time_t lastkey_time[5] = { 0, 0, 0, 0, 0 }; static int count = 0; int i; do { ok = 0; /* * 判断是否死亡 死掉即跳回上一层 */ if (d.death == 1 || d.death == 2 || d.death == 3) return 0; /* * 经pip_mainmenu判定后是否死亡 */ if (pip_mainmenu(menumode)) return 0; class1 = d.wisdom / 200 + 1; /*科学 */ if (class1 > 5) class1 = 5; class2 = (d.affect * 2 + d.wisdom + d.art * 2 + d.character) / 400 + 1; /*诗词 */ if (class2 > 5) class2 = 5; class3 = (d.belief * 2 + d.wisdom) / 400 + 1; /*神学 */ if (class3 > 5) class3 = 5; class4 = (d.hskill * 2 + d.wisdom) / 400 + 1; /*军学 */ if (class4 > 5) class4 = 5; class5 = (d.hskill + d.attack) / 400 + 1; /*剑术 */ if (class5 > 5) class5 = 5; class6 = (d.hskill + d.resist) / 400 + 1; /*格斗 */ if (class6 > 5) class6 = 5; class7 = (d.mskill + d.maxmp) / 400 + 1; /*魔法 */ if (class7 > 5) class7 = 5; class8 = (d.manners * 2 + d.character) / 400 + 1; /*礼仪 */ if (class8 > 5) class8 = 5; class9 = (d.art * 2 + d.character) / 400 + 1; /*绘画 */ if (class9 > 5) class9 = 5; class10 = (d.art * 2 + d.charm) / 400 + 1; /*舞蹈 */ if (class10 > 5) class10 = 5; clrchyiuan(22, 24); move(b_lines - 1, 0); prints(menuname[menunum][0], class1, class2, class3, class4, class5); move(b_lines, 0); prints(menuname[menunum][1], class6, class7, class8, class9, class10); now = time(0); pip_time_change(now); regetkey: pipkey = igetkey(); now = time(0); if (count >= 5) { if (now - lastkey_time[0] <= 1) goto regetkey; for (i = 0; i < 4; i++) lastkey_time[i] = lastkey_time[i + 1]; lastkey_time[4] = now; } else { lastkey_time[count] = now; count++; } pip_time_change(now); cmd1 = cmdtable; cmd2 = cmdtable; switch (pipkey) {#ifdef MAPLE case Ctrl('R'): if (currutmp->msgs[0].last_pid) { show_last_call_in(); my_write(currutmp->msgs[0].last_pid, "流星丢回去:", 0); } break;#endif // END MAPLE#ifdef MAPLE case KEY_ESC: if (KEY_ESC_arg == 'c') capture_screen(); else if (KEY_ESC_arg == 'n') edit_note(); break;#endif // END MAPLE case KEY_LEFT: case 'q': case 'Q': goback = 1; break; default: for (cmd1; key1 = cmd1->key1; cmd1++) /* * if(key == tolower(pipkey)) */ if (key1 == pipkey) { cmd1->fptr(); ok = 1; } for (cmd2; key2 = cmd2->key2; cmd2++) if (ok == 0 && key2 == pipkey) { cmd2->fptr(); } break; } } while (goback == 0); return 0;}/*---------------------------------------------------------------------------*//* 基本选单:饮食 清洁 亲亲 休息 *//* *//*---------------------------------------------------------------------------*/int pip_main_menu(){ pip_do_menu(0, 0, pipmainlist); return 0;}/*---------------------------------------------------------------------------*//* 基本选单:饮食 清洁 亲亲 休息 *//* *//*---------------------------------------------------------------------------*/int pip_basic_menu(){ pip_do_menu(1, 0, pipbasiclist); return 0;}/*---------------------------------------------------------------------------*//* 商店选单:食物 零食 大补丸 玩具 书本 *//* *//*---------------------------------------------------------------------------*/int pip_store_menu(){ pip_do_menu(2, 1, pipstorelist); return 0;}/*---------------------------------------------------------------------------*//* 修行选单:念书 练武 修行 *//* *//*---------------------------------------------------------------------------*/int pip_practice_menu(){ pip_do_menu(3, 3, pippracticelist); return 0;}/*---------------------------------------------------------------------------*//* 玩乐选单:散步 旅游 运动 约会 猜拳 *//* *//*---------------------------------------------------------------------------*/int pip_play_menu(){ pip_do_menu(4, 0, pipplaylist); return 0;}/*---------------------------------------------------------------------------*//* 打工选单:家事 苦工 家教 地摊 *//* *//*---------------------------------------------------------------------------*/int pip_job_menu(){ pip_do_menu(5, 2, pipjoblist); return 0;}/*---------------------------------------------------------------------------*//* 特殊选单:看病 减肥 战斗 拜访 朝见 *//* *//*---------------------------------------------------------------------------*/int pip_special_menu(){ pip_do_menu(6, 0, pipspeciallist); return 0;}/*---------------------------------------------------------------------------*//* 系统选单:个人资料 小鸡放生 特别服务 *//* *//*---------------------------------------------------------------------------*/int pip_system_menu(){ pip_do_menu(7, 0, pipsystemlist); return;}int pip_mainmenu(mode)int mode;{ char genbuf[200]; char inbuf1[20]; char inbuf2[20]; char buf[256], linebuf[256]; time_t now; int tm, m, color, tm1, m1; int age; int color1, color2, color3, color4; int anynum; float pc; char yo[12][5] = { "诞生", "婴儿", "幼儿", "儿童", "少年", "青年", "成年", "壮年", "更年", "老年", "古稀", "神仙" }; color1 = color2 = color3 = color4 = 37; move(1, 0); tm = (time(0) - start_time + d.bbtime) / 60 / 30; /* 一岁 */ tm1 = (time(0) - start_time + d.bbtime) / 60; m = d.bbtime / 60 / 30; m1 == d.bbtime / 60; /* * 长大一岁时的增加改变值 */ if (m != tm) { d.wisdom += 10; d.happy += rand() % 5 + 5; if (d.happy > 100) d.happy = 100; d.satisfy += rand() % 5; if (d.satisfy > 100) d.satisfy = 100; if (tm < 13) d.maxhp += rand() % 5 + 5; else d.maxhp -= rand() % 15; d.character += rand() % 5; d.money += 500; d.seeroyalJ = 1; count_tired(1, 7, "N", 100, 0); d.bbtime += time(0) - start_time; start_time = time(0); pip_write_file(); /* * 记录开始 */ now = time(0); sprintf(genbuf, "[1;37m%s %-11s的小鸡 [%s] 满 %d 岁了 [0m\n", Cdate(now), cuser->userid, d.name, m + 1); pip_log_record(genbuf); /* * 记录终止 */ clear(); showtitle("电子养小鸡", BBS_FULL_NAME); show_basic_pic(20); /*生日快乐 */ pressanykey("小鸡长大一岁了.."); /* * 结局 */ if (tm % 2 == 0) pip_results_show(); if (tm >= 21 && (d.wantend == 4 || d.wantend == 5 || d.wantend == 6)) pip_ending_screen();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?