简单的控制台小游戏

可以玩,但很不全,全版本没写完就丢了,纯是我写来练手玩的,不精简

youxi1.h

#include "stdio.h"
#include "stdlib.h"
#include "shuxing.h"
#include "xinjian.h"
#include "math.h"
#include "time.h"
struct zhujue jishizhujue;
struct guaiwu jguaiwu={10,6,2,1,3,2,1,1,1,1,1,10,1,0};
int zhangjingyan,tempjingyan;
void baocun();//保存函数
void bianyi();//怪物变异函数
void jixu();//读取信息函数
void guaiwugongji();//怪物攻击函数
void youxi();//开始游戏函数
void maidongxi();//买东西函数
void shengji();//升级函数
void shengli();//胜利计算函数
void sudu();//计算速度,判断攻击
void zhandou();//战斗函数
void zhujuegongji();//主角攻击函数
void baocun()
{
 FILE *fp;
 if((fp=fopen("zhujue.blms","w+"))==NULL)
 {
  printf("程序意外退出,游戏并未保存成功");
  system("pause");
  exit(0);
 }
 int tempbaocun;
 putw(jishizhujue.hp,fp);
 putw(jishizhujue.mp ,fp);
 tempbaocun=jishizhujue.sd *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.sb *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.gj *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.fy *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.jnj *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.jnm *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.jns *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.jnh *10000;
 putw(tempbaocun,fp);
 tempbaocun=jishizhujue.jnt *10000;
 putw(tempbaocun,fp);
 putw(jishizhujue.sxd ,fp);
 putw(jishizhujue.jq ,fp);
 putw(jishizhujue.dj ,fp);
 putw(jishizhujue.jy ,fp);
 putw(jishizhujue.xjy ,fp);
 putw(jishizhujue.bjy ,fp);
 putw(jishizhujue.syhp ,fp);
 putw(jishizhujue.symp ,fp);
 fclose(fp);
}
void bianyi()
{
 printf("不好了,怪物变异了!");
 int temp,temp2;
 temp=jguaiwu.dj-1 ;
 jguaiwu.hp =10;
 jguaiwu.mp =6;
 jguaiwu.sd =2;
 jguaiwu.sb =1;
 jguaiwu.gj =3;
 jguaiwu.fy =2;
 jguaiwu.jnj =jguaiwu.jnm =jguaiwu.jns =jguaiwu.jnh =jguaiwu.jnt =1;
 for(int i=0;i<temp;i++)
 {
  jguaiwu.hp =jguaiwu.hp * 1.15;//计算怪物血量
  jguaiwu.mp =jguaiwu.mp * 1.15;//计算怪物魔法值
  jguaiwu.sd =jguaiwu.sd *1.03;//计算怪物速度
  jguaiwu.sb =jguaiwu.sb *1.03;//计算闪避
  jguaiwu.gj =jguaiwu.gj *1.03;//计算攻击
  jguaiwu.fy =jguaiwu.fy *1.03;//计算防御
  jguaiwu.jnj=jguaiwu.jnj*1.03;
  jguaiwu.jnj=jguaiwu.jnj*1.03;
  jguaiwu.jnj=jguaiwu.jnj*1.03;
  jguaiwu.jnj=jguaiwu.jnj*1.03;
  jguaiwu.jnj=jguaiwu.jnj*1.03;
  jguaiwu.jq=jguaiwu.jq*1.08;//计算金钱1
 }
 zhangjingyan=jguaiwu.hp /10;
 temp2=rand()%5;
 switch(temp2)
 {
 case 0:jguaiwu.jnj=jguaiwu.jnj*1.38;
  jguaiwu.jn=0;break;
 case 1:jguaiwu.jnm=jguaiwu.jnm*1.38;
  jguaiwu.jn=1;break;
 case 2:jguaiwu.jns=jguaiwu.jns*1.38;
  jguaiwu.jn=2;break;
 case 3:jguaiwu.jnh=jguaiwu.jnh*1.38;
  jguaiwu.jn=3;break;
 case 4:jguaiwu.jnt=jguaiwu.jnt*1.38;
  jguaiwu.jn=4;
 }//确定主技能
 temp2=rand()%80-40;
 jguaiwu.jq=jguaiwu.jq+jguaiwu.jq*temp2/100;
}
void guaiwugongji()

 int temp,cishu=0;
 float baojilv,baoji;
 temp=rand()%10;
 if(temp<4)
 {
  cishu++;
  if(cishu>jguaiwu.dj ) 
  {
   temp=6;
  }
 }
 if(temp<4)
 {
  printf("怪物用大招了!");
  baojilv=jguaiwu.sb /(2*jishizhujue.sb)*100;
  if(baojilv<(rand()%100+1))
   baoji=1;
  else
  {
   baoji=1.1;
   printf("同时暴击了/n");
  }
  switch(jguaiwu.jn)
  {
  case 0:if((jguaiwu.gj +jguaiwu.jnj-jishizhujue.fy *0.6-jishizhujue.jnj *0.5)*baoji>0)
      {
     jishizhujue.hp =jishizhujue.hp -((jguaiwu.gj +jguaiwu.jnj-jishizhujue.fy *0.6-jishizhujue.jnj *0.5))*baoji;
     printf("/n它用金技能打掉了你%g的血!/n你就剩%d的血了!,怪物还有%d点/n/n/n/n",(jguaiwu.gj +jguaiwu.jnj-jishizhujue.fy *0.6-jishizhujue.jnj *0.5)*baoji,jishizhujue.hp,jguaiwu.hp  );
      }
   else
    printf("怪物没有破掉你的防/n/n/n/n");
   break;
  case 1:if((jguaiwu.gj +jguaiwu.jnm-jishizhujue.fy *0.6-jishizhujue.jnm *0.5)*baoji>0)
      {
   jishizhujue.hp =jishizhujue.hp -((jguaiwu.gj +jguaiwu.jnm-jishizhujue.fy *0.6-jishizhujue.jnm *0.5))*baoji;
   printf("/n它用木技能打掉了你%g的血!/n你就剩%d的血了!,怪物还有%d点/n/n/n/n",(jguaiwu.gj +jguaiwu.jnm-jishizhujue.fy *0.6-jishizhujue.jnj *0.5)*baoji,jishizhujue.hp ,jguaiwu.hp );
      }
   else
    printf("怪物没有破掉你的防/n/n/n/n");
   break;
  case 2:if((jguaiwu.gj +jguaiwu.jns-jishizhujue.fy *0.6-jishizhujue.jns *0.5)*baoji>0)
      {
   jishizhujue.hp =jishizhujue.hp -((jguaiwu.gj +jguaiwu.jns-jishizhujue.fy *0.6-jishizhujue.jns *0.5))*baoji;
   printf("/n它用水技能打掉了你%g的血!/n你就剩%d的血了!,怪物还有%d点/n/n/n/n",(jguaiwu.gj +jguaiwu.jns-jishizhujue.fy *0.6-jishizhujue.jnj *0.5)*baoji,jishizhujue.hp,jguaiwu.hp  );
      }
   else
    printf("怪物没有破掉你的防/n/n/n/n");
   break;
  case 3:if((jguaiwu.gj +jguaiwu.jnh-jishizhujue.fy *0.6-jishizhujue.jnh *0.5)*baoji>0)
      {
   jishizhujue.hp =jishizhujue.hp -((jguaiwu.gj +jguaiwu.jnh-jishizhujue.fy *0.6-jishizhujue.jnh *0.5))*baoji;
   printf("/n它用火技能打掉了你%g的血!/n你就剩%d的血了!,怪物还有%d点/n/n/n/n",(jguaiwu.gj +jguaiwu.jnh-jishizhujue.fy *0.6-jishizhujue.jnj *0.5)*baoji,jishizhujue.hp ,jguaiwu.hp );
      }
   else
    printf("怪物没有破掉你的防/n/n/n/n");
   break;
  case 4:if((jguaiwu.gj +jguaiwu.jnt-jishizhujue.fy *0.6-jishizhujue.jnt *0.5)*baoji>0)
      {
   jishizhujue.hp =jishizhujue.hp -((jguaiwu.gj +jguaiwu.jnt-jishizhujue.fy *0.6-jishizhujue.jnt *0.5))*baoji;
   printf("/n它用土技能打掉了你%g的血!/n你就剩%d的血了!,怪物还有%d点/n/n/n/n",(jguaiwu.gj +jguaiwu.jnt-jishizhujue.fy *0.6-jishizhujue.jnj *0.5)*baoji,jishizhujue.hp,jguaiwu.hp  );
      }
   else
    printf("怪物没有破掉你的防/n/n/n/n");
   break;
  }
 }
 else
 {
  printf("怪物硬砍了!");
  baojilv=jguaiwu.sb /50*jishizhujue.sb ;
  if(baojilv<(rand()%100+1))
   baoji=1;
  else
  {
   baoji=1.1;
      printf("同时暴击了/n");
  }
  if((jguaiwu.gj -jishizhujue.fy *0.6)*baoji>0)
  {
  jishizhujue.hp =jishizhujue.hp -(jguaiwu.gj -jishizhujue.fy *0.6)*baoji;
  printf("它硬砍掉了你%g的血/n你就剩%d的血了!怪物还有%d点/n/n/n/n",(jguaiwu.gj -jishizhujue.fy *0.6)*baoji,jishizhujue.hp,jguaiwu.hp);
  }
  else
   printf("怪物没有破掉你的防/n/n/n/n");
 }
}
void jixu()//读取信息函数
{
 FILE *fp;
 if((fp=fopen("zhujue.blms","r+"))==NULL)
 {
  printf("程序意外退出,游戏并未建立成功");
  system("pause");
  exit(0);
 }
 jishizhujue.hp =getw(fp);
 jishizhujue.mp =getw(fp);
 jishizhujue.sd =(float)(getw(fp))/10000;
 jishizhujue.sb =(float)(getw(fp))/10000;
 jishizhujue.gj =(float)(getw(fp))/10000;
 jishizhujue.fy =(float)(getw(fp))/10000;
 jishizhujue.jnj =(float)(getw(fp))/10000;
 jishizhujue.jnm =(float)(getw(fp))/10000;
 jishizhujue.jns =(float)(getw(fp))/10000;
 jishizhujue.jnh =(float)(getw(fp))/10000;
 jishizhujue.jnt =(float)(getw(fp))/10000;
 jishizhujue.sxd =getw(fp);
 jishizhujue.jq =getw(fp);
 jishizhujue.dj =getw(fp);
 jishizhujue.jy =getw(fp);
 jishizhujue.xjy =getw(fp);
 jishizhujue.bjy =getw(fp);
 jishizhujue.syhp =getw(fp);
 jishizhujue.symp =getw(fp);
}
void maidongxi()
{
 system("cls");
 int xuanze;
 printf("欢迎光临");
 do
 {
  printf("您的可用金钱为%d/n按1买血/n按2买魔法/n按3买攻击/n按4买防御/n按5买速度/n按6买闪避/n按0退出买东西",jishizhujue.jq);
  scanf("%d",&xuanze);
  switch(xuanze)
  {
  case 1:int mxue;
   printf("请输入您要买的血量,一个金币一点/n");
   scanf("%d",&mxue);
   if(mxue>jishizhujue.jq)
   {
    printf("对不起,你没有那么多的钱,请仔细考虑!/n");
    system("pause");
   }
   else
   {
    jishizhujue.hp=jishizhujue.hp+mxue;
    jishizhujue.jq=jishizhujue.jq-mxue;
    printf("您买了%d点生命值/n",mxue);
    system("pause");
   }
   system("cls");
   break;
  case 2:int mmo;
   printf("请输入您要买的魔法量,一个金币一点/n");
   scanf("%d",&mmo);
   if(mmo>jishizhujue.jq)
   {
    printf("对不起,你没有那么多的钱,请仔细考虑!/n");
    system("pause");
   }
   else
   {
    jishizhujue.mp=jishizhujue.mp+mmo;
    jishizhujue.jq=jishizhujue.jq-mmo;
    printf("您买了%d点魔法值/n",mmo);
    system("pause");
   }
   system("cls");
   break;
  case 3:int mgong;
   printf("请输入您要买的攻击,您的等级乘10的金币买一点/n");
   scanf("%d",&mgong);
   if(mgong*(jishizhujue.dj*10)>jishizhujue.jq)
   {
    printf("对不起,你没有那么多的钱,请仔细考虑!/n");
    system("pause");
   }
   else
   {
    jishizhujue.gj=jishizhujue.gj+mgong;
    jishizhujue.jq=jishizhujue.jq-(mgong*(jishizhujue.dj*10));
    printf("您买了%d点攻击/n",mgong);
    system("pause");
   }
   system("cls");
   break;
  case 4:int mfang;
   printf("请输入您要买的防御,您的等级乘10的金币买一点/n");
   scanf("%d",&mfang);
   if(mfang*(jishizhujue.dj*10)>jishizhujue.jq)
   {
    printf("对不起,你没有那么多的钱,请仔细考虑!/n");
    system("pause");
   }
   else
   {
    jishizhujue.fy=jishizhujue.fy+mfang;
    jishizhujue.jq=jishizhujue.jq-(mfang*(jishizhujue.dj*10));
    printf("您买了%d点防御/n",mfang);
    system("pause");
   }
   system("cls");
   break;
  case 5:int msudu;
   printf("请输入您要买的速度点,您的等级乘30的金币买一点/n");
   scanf("%d",&msudu);
   if(msudu*(jishizhujue.dj*30)>jishizhujue.jq)
   {
    printf("对不起,你没有那么多的钱,请仔细考虑!/n");
    system("pause");
   }
   else
   {
    jishizhujue.sd=jishizhujue.sd+msudu;
    jishizhujue.jq=jishizhujue.jq-(msudu*(jishizhujue.dj*30));
    printf("您买了%d点速度/n",msudu);
    system("pause");
   }
   system("cls");
   break;
  case 6:int mshanbi;
   printf("请输入您要买的闪避点,您的等级乘30的金币买一点/n");
   scanf("%d",&mshanbi);
   if(mshanbi*(jishizhujue.sb*30)>jishizhujue.jq)
   {
    printf("对不起,你没有那么多的钱,请仔细考虑!/n");
    system("pause");
   }
   else
   {
    jishizhujue.sb=jishizhujue.sb+mshanbi;
    jishizhujue.jq=jishizhujue.jq-(mshanbi*(jishizhujue.dj*30));
    printf("您买了%d点闪避/n",mshanbi);
    system("pause");
   }
   system("cls");
   break;
  case 0:break;
  default:printf("请输入有效数字/n");
   system("pause");
   system("cls");
  }
 }while(xuanze!=0);
}
void main()
{
 srand((unsigned)time(NULL)); /*随机种子*/
 int xuanze;
 printf("欢迎进入游戏,请选择您要做的事情!/n1.新建游戏档案/n2.读取游戏并继续/n0.退出游戏/n");
 do
 {
  scanf("%d",&xuanze);
  switch(xuanze)
  {
  case 1:xinjian();
  case 2:jixu();youxi();break;
  case 0:baocun();exit(0);
  default:printf("/n请输入有效字符");
   system("pause");
   xuanze=3;
   system("cls");
   printf("请选择您要做的事情!/n1.新建游戏档案/n2.读取游戏并继续/n0.退出游戏/n");
  }
 }while(xuanze==3);
}
void shengji()
{
 printf("升级了!");
 system("pause");
 jishizhujue.hp =jishizhujue.hp *1.2;
 jishizhujue.mp =jishizhujue.mp *1.2;
 jishizhujue.sxd =jishizhujue.sxd +2;
 jishizhujue.gj =jishizhujue.gj *1.02;
 jishizhujue.fy =jishizhujue.fy *1.02;
 jishizhujue.dj ++;
 jishizhujue.bjy=jishizhujue.bjy *1.2;
 jishizhujue.xjy =jishizhujue.bjy ;
 jishizhujue.jy =0;
}
void shengli()
{
 jishizhujue.jy =jishizhujue.jy +zhangjingyan;
 jishizhujue.xjy =jishizhujue.xjy -zhangjingyan;
 if(jishizhujue.xjy <=0)
  shengji();
 else
 {
  baocun();
 }
 jishizhujue.jq =jishizhujue.jq +jguaiwu.jq ;
}
void sudu()//计算速度判断攻击
{
 int control=1,temp=jishizhujue.sd ,temp1=jishizhujue.sd ,ybianyi;
 while(control)
 {
  ybianyi=rand()%300;
  if(ybianyi<1)
   bianyi();
  jishizhujue.sd-=1;
  jguaiwu.sd -=1;
  if(jishizhujue.sd<=0)
  {
   zhujuegongji();
   if(jguaiwu.sd <=0&&jguaiwu.hp >0)
   {
    guaiwugongji();
    jguaiwu.sd =temp1;
   }
   jishizhujue.sd =temp;
  }
  else if(jguaiwu.sd <=0)
  {
   guaiwugongji();
   jguaiwu.sd =temp1;
  }
  else ;
  if(jishizhujue.hp <=0||jguaiwu.hp <=0)
  {
   jishizhujue.sd=temp;
   if(jishizhujue.hp <=0)
   {
    printf("/n很不幸的,你被怪物强奸了,给你一点血,逃命去吧!");
    system("pause");
    system("cls");
    jishizhujue.hp =1;
    baocun();
   }
   else
   {
    shengli();
    control=0;
   }
   control=0;
  }
 }
}
void youxi()//开始游戏函数
{
 int xuanze,jiashuxing;
 do
 {
  system("cls");
  printf("按1显示基本信息/n按2显示技能/n按3显示其他信息/n按4买东西/n按5开始战斗/n按6加属性点/n按0退出/n");
  scanf("%d",&xuanze);
  switch(xuanze)
  {
  case 1:printf("生命%d,魔法%d,速度%g,闪避%g,攻击%g,/n防御%g,属性点%d,等级%d,经验%d,剩余经验%d/n",jishizhujue.hp,jishizhujue.mp,jishizhujue.sd,jishizhujue.sb,jishizhujue.gj,jishizhujue.fy,jishizhujue.sxd,jishizhujue.dj,jishizhujue.jy,jishizhujue.xjy);
   system("pause");
   system("cls");
   break;
  case 2:printf("金技能%g,木技能%g,水技能%g,火技能%g,土技能%g/n,",jishizhujue.jnj,jishizhujue.jnm,jishizhujue.jns,jishizhujue.jnh,jishizhujue.jnt);
   system("pause");
   system("cls");
   break;
  case 3:printf("钱%d,可加血量%d,可加魔法%d/n",jishizhujue.jq,jishizhujue.syhp,jishizhujue.symp);
   system("pause");
   system("cls");
   break;
  case 4:maidongxi();
   break;
  case 5:zhandou();
   break;
  case 6:system("cls");
   do
   {
    system("cls");
    printf("您还有%d点可用点/n按1加速度/n按2加闪避/n按3加攻击/n按4加防御/n按0退出加点/n",jishizhujue.sxd );
    scanf("%d",&jiashuxing);
    switch(jiashuxing)
    {
    case 1:if(jishizhujue.sxd >=1)
        {
         jishizhujue.sd++;
         printf("您的速度加了一点,现在为%g点",jishizhujue.sd );
         system("pause");
         jishizhujue.sxd -=1;
        }break;
    case 2:if(jishizhujue.sxd >=1)
        {
         jishizhujue.sb ++;
         printf("您的闪避加了一点,现在为%g点",jishizhujue.sb );
         system("pause");
         jishizhujue.sxd -=1;
        }break;
    case 3:if(jishizhujue.sxd >=1)
        {
         jishizhujue.gj ++;
         printf("您的攻击加了一点,现在为%g点",jishizhujue.gj);
         system("pause");
         jishizhujue.sxd -=1;
        }break;
    case 4:if(jishizhujue.sxd >=1)
        {
         jishizhujue.fy ++;
         printf("您的防御加了一点,现在为%g点",jishizhujue.fy );
         system("pause");
         jishizhujue.sxd -=1;
        }break;
    case 0:break;
    default:printf("请输入有效数字!/n");system("pause");
    }
   }while(jiashuxing!=0);break;
  case 0:baocun();exit(0);
  default:printf("请输入有效字符");
   system("pause");
  }
 }while(xuanze!=0);
}
void zhandou ()//战斗函数
{
 int xuanze;//选择界面
 do
 {
  printf("请输入您到对付的怪物的等级,按0退出战斗/n");
  scanf("%d",&xuanze);
  jguaiwu.hp =10;
  jguaiwu.mp =6;
  jguaiwu.sd =2;
  jguaiwu.sb =1;
  jguaiwu.gj =3;
  jguaiwu.fy =2;
  jguaiwu.jnj =jguaiwu.jnm =jguaiwu.jns =jguaiwu.jnh =jguaiwu.jnt =1;
  jguaiwu.jq =10;
  jguaiwu.dj =1;
  if(xuanze==0);
  else
  {
   int temp,temp2;
   temp=xuanze-jguaiwu.dj ;
   for(int i=0;i<temp;i++)
   {
    jguaiwu.hp =jguaiwu.hp * 1.15;//计算怪物血量
    jguaiwu.mp =jguaiwu.mp * 1.15;//计算怪物魔法值
    jguaiwu.sd =jguaiwu.sd *1.03;//计算怪物速度
    jguaiwu.sb =jguaiwu.sb *1.03;//计算闪避
    jguaiwu.gj =jguaiwu.gj *1.03;//计算攻击
    jguaiwu.fy =jguaiwu.fy *1.03;//计算防御
    jguaiwu.jnj=jguaiwu.jnj*1.03;
    jguaiwu.jnj=jguaiwu.jnj*1.03;
    jguaiwu.jnj=jguaiwu.jnj*1.03;
    jguaiwu.jnj=jguaiwu.jnj*1.03;
    jguaiwu.jnj=jguaiwu.jnj*1.03;
    jguaiwu.jq=jguaiwu.jq*1.08;//计算金钱1
   }
   jguaiwu.dj =xuanze;
   zhangjingyan=jguaiwu.hp /10;//计算能获得的经验
   temp2=rand()%5;
   switch(temp2)
   {
   case 0:jguaiwu.jnj=jguaiwu.jnj*1.38;
    jguaiwu.jn=0;break;
   case 1:jguaiwu.jnm=jguaiwu.jnm*1.38;
    jguaiwu.jn=1;break;
   case 2:jguaiwu.jns=jguaiwu.jns*1.38;
    jguaiwu.jn=2;break;
   case 3:jguaiwu.jnh=jguaiwu.jnh*1.38;
    jguaiwu.jn=3;break;
   case 4:jguaiwu.jnt=jguaiwu.jnt*1.38;
    jguaiwu.jn=4;
   }//确定主技能
   temp2=rand()%80-40;
   jguaiwu.jq=jguaiwu.jq+jguaiwu.jq*temp2/100;
   sudu();
  }
 }while(xuanze!=0);
}
void zhujuegongji()
{
 printf("终于轮到你攻击了/n");
 int xuanze;
 float baojilv,baoji;
 do
 {
  baojilv=jishizhujue.sb /(2*jguaiwu.sb)*100;
  if(baojilv<(rand()%100+1))
   baoji=1;
  else
  {
   baoji=1.1;
  }
  printf("请输入你要做的事情");
  scanf("%d",&xuanze);
  switch(xuanze)
  {
  case 1:if(jishizhujue.mp -jishizhujue.jnj>=0)
      {
       if((jishizhujue.gj +jishizhujue.jnj-jguaiwu.fy *0.6-jguaiwu.jnj *0.5)*baoji>0)
       {
      jguaiwu.hp =jguaiwu.hp -(jishizhujue.gj +jishizhujue.jnj-jguaiwu.fy *0.6-jguaiwu.jnj *0.5)*baoji;
      if(baoji==1.1)
       printf("你用的金技能,同时暴击,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnj-jguaiwu.fy *0.6-jguaiwu.jnj *0.5)*baoji);
      else
       printf("你用的金技能,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnj-jguaiwu.fy *0.6-jguaiwu.jnj *0.5));
      jishizhujue.mp =jishizhujue.mp -jishizhujue.jnj ;
      if(jguaiwu.hp >0)
       printf("你还剩%d的血,%d的魔,它还剩%d的血,加油啊!/n/n",jishizhujue.hp ,jishizhujue.mp ,jguaiwu.hp );
      else
       printf("胜利啦!/n");
      jishizhujue.jnj =jishizhujue.jnj *1.01;
       }
       else
        printf("很遗憾,你没破掉怪物的防御");
      }
    else
    {
     printf("你的魔法值不够了/n");
     system("pause");
     xuanze=0;
    }
    break;
  case 2:if(jishizhujue.mp -jishizhujue.jnm>=0)
      {
       if((jishizhujue.gj +jishizhujue.jnm-jguaiwu.fy *0.6-jguaiwu.jnm *0.5)*baoji>0)
       {
      jguaiwu.hp =jguaiwu.hp -(jishizhujue.gj +jishizhujue.jnm-jguaiwu.fy *0.6-jguaiwu.jnm *0.5)*baoji;
      if(baoji==1.1)
       printf("你用的金技能,同时暴击,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnm-jguaiwu.fy *0.6-jguaiwu.jnm *0.5)*baoji);
      else
       printf("你用的金技能,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnm-jguaiwu.fy *0.6-jguaiwu.jnm *0.5));
      jishizhujue.mp =jishizhujue.mp -jishizhujue.jnm ;
      if(jguaiwu.hp >0)
       printf("你还剩%d的血,%d的魔,它还剩%d的血,加油啊!/n/n",jishizhujue.hp ,jishizhujue.mp ,jguaiwu.hp );
      else
       printf("胜利啦!/n");
      jishizhujue.jnm =jishizhujue.jnm *1.01;
       }
       else
        printf("很遗憾,你没破掉怪物的防御");
      }
    else
    {
     printf("你的魔法值不够了/n");
     system("pause");
     xuanze=0;
    }
    break;
  case 3:if(jishizhujue.mp -jishizhujue.jns>=0)
      {
     if((jishizhujue.gj +jishizhujue.jns-jguaiwu.fy *0.6-jguaiwu.jns *0.5)*baoji>0)
     {
      jguaiwu.hp =jguaiwu.hp -(jishizhujue.gj +jishizhujue.jns-jguaiwu.fy *0.6-jguaiwu.jns *0.5)*baoji;
      if(baoji==1.1)
       printf("你用的水技能,同时暴击,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jns-jguaiwu.fy *0.6-jguaiwu.jns *0.5)*baoji);
      else
       printf("你用的水技能,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jns-jguaiwu.fy *0.6-jguaiwu.jns *0.5));
      jishizhujue.mp =jishizhujue.mp -jishizhujue.jns ;
      if(jguaiwu.hp >0)
       printf("你还剩%d的血,%d的魔,它还剩%d的血,加油啊!/n/n",jishizhujue.hp ,jishizhujue.mp ,jguaiwu.hp );
      else
       printf("胜利啦!/n");
      jishizhujue.jns =jishizhujue.jns *1.01;
     }
       else
        printf("很遗憾,你没破掉怪物的防御");
      }
    else
    {
     printf("你的魔法值不够了/n");
     system("pause");
     xuanze=0;
    }
    break;
  case 4:if(jishizhujue.mp -jishizhujue.jnh>=0)
      {
     if((jishizhujue.gj +jishizhujue.jnh-jguaiwu.fy *0.6-jguaiwu.jnh *0.5)*baoji>0)
     {
       jguaiwu.hp =jguaiwu.hp -(jishizhujue.gj +jishizhujue.jnh-jguaiwu.fy *0.6-jguaiwu.jnh *0.5)*baoji;
      if(baoji==1.1)
       printf("你用的火技能,同时暴击,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnh-jguaiwu.fy *0.6-jguaiwu.jnh *0.5)*baoji);
      else
       printf("你用的火技能,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnh-jguaiwu.fy *0.6-jguaiwu.jnh *0.5));
      jishizhujue.mp =jishizhujue.mp -jishizhujue.jnh ;
      if(jguaiwu.hp >0)
       printf("你还剩%d的血,%d的魔,它还剩%d的血,加油啊!/n/n",jishizhujue.hp ,jishizhujue.mp ,jguaiwu.hp );
      else
       printf("胜利啦!/n");
      jishizhujue.jnh =jishizhujue.jnh *1.01;
     }
       else
        printf("很遗憾,你没破掉怪物的防御");
      }
    else
    {
     printf("你的魔法值不够了/n");
     system("pause");
     xuanze=0;
    }
    break;
  case 5:if(jishizhujue.mp -jishizhujue.jnt>=0)
      {
     if((jishizhujue.gj +jishizhujue.jnt-jguaiwu.fy *0.6-jguaiwu.jnt *0.5)*baoji>0)
     {
       jguaiwu.hp =jguaiwu.hp -(jishizhujue.gj +jishizhujue.jnt-jguaiwu.fy *0.6-jguaiwu.jnt *0.5)*baoji;
      if(baoji==1.1)
       printf("你用的土技能,同时暴击,打掉了怪物%g的血/n/n",(jishizhujue.gj +jishizhujue.jnt-jguaiwu.fy *0.6-jguaiwu.jnt *0.5)*baoji);
      else
       printf("你用的土技能,打掉了怪物%g的血/n",(jishizhujue.gj +jishizhujue.jnt-jguaiwu.fy *0.6-jguaiwu.jnt *0.5));
      jishizhujue.mp =jishizhujue.mp -jishizhujue.jnt ;
      if(jguaiwu.hp >0)
       printf("你还剩%d的血,%d的魔,它还剩%d的血,加油啊!/n/n",jishizhujue.hp ,jishizhujue.mp ,jguaiwu.hp );
      else
       printf("胜利啦!/n");
      jishizhujue.jnt =jishizhujue.jnt *1.01;
     }
     else
        printf("很遗憾,你没破掉怪物的防御");
      }
    else
    {
     printf("你的魔法值不够了/n");
     system("pause");
     xuanze=0;
    }
    break;
  case 6:if((jishizhujue.gj-jguaiwu.fy )*baoji>0)
      {
     printf("你硬砍掉了怪物%g点血/n",(jishizhujue.gj-jguaiwu.fy )*baoji);
     jguaiwu.hp =jguaiwu.hp -(jishizhujue.gj -jguaiwu.fy )*baoji;
     if(jguaiwu.hp >0)
     {
      printf("你还剩%d点的血,%d点的魔,怪物还有%d点的血,加油啊!/n/n",jishizhujue.hp ,jishizhujue.mp ,jguaiwu.hp );
     }
     else
     {
      printf("胜利啦!/n");
     }
      }
   else
    printf("很遗憾,你没破掉怪物的防御");
   break;
  default:printf("/n请输入有效数字/n");
   system("pause");
   system("cls");
   xuanze=0;
  }
 }while(xuanze==0);
}

shuxing.h

struct zhujue
{
 int mp;
 int hp;
 float sd;
 float sb;
 float gj;
 float fy;
 float jnj;
 float jnm;
 float jns;
 float jnh;
 float jnt;
 int sxd;
 int jq;
 int dj;
 int jy;
 int xjy;
 int bjy;
 int syhp;
 int symp;
};
struct guaiwu
{
 int hp;
 int mp;
 float sd;
 float sb;
 float gj;
 float fy;
 float jnj;
 float jnm;
 float jns;
 float jnh;
 float jnt;
 int jq;
 int dj;
 int jn;
};

 

xinjian.h

void xinjian()
{
 FILE *fp;
 int mima;
 printf("为了防止误按,请输入密码!");
 scanf("%d",&mima);
 if(mima!=54919487)
 {
  printf("输入密码错误,程序退出!");
  system("pause");
  exit(0);
 }
 if((fp=fopen("zhujue.blms","w+"))==NULL)
 {
  printf("程序意外退出,游戏并未建立成功");
  exit(0);
 }
 putw(10,fp);
 putw(8,fp);
 putw(20000,fp);
 putw(10000,fp);
 putw(30000,fp);
 putw(20000,fp);
 putw(10000,fp);
 putw(10000,fp);
 putw(10000,fp);
 putw(10000,fp);
 putw(10000,fp);
 putw(1,fp);
 putw(0,fp);
 putw(1,fp);
 putw(0,fp);
 putw(20,fp);
 putw(20,fp);
 putw(0,fp);
 putw(0,fp);
 fclose(fp);
 printf("游戏数据已经建立,请继续游戏!");
 system("pause");
}

前言 10 场景说明 11 基础知识简介 14 Linux 14 Linux产生与发展 14 Linux特点和优势 15 Shell 16 Shell脚本语言与编译型语言的差异 17 Shell分类 18 Shell使用 19 项目一 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42 1.3.3 系统管理命令 52 1.3.4 关机/重启/退出 53 1.3.5 安装操作命令 53 1.3.6 用户操作命令 54 1.3.7 网络下载命令 55 1.3.8 服务操作命令 57 任务1.4 Shell脚本 58 1.4.1 第一个shell脚本:Hello World 58 1.4.2 脚本介绍 59 1.4.3 shell程序结构 59 1.4.4 shell脚本运行 60 任务1.5 Shell案例:打印有色彩的文本 61 任务1.6 Shell案例:图案打印 62 练习(每题10分,共计100分) 66 项目二 Shell变量 67 [学习目标] 67 任务2.1 Linux环境变量 68 2.1.1 查看环境变量 69 任务2.2 Shell变量 70 2.2.1 定义变量 70 2.2.2 使用变量 70 2.2.3 只读变量 71 2.2.4 删除变量 72 任务2.3 特殊符号 72 任务2.4 Shell案例:显示系统信息: 78 练习(每题12.5分,共计100分) 80 项目三 Shell传递参数 81 [学习目标] 81 任务3.1 Shell传递参数 82 任务3.2 Shell案例:参数比较 85 任务3.3Shell案例:通过参数描述变量 86 练习(前两题每题30分,第三题40分,共计100分) 87 项目四 Shell数组 89 [学习目标] 89 任务4.1 定义数组 90 任务4.2 使用数组 90 任务4.3 Shell案例:数组的使用 92 练习(100分) 95 项目五 Shell运算符 96 [学习目标] 96 任务5.1 Shell基本运算符 97 5.1.1 运算符 97 5.1.2 算术运算符 97 5.1.3 关系运算符 99 5.1.4 布尔运算符 101 5.1.5 逻辑运算符 103 5.1.6 字符串运算符 104 5.1.7 文件测试运算符 106 任务5.2 Shell案例:计算器 109 练习(每题25分,共计100分) 111 项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 项目七 Shell流程控制 126 [学习目标] 126 任务7.1 Shell流程控制 127 7.1.1 if 判断语句 127 7.1.2 for 循环语句 130 7.1.3 while 循环语句 131 7.1.4 until 循环语句 134 7.1.5 case多选语句 135 7.1.6 跳出循环体 137 任务7.2 Shell案例:重复执行命令和简单计算器 139 任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141 练习(前两题每题30分,第三题40分,共计100分) 144 项目八 Shell函数 146 [学习目标] 146 任务8.1 Shell函数 147 8.1.1 Shell中函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目九 Shell输入/输出重定向 158 [学习目标] 158 任务9.1 linux文件描述符 159 任务9.2 Shell输入/输出重定向 160 9.2.1 输出重定向 160 9.2.2 输入重定向 163 9.2.3 重定向深入讲解 164 任务9.2 Shell案例:通过重定向测试批量添加ip 166 练习(每题25分,共计100分) 169 项目 Shell文件包含 171 [学习目标] 171 任务10.1 Shell文件包含 172 任务10.2 Shell案例:查找最大文件 172 练习(每题50分,共计100分) 174 项目Shell文本处理命令 175 [学习目标] 175 任务11.1 学习和使用grep 176 任务11.2 学习和使用sed 179 任务11.3 学习和使用cut 183 任务11.4 学习和使用awk 185 练习(第一题10分,第2-7每题15分,共计100分) 188 项目Shell的调试 189 [学习目标] 189 任务12.1 使用trap命令 190 任务12.2 使用tee命令 192 任务12.3 使用“调试钩子” 193 任务12.4 使用Shell的执行选项 194 练习(每题50分,共计100分) 196 项目Shell综合案例一(lnmp+wordpress) 197 [学习目标] 197 任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198 13.1.1 准备工作 198 13.1.2 安装Mysql5.6.29 199 13.1.3 安装PHP5.5.12 202 13.1.4 安装Nginx1.10 205 13.1.5 安装WordPress 206 13.1.6 启动网页 207 任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207 13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,共计100分) 218 项目shell综合案例二(安装Openstack) 219 [学习目标] 219 任务14.1 手动安装Openstack 220 什么是Openstack 220 14.1.1基本环境准备 222 14.1.2 安装mysql数据库服务 225 14.1.3 安装keystone认证服务 226 14.1.4 安装glance镜像服务 230 14.1.5 安装nova计算服务 233 14.1.6 安装neutron网络服务 238 14.1.7 安装dashboard服务 248 任务14.2 脚本安装openstack 250 14.2.1 基本环境脚本的编写 255 14.2.2 mysql脚本的编写 256 14.2.3 keystone脚本的编写 258 14.2.4 glance脚本的编写 263 14.2.5 nova脚本的编写 266 14.2.6 neutron脚本的编写 270 14.2.7 dashboard脚本的编写 279 14.2.8 验证登录,使用openstack 280 附录Shell编码规范说明 295 1. 什么时候使用shell 295 2.Shell文件和解释器调用 295 3.环境 296 4.注释 296 5.格式 298 6.特性及错误 304 7.命名转换 308 8.调用命令 311
Linux shell编程实训是一种实践性很强的学习方式,通过编写shell脚本来实现各种任务和操作。这种实训能够提升学生对Linux系统的理解和应用能力,同时也能够培养他们的逻辑思维和问题解决能力。 在Linux shell编程实训中,学生需要学习shell脚本的语法和基本命令,例如变量、条件语句、循环语句等。通过掌握这些基础知识,学生可以编写出各种实用的脚本来完成自动化任务,比如批量处理文件、监控系统运行状态等。 在实训过程中,学生不仅需要学习相关知识,还需要进行大量的实践操作。他们可以根据实际需求,设计并实现自己的脚本,并通过测试来验证其功能的正确性。实践操作可以帮助学生加深对知识的理解和记忆,同时也能够锻炼他们的动手能力和解决问题的能力。 通过Linux shell编程实训,学生可以学到很多实用的技能。比如,他们可以学会如何通过shell脚本来自动化任务,提高工作效率。他们还可以学会如何通过脚本来监控系统运行状态,及时发现问题并解决。这些技能对于日常工作和学习都非常有帮助。 总之,Linux shell编程实训是一种非常实践性强的学习方式,可以提升学生的Linux系统应用能力和解决问题能力。通过实际操作,学生可以掌握shell脚本的语法和命令,学会编写实用的脚本,并应用于各种场景中。同时,这种实训也能够培养学生的逻辑思维和动手能力,为他们今后的发展打下坚实的基础。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值