用文件记录游戏最高分【C语言】

玩记分游戏时,有时希望看到历史最高分


思路

  • 游戏开始,打开最高分存储文件(区分存在和不存在两种情况)
  • 读取文件内容并存储在变量中(一串数字),关闭文件
  • 游戏中及时更新
  • 游戏结束,打开最高分文件并写入新的最高分,关闭文件

一些准备工作

  • IDE: VC++6.0
  • 了解可能用到的特殊函数: fopen(),fclose(),fscanf(),fprintf()
  • 注意:
  • 文件打开异常的处理(以只读方式r打开不存在的文件会出错)
  • 用什么函数来读取写入数据(处理数字)

开始写代码

  • 预处理指令:
# include <stdio.h>
  • 主函数:
int main(void)

{
    int highscore = 0;  //存储最高分
    int score = 0;      //当前次,游戏得分

    //获取历史最高分
    getHighScore(&highscore);
    printf("Original high score: %d\n", highscore);

    //假装:游戏中,追踪最高分
    printf("->Start game!\n");
    score = 99;
    if (score > highscore)
        highscore = score;
    printf("->SJL, you win!\n");
    
    //存入当前最高分
    printf("New high score: %d\n", highscore);
    storeHighScore(highscore);

    return 0;
}
  • 获取最高分函数:getHighScore():
//如果把此函数写在main函数后面,记得在main函数前面某行处,加上函数声明!
void getHighScore(int * highscore)
{
    FILE * fp = NULL;   //文件指针,指向成功打开的文件

    //打开文件,以只读的方式r
    fp = fopen("highscore.txt","r");

    //如果文件不存在,打开文件,以写入的方式w
    if (fp == NULL)
    {
        fp = fopen("highscore.txt","w");
        fprintf(fp, "%-10d", *highscore);
    }
    else
        fscanf(fp, "%10d", highscore);

    //关闭文件
    fclose(fp);
}
  • 存入当前最高分函数:storeHighScore():
//如果把此函数写在main函数后面,记得在main函数前面某行处,加上函数声明!
void storeHighScore(int highscore)
{
    FILE * fp = NULL;

    fp = fopen("highscore.txt","w");
    fprintf(fp, "%-10d", highscore);
    fclose(fp);
}
  • 编译链接运行:
    程序运行结果
    文件

扩展

  • 考虑一下:

    • 如果是记录前10个玩家的最高分(10行数字),又怎么处理?
    • 如果是处理字符,而不是数字,该怎么做?
    • 以不同的方式打开文件,可以用什么函数,把数据读取或写入文件?
    • emmmm,暂时只想到这么多……
  • 总结:

    • 目标。 用C语言实现用文件记录最高分的功能
    • 准备工作。 主要是了解文件相关的函数有哪些,怎么用
    • 写查改。 开始撸代码,完成预想的功能

最后

水平不高,可能还有做得不够好的地方,
希望能和大家交流学习,
转载请注明出处。

  • 27
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值