📄 pip_special.c
字号:
/*---------------------------------------------------------------------------*//* 特殊选单:看病 减肥 战斗 拜访 朝见 *//* *//*---------------------------------------------------------------------------*/#include "pip.h"extern struct chicken d;extern time_t start_time;extern time_t lasttime;const struct royalset royallist[] = { {"T", "拜访对象", 0, 0, 0, 0, "", "" /*NULL,NULL */ }, {"A", "星空骑兵连", 1, 10, 15, 100, "你真好,来陪我聊天..", "守卫星空的安全是很辛苦的.."}, {"B", "星空007", 1, 100, 25, 200, "真是礼貌的小鸡..我喜欢...", "特务就是秘密保护站长安全的人.."}, {"C", "镇国大将军", 1, 200, 30, 250, "告诉你唷!当年那个战役很精彩喔..", "你真是高贵优雅的小鸡..."}, {"D", "参谋总务长", 1, 300, 35, 300, "我帮站长管理这个国家唷..", "你的声音很好听耶..我很喜欢喔...:)"}, {"E", "小天使站长", 1, 400, 35, 300, "你很有教养唷!很高兴认识你...", "优雅的你,请让我帮你祈福...."}, {"F", "风筝手站长", 1, 500, 40, 350, "你好可爱喔..我喜欢你唷....", "对啦..以后要多多来和我玩喔..."}, {"G", "乖小孩站长", 1, 550, 40, 350, "跟你讲话很快乐喔..不像站长一样无聊..", "来,坐我膝盖上,听我讲故事.."}, {"H", "小米克站长", 1, 600, 50, 400, "一站之长责任重大呀..:)..", "谢谢你听我讲话..以后要多来喔..."}, {"I", "星空灌水群", 2, 60, 0, 0, "不错唷..蛮机灵的喔..很可爱....", "来 我们一起来灌水吧...."}, {"J", "青年帅武官", 0, 0, 0, 0, "你好,我是武官,刚从银河边境回来休息..", "希望下次还能见到你...:)"},//NULL, NULL,NULL, NULL, NULL,NULL,NULL//{NULL, 0, 0, 0, 0, NULL, NULL}};intpip_see_doctor(){ /*看医生 */ char buf[256]; long savemoney; savemoney = d.sick * 25; if (d.sick <= 0) { temppress("哇哩..没病来医院干嘛..被骂了..呜~~"); d.character -= (rand() % 3 + 1); if (d.character < 0) d.character = 0; d.happy -= (rand() % 3 + 3); d.satisfy -= rand() % 3 + 2; } else if (d.money < savemoney) { sprintf(buf, "你的病要花 %ld 元喔....你不够钱啦...", savemoney); temppress(buf); } else if (d.sick > 0 && d.money >= savemoney) { d.tired -= rand() % 10 + 20; if (d.tired < 0) d.tired = 0; d.sick = 0; d.money = d.money - savemoney; move(4, 0); show_special_pic(1); temppress("药到病除..没有副作用!!"); } return 0;}/*减肥*/intpip_change_weight(){ char genbuf[5]; char inbuf[256]; int weightmp; move(b_lines - 1, 0); clrtoeol(); show_special_pic(2);#ifdef MAPLE getdata(b_lines - 1, 1, "你的选择是? [Q]离开:", genbuf, 2, 1, 0);#else getdata(b_lines-1,1,"你的选择是? [Q]离开:",genbuf,2,DOECHO,NULL,true);#endif // END MAPLE if (genbuf[0] == '1' || genbuf[0] == '2' || genbuf[0] == '3' || genbuf[0] == '4') { switch (genbuf[0]) { case '1': if (d.money < 80) { temppress ("传统增胖要80元喔....你不够钱啦..."); } else {#ifdef MAPLE getdata(b_lines - 1, 1, "需花费80元(3~5公斤),你确定吗? [y/N]", genbuf, 2, 1, 0);#else getdata(b_lines-1,1,"需花费80元(3~5公斤),你确定吗? [y/N]",genbuf,2,DOECHO,NULL,true);#endif // END MAPLE if (genbuf[0] == 'Y' || genbuf[0] == 'y') { weightmp = 3 + rand() % 3; d.weight += weightmp; d.money -= 80; d.maxhp -= rand() % 2; d.hp -= rand() % 2 + 3; show_special_pic(3); sprintf(inbuf, "总共增加了%d公斤", weightmp); temppress(inbuf); } else { temppress("回心转意罗....."); } } break; case '2':#ifdef MAPLE getdata(b_lines - 1, 1, "增一公斤要30元,你要增多少公斤呢? [请填数字]:", genbuf, 4, 1, 0);#else getdata(b_lines-1,1,"增一公斤要30元,你要增多少公斤呢? [请填数字]:",genbuf,4,DOECHO,NULL,true);#endif // END MAPLE weightmp = atoi(genbuf); if (weightmp <= 0) { temppress("输入有误..放弃罗..."); } else if (d.money > (weightmp * 30)) { sprintf(inbuf, "增加%d公斤,总共需花费了%d元,确定吗? [y/N]", weightmp, weightmp * 30);#ifdef MAPLE getdata(b_lines - 1, 1, inbuf, genbuf, 2, 1, 0);#else getdata(b_lines-1,1,inbuf,genbuf,2,DOECHO,NULL,true);#endif // END MAPLE if (genbuf[0] == 'Y' || genbuf[0] == 'y') { d.money -= weightmp * 30; d.weight += weightmp; d.maxhp -= (rand() % 2 + 2); count_tired(5, 8, "N", 100, 1); d.hp -= (rand() % 2 + 3); d.sick += rand() % 10 + 5; show_special_pic(3); sprintf(inbuf, "总共增加了%d公斤", weightmp); temppress(inbuf); } else { temppress("回心转意罗....."); } } else { temppress("你钱没那麽多啦......."); } break; case '3': if (d.money < 80) { temppress ("传统减肥要80元喔....你不够钱啦..."); } else {#ifdef MAPLE getdata(b_lines - 1, 1, "需花费80元(3~5公斤),你确定吗? [y/N]", genbuf, 2, 1, 0);#else getdata(b_lines-1,1,"需花费80元(3~5公斤),你确定吗? [y/N]",genbuf,2,DOECHO,NULL,true);#endif // END MAPLE if (genbuf[0] == 'Y' || genbuf[0] == 'y') { weightmp = 3 + rand() % 3; d.weight -= weightmp; if (d.weight < 0) d.weight = 0; d.money -= 100; d.maxhp += rand() % 2; d.hp -= rand() % 2 + 3; show_special_pic(4); sprintf(inbuf, "总共减少了%d公斤", weightmp); temppress(inbuf); } else { temppress("回心转意罗....."); } } break; case '4':#ifdef MAPLE getdata(b_lines - 1, 1, "减一公斤要30元,你要减多少公斤呢? [请填数字]:", genbuf, 4, 1, 0);#else getdata(b_lines-1,1,"减一公斤要30元,你要减多少公斤呢? [请填数字]:",genbuf,4,DOECHO,NULL,true);#endif // END MAPLE weightmp = atoi(genbuf); if (weightmp <= 0) { temppress("输入有误..放弃罗..."); } else if (d.weight <= weightmp) { temppress("你没那麽重喔....."); } else if (d.money > (weightmp * 30)) { sprintf(inbuf, "减少%d公斤,总共需花费了%d元,确定吗? [y/N]", weightmp, weightmp * 30);#ifdef MAPLE getdata(b_lines - 1, 1, inbuf, genbuf, 2, 1, 0);#else getdata(b_lines-1,1,inbuf,genbuf,2,DOECHO,NULL,true);#endif // END MAPLE if (genbuf[0] == 'Y' || genbuf[0] == 'y') { d.money -= weightmp * 30; d.weight -= weightmp; d.maxhp -= (rand() % 2 + 2); count_tired(5, 8, "N", 100, 1); d.hp -= (rand() % 2 + 3); d.sick += rand() % 10 + 5; show_special_pic(4); sprintf(inbuf, "总共减少了%d公斤", weightmp); temppress(inbuf); } else { temppress("回心转意罗....."); } } else { temppress("你钱没那麽多啦......."); } break; } } return 0;}/*参见*/intpip_go_palace(){ pip_go_palace_screen(royallist); return 0;}int pip_go_palace_screen(const struct royalset *p){ int n; int a; int b; int choice; int pipkey; int change; char buf[256]; char inbuf1[20]; char inbuf2[20]; char *needmode[3] = { " ", "礼仪表现>", "谈吐技巧>" }; int save[11] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; d.nodone = 0; do { clear(); show_palace_pic(0); move(13, 4); sprintf(buf, "\033[1;31m┌——————┤\033[37;41m 来到总司令部了 请选择你欲拜访的对象 \033[0;1;31m├——————┐\033[0m"); prints(buf); move(14, 4); sprintf(buf, "\033[1;31m│ │\033[0m"); prints(buf); for (n = 0; n < 5; n++) { a = 2 * n + 1; b = 2 * n + 2; move(15 + n, 4); sprintf(inbuf1, "%-10s%3d", needmode[p[a].needmode], p[a].needvalue); if (n == 4) { sprintf(inbuf2, "%-10s", needmode[p[b].needmode]); } else { sprintf(inbuf2, "%-10s%3d", needmode[p[b].needmode], p[b].needvalue); } if ((d.seeroyalJ == 1 && n == 4) || (n != 4)) sprintf(buf, "\033[1;31m│ \033[36m(\033[37m%s\033[36m) \033[33m%-10s \033[37m%-14s \033[36m(\033[37m%s\033[36m) \033[33m%-10s \033[37m%-14s\033[31m│\033[0m", p[a].num, p[a].name, inbuf1, p[b].num, p[b].name, inbuf2); else sprintf(buf, "\033[1;31m│ \033[36m(\033[37m%s\033[36m) \033[33m%-10s \033[37m%-14s \033[31m│\033[0m", p[a].num, p[a].name, inbuf1); prints(buf); } move(20, 4); sprintf(buf, "\033[1;31m│ │\033[0m"); prints(buf); move(21, 4); sprintf(buf, "\033[1;31m└—————————————————————————————————┘\033[0m"); prints(buf); if (d.death == 1 || d.death == 2 || d.death == 3) return 0; /* * 将各人务已经给与的数值叫回来 */ save[1] = d.royalA; /*from守卫 */ save[2] = d.royalB; /*from近卫 */ save[3] = d.royalC; /*from将军 */ save[4] = d.royalD; /*from大臣 */ save[5] = d.royalE; /*from祭司 */ save[6] = d.royalF; /*from宠妃 */ save[7] = d.royalG; /*from王妃 */ save[8] = d.royalH; /*from国王 */ save[9] = d.royalI; /*from小丑 */ save[10] = d.royalJ; /*from王子 */ move(b_lines - 1, 0); clrtoeol(); move(b_lines - 1, 0); prints("\033[1;33m [生命力] %d/%d [疲劳度] %d \033[0m", d.hp, d.maxhp, d.tired); move(b_lines, 0); clrtoeol(); move(b_lines, 0); prints ("\033[1;37;46m 参见选单 \033[44m [字母]选择欲拜访的人物 [Q]离开星空总司令部: \033[0m"); pipkey = igetkey(); choice = pipkey - 64; if (choice < 1 || choice > 10) choice = pipkey - 96; if ((choice >= 1 && choice <= 10 && d.seeroyalJ == 1) || (choice >= 1 && choice <= 9 && d.seeroyalJ == 0)) { d.social += rand() % 3 + 3; d.hp -= rand() % 5 + 6; d.tired += rand() % 5 + 8; if (d.tired >= 100) { d.death = 1; pipdie("\033[1;31m累死了...\033[m ", 1); } if (d.hp < 0) { d.death = 1; pipdie("\033[1;31m饿死了...\033[m ", 1); } if (d.death == 1) { sprintf(buf, "掰掰了...真是悲情.."); } else { if ((p[choice].needmode == 0) || (p[choice].needmode == 1 && d.manners >= p[choice].needvalue) || (p[choice].needmode == 2 && d.speech >= p[choice].needvalue)) { if (choice >= 1 && choice <= 9 && save[choice] >= p[choice].maxtoman) { if (rand() % 2 > 0) sprintf(buf, "能和这麽伟大的你讲话真是荣幸ㄚ..."); else sprintf(buf, "很高兴你来拜访我,但我不能给你什麽了.."); } else { change = 0; if (choice >= 1 && choice <= 8) { switch (choice) { case 1: change = d. character /
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -