|
地板
楼主 |
发表于 2013-3-18 19:25:05
|
只看该作者
进行了大幅度的修改。- #include <stdio.h>
- struct human
- {
- int hp;
- int mp;
- int ap;
- int dp;
- int skill;
- int exp;
- int lv;
- int item;
- }player,npc;
- struct items
- {int no;
- char name[30];
- int it;
- }item[30];
- void dqitem()/*读取道具信息*/
- {
- int i;
- FILE *fp;
- fp=fopen("items.txt","r");
- for (i=1;i<30;i++)
- {fscanf(fp,"%d",&item[i].no);
- fscanf(fp,"%s",&item[i].name);
- fscanf(fp,"%d",&item[i].it);
- }
- fclose(fp);
- return ;
- }
- void printitem(int x)/*道具获得的提示语*/
- {
- dqitem();
- printf("你获得了新武器 %s ",item[x].name);
- sleep(2000);
- return;
-
-
- }
-
- void itemget(human)/*道具获得的函数,得一件一件取得,个级别的威力只是加1*/
- {
- dqitem();
- int i,s,n=0;
- s=(npc.lv-player.lv)*2;
- i=rand()%100+s;
- if(i>50) n=item[1].no;
- if(i>70) n=item[2].no;
- if(i>80) n=item[3].no;
- if(i>90) n=item[4].no;
-
- if(player.item<n)
- {printitem(n);
- player.item=n;}
-
- return;
-
-
- }
- void qp()/*清屏函数,并设置置顶的东东*/
- {dqitem();
- int x;
- x=player.item;
-
- system("cls");
- printf("\n**************************************************\n");
- printf("\n\t血量 %d \t经验 %d \t等级%d\n",player.hp,player.exp,
- player.lv);
- printf("\n \t你使用的武器 %s\t \n",item[x].name);
- printf("\n**************************************************\n");
- }
- void lvup(human)
- {
- if (player.exp>=50*player.lv) /*人物升级,各属性提升,经验归零*/
- {
- player.lv++;
- player.exp=0;
- player.hp=100*player.lv;
- player.ap=5*player.lv;
- player.dp=5*player.lv;
- player.mp=30*player.lv;
-
- }
- if (player.lv%5==0) player.skill=player.skill+0.1;
- return;
- }
- void npcup(human)/*随机敌人等级,并将5的倍数级的怪都设定成加强型*/
- {
- npc.lv=rand()%5+player.lv;
- npc.mp=30*npc.lv;
-
- if(npc.lv%5==0) npc.hp=100*npc.lv*(npc.lv/5+1);
- else npc.hp=100*npc.lv;
- npc.ap=5*npc.lv;npc.dp=5*npc.lv;npc.exp=5*npc.lv;
- }
- void gj(human)/*攻击相关的函数在这里,包括扣血,死亡判断。*/
- {int bj,t=0,s1,s2,pat,i/*这个是新添加的,加上了武器的攻击力*/;
- dqitem();
- i=player.item-1;
- while (npc.hp>0 && player.hp>0&&t!=3)
-
- {system("cls");
- printf("\n 你:\t血量 %d 能量%d \t\t 敌人:\t血量 %d 等级 %d \n",player.hp,
- player.mp,npc.hp,npc.lv);
- printf("\n--------------------------------------------------\n");
- printf("|\t\t \t\t\t|");
- printf("\n|\t\t1,普通攻击\t\t\t|\n");
- printf("|\t\t \t\t\t|");
- printf("\n|\t\t2,技能攻击\t\t\t|\n");
- printf("|\t\t \t\t\t|");
- printf("\n|\t\t3,逃跑! \t\t\t|\n");
- printf("|\t\t \t\t\t|");
- printf("\n--------------------------------------------------\n");
-
- pat=player.ap+item[i].it;
- scanf("%d",&t);
- switch(t)
- {case 1:bj=rand()%2+1;
- s1=(npc.ap+npc.ap*npc.skill)*5-player.dp;
- s2=pat*10*bj-npc.dp;
- printf("\n你进行了普通攻击,造成了%d伤害\n",s2);
- npc.hp=npc.hp-s2;
- if (npc.hp<0) break;
- printf("\n你受到%d伤害\n",s1);
- player.hp=player.hp-s1;
-
- sleep(2000);
- break;
- case 2:bj=rand()%2+1;/*这个是能越级挑战的关键*/
- s1=(npc.ap*5+npc.ap*npc.skill)*5-player.dp;
- s2=pat*10*bj+(pat+player.skill)*50-npc.dp;
- if(player.mp>4)
- {
- printf("\n你进行了技能攻击,造成了%d伤害\n",s2);
- npc.hp=npc.hp-s2;player.mp=player.mp-5*player.lv;
-
- if (npc.hp<0) {sleep(2000);break;}
-
- printf("\n你受到%d伤害\n",s1);
- player.hp=player.hp-s1;
-
- sleep(2000);
- break;
- }
- else {printf("\n你的能量不足\n");sleep(2000);break;}
-
- case 3:break;
- default: printf("\n你没这个技能\n"); sleep(2000);break;
-
- }
- }
- if (player.hp>0&&npc.hp<=0)
- {
- printf("\n你胜利了\n");
- itemget(player,npc);
- player.hp=player.hp+50*player.lv;
- player.exp=player.exp+npc.exp;
- sleep(2000);}
-
- else if(npc.hp>0&&player.hp<=0)
- {printf("\n你输了,但是伟大的zy救活了你\n");
- sleep(2000);
- t=2;
- player.hp=100*player.lv;
- if(player.exp>=10)
- player.exp=player.exp-10;
- }
- else if(t==3)
- {printf("\n你逃跑了\n"); sleep(2000);}
-
- FILE *fp;
- fp=fopen("player.txt","w");/*存档*/
- fprintf(fp,"%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",player.hp,player.mp,
- player.ap,player.dp,player.skill,player.exp,player.lv,player.item);
- fclose(fp);
-
- return;
- }
- void main()/*主函数*/
- {
- npc.hp=100;
- npc.ap=5;
- npc.dp=5;
- npc.skill=0;
- npc.exp=5;
- npc.lv=1;
- npc.mp=30;
- int s1,s2,op,k=1,t;
- printf("\n是否继续上次的游戏?\n");
- printf("\n\t\t1.是\n\n");
- printf("\n\t\t2.否\n\n");
- scanf("%d",&t);
- if(t==1)
- { FILE *fp;/*读取数据*/
- fp=fopen("player.txt","r");
- fscanf(fp,"%d",&player.hp);
- fscanf(fp,"%d",&player.mp);
- fscanf(fp,"%d",&player.ap);
- fscanf(fp,"%d",&player.dp);
- fscanf(fp,"%d",&player.skill);
- fscanf(fp,"%d",&player.exp);
- fscanf(fp,"%d",&player.lv);
- fscanf(fp,"%d",&player.item);
- fclose(fp);
- }
- else /*初始化人物数据*/
- {
- player.hp=100;
- player.ap=5;
- player.dp=5;
- player.skill=0;
- player.exp=5;
- player.lv=1;
- player.mp=30;
- player.item=1;
-
- }
-
- while (k)
- {
- lvup(player);
- qp();
- //srand(time(NULL));
- npcup(npc);
- printf("\n你发现了一个%d级敌人\n",npc.lv);
- printf("\n1,攻击\n");
- printf("\n2,放弃\n");
- printf("\n\n");
- scanf("%d",&op);
- if(op==2)
- { printf("\n你决定还是放过他\n"); sleep(2000);
- continue;
- }
- else if(op==1)
- {
- gj(player,npc);
-
- }
-
- else {
- printf("\n你想做什么\n");
- sleep(2000);
- }
- }
- }
复制代码 |
|