//此处为本俄罗斯方块程序的主函数。
//程序作者或许是个叫做wxd的人。
//强烈建议先看all functions.h再看这个主函数源文件。
#include "all functions.h" //声明all functions.h,使其中的自定义函数可在本函数中进行引用。
void main()//以下为主函数
{
int again=1,i,j;
if((fp=fopen("D:/highscore.wxd","r"))==NULL) //这里要讲的东西都很基本。看书吧。p335开始。p336的例子是关键。
{
fp=fopen("D:/highscore.wxd","w"); //w参数就是write的意思,进行写入操作。如果文件不存在(到了这一步说明肯定不存在)就新建一个。
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
strcpy(mark[i][j].name,"(NULL)"); //这里其实是在初始化这个文件。将score的值全部为0,将name全部赋值"(NULL)"
mark[i][j].score=0; //(also也不懂什么是"(NULL)"),由于mark[i][j].name是个字符数组,所以不能直接令mark[i][j].name="(NULL)"。我们学过,不能直接对一个字符数组用'='赋值,所以这里用到了strcpy。只有将新文件的score变为0了才能再第一次运行程序后进行是否“破纪录”的判断。
//初始化某个文件或者地图是C语言很常见的一种思想。
fputs("(NULL) 0\n",fp); //将 (NULL) 0\n 写入fp(此时fp已被指向D:/highscore.wxd)中。
}
fp=fopen("D:/highscore.wxd","r"); //读入此文件。如果你有一定的电脑基础,会发现一个奇怪的拓展名在这里。其实.wxd不是任何已知文件的拓展名,可能是作者的名字吧。在windows的console下,默认情况下读入程序都是当作纯文本的,所以即使你存为.exe或者.rar也没关系。照样当作.txt来读。以后学到linux的命令的时候也是这样,拓展名神马的有时候是浮云。
}
{
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
fscanf(fp,"%s",mark[i][j].name); //关于fscanf的说明在课本p334。看那个10.3.3你就肯定可以理解这里了。
fscanf(fp,"%d",&mark[i][j].score); //这是从文件读入数据的一个操作
}
}
fclose (fp); //关闭fp。这样从能将缓冲区的数据正式写入文件。此时fp也释放了内容,不再指向highscore.wxd
while(again) //此处开始真正run程序了。
{
drawFrame(); //画游戏框
createBlock(); //随机生成方块
gameover=0; //以下四个都是全局变量,也是游戏很重要的判断参数。
score=0;
playagain=0;
level=0;
play(); //游戏的主要过程。具体去看play()函数吧。
again=over(); //通过over()函数的返回值决定是否跳出while(again)
}
gotoxy(22,15);
puts(" ");
gotoxy(25,16);
puts(" ");
gotoxy(15,12);
puts(" ");
gotoxy(17,11);
puts("Thank you for playing!");
fp=fopen("D:/highscore.wxd","w"); //以write形式打开highscore.wxd
for(i=0;i<3;i++)
for(j=0;j<3;j++)
fprintf(fp,"%s %d\n",mark[i][j].name,mark[i][j].score); //fprintf是将内容输出到一个文件中。此处是将游戏者的姓名和分数存入D:/highscore.wxd中。
fclose(fp); //从缓存中写入文件。
gotoxy(1,25);
system("pause"); //这个的作用就是让程序出现“按任意键继续”,如果注释掉的话,游戏就直接结束关闭了。
//wxdwxd();这八成是作者名字的缩写。
}
超级详细注释的c语言俄罗斯方块程序源文件
4星 · 超过85%的资源 需积分: 50 31 浏览量
2010-12-22
18:55:02
上传
评论 2
收藏 412KB ZIP 举报
tzl075619
- 粉丝: 2
- 资源: 12
最新资源
- 基于opencv的dnn模块实现Yolo-Fastest的目标检测python源码+模型+说明(高分项目).zip
- 使用Python调用微信本地ocr服务.zip
- 【精品推荐】人工智能在医疗中的应用.pptx
- 【精品推荐】电子医疗仪器人机接口-(1).ppt
- 【精品推荐】电子医疗仪器人机接口.ppt
- ubuntu镜像ubuntu镜像01
- 基于paddle搭建神经网络实现5种水果识别分类python源码+数据集(高分毕设).zip
- 【精品推荐】电子商务网店类型介绍.ppt
- 基于paddle搭建神经网络实现水果识别分类python源码+数据集(高分项目).zip
- 三菱plc编程口通信学习笔记.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页