大一上计算机大作业个人小结:游戏《妮可迷惑日常》,DirectX,WinAPI实战

前言

历时一个月,终于完成了人生中第一个游戏&计算机大作业《妮可迷惑日常》。首先自然是鸣谢一下两位合作大佬的帮助和包容。

关于游戏

这是一款基于DirectX中的DirectDraw和DirectInput,winapi开发的2D横版跑酷类游戏,游戏素材来自网络,游戏机制:玩家自主输入难度,空格二段跳,下滑键强制落地,碰撞判定机制是碰到障碍物(书本)扣血条,碰到“卷”标记加血条,超过100血条消失,超过150直接死亡,碰到地板左右边沿直接死亡。

内含小剧场,游戏结束且成功可能会套娃一些友好的小游戏。

内含服务器,可以pvp(局域网)。pvp具体操作见游戏说明。

以下是游戏安装的百度云连接,由于vs不会从debug改成release(错误太多qwq)所以安装流程比较繁琐,有兴趣下载并且看不懂安装教程的可以私我。

链接:https://pan.baidu.com/s/1Hhibhb9afhFjH_7rv0llsA
提取码:cho4
复制这段内容后打开百度网盘手机App,操作更方便哦

个人的游戏评价

可玩性基本达到预期,学习价值大于娱乐价值。DirectDraw是一款自由度比较高的底层插件,仅仅提供几个画图类接口函数,动画引擎全部自己编写,不足之处在所难免。地图结构勉强算是合理,但是也有一些比较阴间的地方,限于时间暂未改进。不过整体游戏框架完整,完成度比较优秀。

个人小结:技术篇(非信息类建议跳过)

1.接触了DirectX(一个很牛逼的玩意儿,但是很难用),初步了解COM编程(纯虚类+接口函数的编程框架和理念)。(推荐《windows游戏编程大师》,有点难啃但是很详尽,技术有些过时但是够用)(16位色彩窗口真滴阴间)

2.自己写了一个动画引擎,学会三缓冲视频技术(离屏表面,后备缓冲,主显示表面的相互转化),使得画面较为流畅(毕竟是直接和windows硬件协作的directdraw),还有一些设计碰撞箱的图像处理技术(透明度,色彩键,图形缩放)

3.基本掌握winapi窗口模式下的编程还有相关GDI的运用,还有GDI和DirectDraw的协作(自己写了一个CFont类,没用MFC真滴伤)。没怎么啃书,基本上直接套网上模板然后vs上用必应搜索。以及研读合作大佬的代码。

4.初步了解socket编程,大致理解了套接字的含义以及网络协议的相关运作,以前python上有看到过但是迷迷糊糊的,这次自己写了一个客户端实例化了之后还是蛮清楚的。当然还有windapi的多线程编程(其实就是一个函数CreateThread而已)

5.真正意义上接触OOP,游戏主体,地图等绝大部分(除了客户端和服务端)采用类及其实例化。以及纯虚类的使用和继承。基础框架要感谢合作大佬

个人小结:合作篇

1.终于改掉了多年积累的压行的坏习惯,现在看到一大段胖胖的代码就头疼。

2.学习了匈牙利命名法,写注释以及适时写函数和换行,这三招基本解决了大部分有关代码可读性的问题。

3.任务分配有时候协商不太到位,但是总体而言各司其职,想法不同时也会各抒己见达成共识。

4.整合代码花费了太多时间,强烈建议下一次合作工程再中后期阶段完整阐明程序改动的位置。

关于后续

本就是用于学习的工程,没有太过在意最后的结果(毕竟代码都这么长了好歹分不会太低吧)。不过地图设计也蛮好玩的(可以坑人丫),而且本地存档有成就系统也可以拓展,算是留了一个估计不太会填的坑。如果有人真的希望我更新游戏的话我会考虑有空的时候发布几波新的版本的(毕竟初代的碰撞箱和地图都有些一言难尽)。大家有什么地图设计的想法也可以发给我让我来填坑丫。

留在最后

人生第一个工程正式结束,为自己喝彩!干杯~

开元代码链接https://github.com/MaxtirError/Nico-s-confusing-daily-life

github限制没办法传所有图片,如要采用vs运行要下载安装包里的图片。(想看代码可以私我)

你可能感兴趣的:(我,#,杂-NOIP)