去年刚进专业时做的东东...
当时RPG玩多了,然后又想到以前玩过一个flash版本的名字大战
于是便有此物
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>void game();
void lvlup(int);
int go();
void fight(int,int);
int damage(int,int);
int crit(int);
void miss(int,int);
int heal(int);
void lucky(int,int);
int length(char[20]);
int oratk(char[20]);
int ordef(char[20]);
int ordex(char[20]);
int orluk(char[20]);
void status();
void sleep(int);//Global Val
int atk[2],def[2],dex[2],luk[2];
int hp[2];
char name[2][20];
int maxhp[2]={100,100};
int win[2];
int lvexp[2];
int lvl[2];
int god[2]={1,1};int main(){do{system("cls");printf("nttttName Battle 2n");// Name Battle 2printf("ntttt-----Auto-----n");// -----Auto-----printf("ntt - Press any key to continue. -");// - Press any key to continue. -getch();system("cls");printf("nnntttPress any key to play");getch();game();}while(1);
}void game(){char conti='y';//continue?win[0]=0;win[1]=0;lvexp[0]=0;lvexp[1]=0;lvl[0]=1;lvl[1]=1;int winner;system("cls");printf("ntPlease enter name of player1->");scanf("%s",name[0]);atk[0]=oratk(name[0]);def[0]=ordef(name[0]);dex[0]=ordex(name[0]);luk[0]=orluk(name[0]);printf("ntPlease enter name of player2->");scanf("%s",name[1]);atk[1]=oratk(name[1]);def[1]=ordef(name[1]);dex[1]=ordex(name[1]);luk[1]=orluk(name[1]);if(atk[0]==17&&def[0]==10&&dex[0]==13&&luk[0]==12){atk[0]=def[0]=dex[0]=luk[0]=25;god[0]=2;}if(atk[1]==17&&def[1]==10&&dex[1]==13&&luk[1]==12){atk[1]=def[1]=dex[1]=luk[1]=25;god[1]=2;}if(atk[0]==11&&def[0]==10&&dex[0]==15&&luk[0]==15){atk[0]=def[0]=dex[0]=luk[0]=50;maxhp[0]=1000;god[0]=5;}if(atk[1]==11&&def[1]==10&&dex[1]==15&&luk[1]==15){atk[1]=def[1]=dex[1]=luk[1]=50;maxhp[1]=1000;god[1]=5;}if(atk[0]==20&&def[0]==10&&dex[0]==16&&luk[0]==13){atk[0]=def[0]=dex[0]=luk[0]=50;maxhp[0]=1000;god[0]=5;}if(atk[1]==20&&def[1]==10&&dex[1]==16&&luk[1]==13){atk[1]=def[1]=dex[1]=luk[1]=50;maxhp[1]=1000;god[1]=5;}printf("nntPress any key to continue.");getch();getch();do{hp[0]=maxhp[0];hp[1]=maxhp[1];winner=go();//A round.win[winner]++;status();printf("t%s wins.n",name[winner]);lvexp[winner]+=25*god[winner];sleep(2);lvlup(0);lvlup(1);}while(conti=='y');if(win[0]>win[1])winner=0;else if(win[0]<win[1])winner=1;elsewinner=2;system("cls");printf("*****Result***********************************************************n");printf("tP1:%19sttP2:%19snn",name[0],name[1]);printf("ttWIN:%2dttttWIN:%2dnn",win[0],win[1]);if(winner==2)printf("ttttDrawn");elseprintf("tttWinner:%sn",name[winner]);printf("**********************************************************************n");//Effect//*****Status***********************************************************// P1:xxxxxxxxxxxxxxxxxxx P2:xxxxxxxxxxxxxxxxxxx// WIN:00 WIN:00 //// Winner:xxxxxxxxxxx//*****fighting*********************************************************printf("ntPress any key to return to Menu.");getch();getch();
}void lvlup(int a){for(;lvexp[a]>100*lvl[a];){lvexp[a]-=100*lvl[a];maxhp[a]+=10*((lvl[a]>10)?1:2)*god[a];lvl[a]++;atk[a]+=((lvl[a]>10)?2:3)*god[a];def[a]+=((lvl[a]>10)?1:2)*god[a];dex[a]+=((lvl[a]>10)?1:2)*god[a];luk[a]+=((lvl[a]>10)?1:2)*god[a];if(atk[a]>99)atk[a]=99;if(def[a]>99)def[a]=99;if(dex[a]>99)dex[a]=99;if(luk[a]>99)luk[a]=99;status();printf("t%s reaches level %d.",name[a],lvl[a]);printf("nntprintf Enter to continue.");sleep(2);}
}int go(){double op1,ed1,op2,ed2;long delay[2];delay[0]=(100-dex[0])/10.0;delay[1]=(100-dex[1])/10.0;op1=0;ed1=0;op2=0;ed2=0;srand(time(NULL));status();do{ed1+=0.1;ed2+=0.1;if(ed1-op1>delay[0]){status();//Show the status.fight(0,1);//P1 Fighted1=0;sleep(2);}if(!(hp[0]&&hp[1]))break;if(ed2-op2>delay[1]){status();//Show the status.fight(1,0);//P2 Fighted2=0;sleep(2);}}while(hp[0]&&hp[1]);if(hp[0])return 0;if(hp[1])return 1;
}void fight(int a,int b){int action,delta;action = rand()%100;if(action<90){//attack;delta=damage(a,b);delta*=crit(a);miss(b,delta);}else{//heal;delta=heal(a);lucky(a,delta);}
}//*************************************About attack
int damage(int a,int b){int damg;damg=(10+rand()%11)*god[a];if((atk[a]-def[b])>0)damg=damg+((atk[a]-def[b]>50)?50:(atk[a]-def[b]));printf("t%s attacks.",name[a]);return damg;
}int crit(int a){int rate,rt;rt=(dex[a]+2*luk[a])/3+1;if(rt>50)rt=50;if(god[a]>1)rt=75;rate=rand()%100;if(rate<rt){printf("Critical! x2");return 2;}elsereturn 1;
}void miss(int b,int damg){int rate,rt;int a;a=(b+1)%2;rt=2*dex[b]+luk[b]-dex[a]-luk[a];if(rt>50)rt=50;if(god[a]>1)rt=50;rate=rand()%100;if(rate<rt)printf(" But missed.");else{hp[b]-=damg;if(hp[0]<0)hp[0]=0;if(hp[1]<0)hp[1]=0;lvexp[a]+=damg/2;printf(" %s's HP-%d",name[b],damg);}
}//*************************************About heal
int heal(int a){int treat;treat=20+rand()%11;treat+=luk[a];printf("t%s heals himself.",name[a]);return treat;
}void lucky(int a, int treat){int rate,rt;rt=2*luk[a];if(rt>50)rt=50;if(god[a]>1)rt=100;rate=rand()%100;if(rate<rt){treat*=2;printf("Good luck! x2 HP+%d",treat);}elseprintf(" HP+%d",treat);hp[a]+=treat;lvexp[a]+=treat/2;if(hp[a]>maxhp[a])hp[a]=maxhp[a];
}//*************************************About creating data
inline int length(char a[20]){int l;int i;for(i=0;i<20;i++)if(a[i]==0){l=i;break;}return l;
}//Check the length of name.inline int oratk(char a[20]){int atk;int i;for(i=0;i<length(a);i++)atk+=(i*(int)a[i]);atk%=11;atk+=10;return atk;
}//ATK 10~20inline int ordef(char a[20]){int def;int i;for(i=0;i<length(a);i++)def+=(int)a[i];def%=11;def+=10;return def;
}//DEF 10~20inline int ordex(char a[20]){int dex;int i;for(i=0;i<length(a);i++)dex+=(10000/(int)a[i]);dex%=11;dex+=10;return dex;
}//DEX 10~20 Time=(30-DEX)/10 1~2(s)inline int orluk(char a[20]){int luk;int i;for(i=0;i<length(a);i++)luk+=((int)a[i]*(int)a[i]/100);luk%=11;luk+=10;return luk;
}//LUK 10~20 Miss=LUK%inline void status(){system("cls");printf("*****Status***********************************************************n");printf("tP1:%19sttP2:%19sn",name[0],name[1]);printf("tHP:%3dttWIN:%2dttHP:%3dttWIN:%2dn",hp[0],win[0],hp[1],win[1]);printf("tATK:%2dttDEF:%2dttATK:%2dttDEF:%2dn",atk[0],def[0],atk[1],def[1]);printf("tDEX:%2dttLUK:%2dttDEX:%2dttLUK:%2dn",dex[0],luk[0],dex[1],luk[1]);printf("tLV:%3dttEXP:%4dtLV:%3dttEXP:%4dn",lvl[0],lvexp[0],lvl[1],lvexp[1]);
if(god[0]==1&&god[1]==1)printf("*****fighting*********************************************************n");
else if(god[0]==5&&god[1]==5)printf("*****fighting*********************************************Hero vs Bossn");
else if(god[0]==5||god[1]==5)printf("*****fighting**********************************************Legend Moden");
elseprintf("*****fighting*********************************************Creator Moden");//Effect//*****Status***********************************************************// P1:xxxxxxxxxxxxxxxxxxx P2:xxxxxxxxxxxxxxxxxxx// HP:000 WIN:00 HP:000 WIN:00 // ATK:00 DEF:00 ATK:00 DEF:00// DEX:00 LUK:00 DEX:00 LUK:00//*****fighting*********************************************************
}void sleep(int n){ time_t start,end; volatile long unsigned t;start = time(NULL); end = time(NULL); while(difftime(end,start)<n){ end = time(NULL); }
}
本文发布于:2024-01-28 03:51:59,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063851294577.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |