⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pip_main.c

📁 one bbs source code
💻 C
字号:
/* ----------------------------------- *//* pip.c  养小鸡程式                   *//* 原作者: dsyan   改写者: fennet      *//* 图图 by tiball.bbs@bbs.nhctc.edu.tw *//* ----------------------------------- *///#define getdata(a, b, c , d, e, f, g) getdata(a,b,c,d,e,f,NULL,g)//#define pressanykey(a) prints(a);pressanykey();#include "bbs.h"#include <time.h>#include "pip.h"struct chicken d;time_t start_time;time_t lasttime;#ifndef MAPLEextern char BoardName[];#endif  // END MAPLEvoid temppress(char *s){	move(23, 0); clrtoeol();	prints(s);	egetch();}/*游戏主程式*///int p_pipple()int mod_default(){ FILE *fs; time_t now; long smoney; int pipkey; int ok; char genbuf[200];#ifdef MAPLE setutmpmode(CHICKEN); more("src/maple/pipgame/pip.welcome",YEA);#else modify_user_mode( CHICKEN ); refresh(); move(1,0); clrtobot(); //rawmore("game/pipgame/pip.welcome",YEA,0,0,MM_FILE); //ansimore("game/pipgame/pip.welcome", NA);//egetch();#endif  // END MAPLE showtitle("电子养小鸡", BoardName); srandom(time(0));#ifdef MAPLE sprintf(genbuf,"home/%s/new_chicken",cuser.userid);#else sprintf(genbuf,"home/%c/%s/new_chicken",toupper(cuser.userid[0]),cuser.userid);#endif  // END MAPLE  pip_read_file(); if((fs=fopen(genbuf, "r")) == NULL) {//   show_system_pic(11); /* 暂时用进游戏的画面来代替 */ //  move(b_lines,0);ansimore("game/pipgame/pip.welcome", NA);   pipkey=egetch();      if(pipkey=='Q' || pipkey=='q')     return 0;   if(d.death!=0 || !d.name[0])   {       if(!pip_new_game()) return 0;   }       } else {//   show_system_pic(12); //  move(b_lines,0);ansimore("game/pipgame/pip.welcome", NA);   pipkey=egetch();      if(pipkey=='R' || pipkey=='r')     pip_read_backup();   else if(pipkey=='Q' || pipkey=='q')     return 0;   if(d.death!=0 || !d.name[0])     {       if(!pip_new_game()) return 0;     } }  lasttime=time(0); start_time=time(0); /*pip_do_menu(0,0,pipmainlist);*/ pip_main_menu(); d.bbtime+=time(0)-start_time; pip_write_file(); return 0;}/*时间表示法*/char*dsyan_time(const time_t *t){  struct tm *tp;  static char ans[9];  tp = localtime(t);  sprintf(ans, "%02d/%02d/%02d", tp->tm_year%100, tp->tm_mon + 1,tp->tm_mday);  return ans;}/*新游戏的设定*/intpip_new_game(){  char buf[256];  time_t now;  char *pipsex[3]={"?","♂","♀"};  struct tm *ptime;  ptime = localtime(&now);    if(d.death==1 && !(!d.name[0]))  {     clear();     showtitle("外星战斗鸡", BoardName);      move(4,6);     prints("欢迎来到 星空生物科技研究院");     move(6,6);     prints("经我们调查显示  先前你有养过小鸡喔  可是被你养死了...");     move(8,6);     if(d.liveagain<4)     {       prints("我们可以帮你帮小鸡复活  但是需要付出一点代价");#ifdef MAPLE       getdata(10, 6, "你要我们让他重生吗? [y/N]:", buf, 2, 1, 0);#else       getdata(10, 6, "你要我们让他重生吗? [y/N]:", buf, 2, DOECHO, YEA);#endif  // END MAPLE       if(buf[0]=='y' || buf[0]=='Y')       {         pip_live_again();       }     }     else if(d.liveagain>=4)     {       prints("可是你复活手术太多次了  小鸡身上都是开刀痕迹");            move(10,6);       prints("我们找不到可以手术的地方了  所以....");       pressanykey("重新再来吧....唉....");         }  }  if(d.death!=0 || !d.name[0])  {    clear();    showtitle("外星战斗鸡", BoardName);       /*小鸡命名*/    strcpy(buf,"贝贝");#ifdef MAPLE    getdata(2, 3, "帮小鸡取个好听的名字吧(请不要有空格):", buf, 11, 1, 0);#else    getdata(2, 3, "帮小鸡取个好听的名字吧(请不要有空格):", buf, 11, DOECHO, NA);#endif  // END MAPLE    if(!buf[0]) return 0;    strcpy(d.name,buf);    /*1:公 2:母 */#ifdef MAPLE    getdata(4, 3, "[Boy]小公鸡♂ or [Girl]小母鸡♀ [b/G]", buf, 2, 1, 0);#else    getdata(4, 3, "[Boy]小公鸡♂ or [Girl]小母鸡♀ [b/G]", buf, 2, DOECHO, YEA);#endif  // END MAPLE    if(buf[0]=='b' || buf[0]=='B')    {      d.sex=1;    }      else    {      d.sex=2;     }            move(6,3);    prints("星空战斗鸡的游戏现今分成两种玩法");    move(7,3);    prints("选有结局会在小鸡20岁时结束游戏,并告知小鸡後续的发展");    move(8,3);    prints("选没有结局则一直养到小鸡死亡才结束游戏....");    /*1:不要且未婚 4:要且未婚 */#ifdef MAPLE    getdata(9, 3, "你希望小鸡游戏是否要有20岁结局? [Y/n]", buf, 2, 1, 0);#else    getdata(9, 3, "你希望小鸡游戏是否要有20岁结局? [Y/n]", buf, 2, DOECHO, YEA);#endif  // END MAPLE    if(buf[0]=='n' || buf[0]=='N')    {      d.wantend=1;    }      else    {      d.wantend=4;     }            /*开头画面*/    show_basic_pic(0);    pressanykey("小鸡终於诞生了,请好好爱他....");    /*开头设定*/    now=time(0);    strcpy(d.birth,dsyan_time(&now));    d.bbtime=0;    /*基本资料*/    d.year=ptime->tm_year%100;    d.month=ptime->tm_mon + 1;    d.day=ptime->tm_mday;    d.death=d.nodone=d.relation=0;    d.liveagain=d.dataB=d.dataC=d.dataD=d.dataE=0;              /*身体参数*/    d.hp=rand()%15+20;    d.maxhp=rand()%20+20;    if(d.hp>d.maxhp) d.hp=d.maxhp;    d.weight=rand()%10+50;    d.tired=d.sick=d.shit=d.wrist=0;    d.bodyA=d.bodyB=d.bodyC=d.bodyD=d.bodyE=0;      /*评价参数*/    d.social=d.family=d.hexp=d.mexp=0;    d.tmpA=d.tmpB=d.tmpC=d.tmpD=d.tmpE=0;             /*战斗参数*/    d.mp=d.maxmp=d.attack=d.resist=d.speed=d.hskill=d.mskill=d.mresist=0;    d.magicmode=d.fightB=d.fightC=d.fightD=d.fightE=0;      /*武器参数*/    d.weaponhead=d.weaponrhand=d.weaponlhand=d.weaponbody=d.weaponfoot=0;    d.weaponA=d.weaponB=d.weaponC=d.weaponD=d.weaponE=0;        /*能力参数*/    d.toman=d.character=d.love=d.wisdom=d.art=d.etchics=0;    d.brave=d.homework=d.charm=d.manners=d.speech=d.cookskill=0;    d.learnA=d.learnB=d.learnC=d.learnD=d.learnE=0;      /*状态数值*/    d.happy=rand()%10+20;    d.satisfy=rand()%10+20;    d.fallinlove=d.belief=d.offense=d.affect=0;    d.stateA=d.stateB=d.stateC=d.stateD=d.stateE=0;    /*食物参数:食物 零食 药品 大补丸*/    d.food=10;    d.medicine=d.cookie=d.bighp=2;    d.ginseng=d.snowgrass=d.eatC=d.eatD=d.eatE=0;    /*物品参数:书 玩具*/    d.book=d.playtool=0;    d.money=1500;    d.thingA=d.thingB=d.thingC=d.thingD=d.thingE=0;    /*猜拳参数:赢 负*/    d.winn=d.losee=0;    /*参见王臣*/    d.royalA=d.royalB=d.royalC=d.royalD=d.royalE=0;    d.royalF=d.royalG=d.royalH=d.royalI=d.royalJ=0;    d.seeroyalJ=1;    d.seeA=d.seeB=d.seeC=d.seeD=d.seeE;    /*接受求婚爱人*/            d.lover=0;    /*0:没有 1:魔王 2:龙族 3:A 4:B 5:C 6:D 7:E */    d.classA=d.classB=d.classC=d.classD=d.classE=0;    d.classF=d.classG=d.classH=d.classI=d.classJ=0;    d.classK=d.classL=d.classM=d.classN=d.classO=0;    d.workA=d.workB=d.workC=d.workD=d.workE=0;    d.workF=d.workG=d.workH=d.workI=d.workJ=0;    d.workK=d.workL=d.workM=d.workN=d.workO=0;    d.workP=d.workQ=d.workR=d.workS=d.workT=0;    d.workU=d.workV=d.workW=d.workX=d.workY=d.workZ=0;    /*养鸡记录*/    now=time(0);    sprintf(buf, "%s %-11s养了一只叫 [%s] 的 %s 小鸡 \n", Cdate(&now), cuser.userid,d.name,pipsex[d.sex]);    pip_log_record(buf);  }    pip_write_file();  return 1;}/*小鸡死亡函式*/pipdie(msg,mode)char *msg;int mode;{ char buf[100]; char genbuf[200]; time_t now; clear(); showtitle("电子养小鸡", BoardName);  if(mode==1) {   show_die_pic(1);   pressanykey("死神来带走小鸡了");   clear();   showtitle("电子养小鸡", BoardName);    show_die_pic(2);   move(14,20);   prints("可怜的小鸡%s",msg);   pressanykey("星空哀悼中...."); } else if(mode==2) {   show_die_pic(3);   pressanykey("呜呜呜..我被丢弃了....."); }  else if(mode==3) {   show_die_pic(0);   pressanykey("游戏结束罗..");  }  now=time(0); sprintf(genbuf, "%s %-11s的小鸡 [%s] %s\n", Cdate(&now), cuser.userid,d.name, msg); pip_log_record(genbuf); pip_write_file();}/*pro:机率 base:底数 mode:类型 mul:加权100=1 cal:加减*/intcount_tired(prob,base,mode,mul,cal)int prob,base;char *mode;int mul;int cal;{ int tiredvary=0; int tm; /*time_t now;*/ tm=(time(0)-start_time+d.bbtime)/60/30; if(mode=="Y") {  if(tm>=0 && tm <=3)  {     if(cal==1)        tiredvary=(rand()%prob+base)*d.maxhp/(d.hp+0.8*d.hp)*120/100;     else if(cal==0)        tiredvary=(rand()%prob+base)*4/3;  }  else if(tm >=4 && tm <=7)  {     if(cal==1)        tiredvary=(rand()%prob+base)*d.maxhp/(d.hp+0.8*d.hp);     else if(cal==0)        tiredvary=(rand()%prob+base)*3/2;  }  else if(tm >=8 && tm <=10)  {     if(cal==1)        tiredvary=(rand()%prob+base)*d.maxhp/(d.hp+0.8*d.hp)*110/100;     else if(cal==0)        tiredvary=(rand()%prob+base)*5/4;  }  else if(tm >=11)  {     if(cal==1)        tiredvary=(rand()%prob+base)*d.maxhp/(d.hp+0.8*d.hp)*150/100;     else if(cal==0)        tiredvary=(rand()%prob+base)*1;  } } else if(mode=="N") {  tiredvary=rand()%prob+base; } if(cal==1) {   d.tired+=(tiredvary*mul/100);   if(d.tired>100)     d.tired=100; } else if(cal==0) {   d.tired-=(tiredvary*mul/100);   if(d.tired<=0)     {d.tired=0;} } tiredvary=0; return;}

⌨️ 快捷键说明

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