| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 546 人关注过本帖
标题:帮帮忙
只看楼主 加入收藏
regulate_lian
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-3-8
收藏
 问题点数:0 回复次数:2 
帮帮忙
一个小游戏
前面部分的功能是能得到choose的值(值1,2,3分别表示不同的难度)和一个本次本难度玩游戏的得分score,选择不同难度游戏结束时,会输出不同难度的最高分和本次得分,我的问题在删除难度3的所有语句的时候能正常游戏,加入难度3的时候,难度3的最高分总是不正确,与难度1,2,3有关的语句,我都是用case:语句,加入难度3的时候就只需要在各个switch语句下多一个case:3 ...;若是不没时间看程序段,请指点下最后面所提出的问题.
struct Defen
{
  int s[3];/*成员数组s的元素s[0],s[1],s[2]分别存难度1,2,3的本次游戏得分score*/
  struct Defen *next;
}defen;/*得分结构体*/

void GameOver(void)
{
   
  FILE *into,*outf;
  struct Defen *q,*p,*head;
  int n=0,m;
    cleardevice();
    PrScore();
   switch(choose)
  {
   case 1:defen.s[0]=score,defen.s[1]=defen.s[2]=0;break;/*玩一中难度时,另外两种难度的得分为0*/
   case 2:defen.s[1]=score,defen.s[0]=defen.s[2]=0;break;
   case 3:defen.s[2]=score,defen.s[0]=defen.s[1]=0;break;
  }

  if((into=fopen("score.txt","a"))==NULL)/*打开一个名为score.txt的文本文挡,没有就建立一个*/
  {
   printf("cannot open file\n");
   exit(0);
  }
  fwrite(&defen,sizeof(struct Defen),1,into);
         /*把从&defen开始的1*sizeof个字节输出到into所指向的文件中*/
  fclose(into);
  if((outf=fopen("score.txt","r"))==NULL)
  {
   printf("cannot open file");
   exit(0);
  }
  head==NULL;
  p=q=(struct Defen*)malloc(sizeof(struct Defen));/*申请空间*/
  fread(p,sizeof(struct Defen),1,outf);
  while(!feof(outf))/*建立链表----*/
  {
   n+=1;
   if(n==1) head=p;
   else q->next=p;
   q=p;
   p=(struct Defen*)malloc(sizeof(struct Defen));
   fread(p,sizeof(struct Defen),1,outf);
  }
  q->next==NULL;/*-----建立链表*/
  fclose(outf);
  switch(choose)
 {
  case 1:m=0,MAX(head,n,m);break;
  case 2:m=1,MAX(head,n,m);break;
  case 3:m=2,MAX(head,n,m);break;
 }
   setcolor(RED);
   settextstyle(0,0,4);
   outtextxy(200,200,"GAME OVER");
   getch();
}
/*输出成绩*/
void PrScore(void)
{  
   char str[10];
   setfillstyle(SOLID_FILL,YELLOW);
   bar(50,15,220,35);
   setcolor(6);
   settextstyle(0,0,2);
   sprintf(str,"score:%d",score);
   outtextxy(55,20,str);
 
   
}
/*找出最大分数*/
int MAX(struct Defen *h,int n,int m)
{
  char st[20];
  int z=h->s[m];
  for(i=0;i<n;i++)
  {
    h=h->next;
    z=(z>=h->s[m])?z:h->s[m];
  }
  settextstyle(0,0,2);
  sprintf(st,"max score:%d",z);
  outtextxy(55,50,st);
}
/*图形结束*/
void Close(void)
{   
    getch();
    closegraph();
}

/////结构体类型的指针能不能取其成员(数组)里面的元素,如h->s[m],或者结构体变量取其元素,如defen.s[0],这样的两种用法是否正确.
搜索更多相关主题的帖子: 游戏 玩游戏 
2008-03-08 22:46
regulate_lian
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-3-8
收藏
得分:0 
沉了 沉了..:\'(
高手至少指点下代码最下面的两个问题啊..:\'(
2008-03-09 10:55
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
这两种用法是正确的

雁无留踪之意,水无取影之心
2008-03-09 13:30
快速回复:帮帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040796 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved