小鼬课堂middotC语言课设第

鉴于许多大一的同学最近都忙于完成C语言课设,并且有许多疑惑,那么小鼬就邀请到了有着课设编程经验并且取得过相当不错成绩的多位学长为大家解答课设中遇到的几个比较集中的问题,希望帮助到大家完成C语言课程设计。首先由计科实验班的崔容学长为大家介绍课设中第一个需要明确的核心问题——“课设的主体结构应该是什么样的?”。希望有需要的同学仔细阅读,相信你一定会有收获的!

主体程序结构

课设程序的主要结构分为:

头文件主函数其他函数文件

#头文件#是结构体定义和链表节点的定义。

你可以忽略函数原型这一项(如果你不打算或没有被要求多文件编程的话)。

#主函数#包含初始化阶段。

主要工作:

为玩家操控的物体单独建立结构体+为其他物体建立链表并分配空间。

如果要求初始阶段即包含或生成物体的话,那么在这里就应该Insert相应的物体。

#其他函数文件#包含所有模块化函数。

需要注意,每个模块只应该完成它名字意义所包含的工作。例如,在Move函数里就不应该有Display打印图片这一功能。这样的模块化编程是十分可取的,也会很有效的提升在debug时的效率。

结构体定义

在这里,为大家介绍一下结构体定义的可取方法,强烈建议大家按照这种方法定义用来存储物体的结构体。

每一个物体的属性基本都是共有的。比如就拿飞机打坦克小游戏为例,飞机与坦克都有横纵坐标、宽度和高度的属性,也都需要移动,只是一串坦克需要进行编号,此时就可以设置一个tag属性将坦克从1~n进行标号,而唯一的飞机就可以标为0号,所以无论是飞机还是坦克都可以共有一个结构体定义。

链表定义

链表(主要是单链表)是C语言课设中主要用到的一种存储结构,在课程要求中占到很大的地位。以下是链表节点定义的可取方法,强烈建议大家按照这种方法定义链表结点。

应该明确的是,“链表”只是一种存储结构,其中包含了结构体的属性,而它并不是一种具体的方法。

每一个链表都由头指针、节点组成,其中每个结点的结构都如上图所示,即每个节点都包含数据域和指针域。

具体到以上定义,就是obj为数据域,内容为结构体,包含了物体的属性;而指针域为next,指向了下一个指针。

主体结构

在主体程序结构实现中包含了

主函数的初始化主循环和结束的大致实现。

在这里先解释一下,Settings是笔者定义的一个结构体,里面包含课设需要的系统设定,比如说剩余时间、难度等参数,在InitSetting函数里面分配空间和设定自定义参数。主循环While之前的都是初始化部分,主要就是为各种变量分配空间,并且先挂起在主菜单界面上。

#主循环部分#是整个课设的重中之重。

主体流程应该被分割为

插入元素

(根据时间间隔判断是否插入元素)

控制台

(根据玩家指令(键盘/鼠标操作)发送运行函数的指令)

开始批操作

判定

(根据游戏规则进行各种判定然后更改物体属性)

移动

(遍历链表和玩家操控的物体改变坐标属性)

重新刷新背景

打印所有物体的图片

(其中涉及掩码图,会在后面的小鼬课堂中介绍)

睡眠

(控制显示的帧数到一个合适范围内)

结束批操作

而跳出主循环的条件应该在Judge中设置,以完成结束函数的控制。

结束

相信大家在阅读了崔容学长的关于课设程序主体结构的介绍以后都十分有收获。

下期小鼬课堂还会为大家继续带来关于课设知识的介绍。

如果你有什么关于课设的问题,也可以在下方留言,小鼬会努力寻找各位有经验的学长学姐分享自己的经验和见解,努力帮助大家解答疑惑的哦!再预告一下,下期会有优秀课设代码的链接发放哦!

下期再见

供稿:学习实践部

编辑:郭悦聪

预览时标签不可点收录于话题#个上一篇下一篇


转载请注明:http://www.nydjfy.com/bcxx/bcxx/14667.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了