怎样用C+WindowsAPI写一个控制台小游戏(一)

141 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

简单向新接触C语言的新生介绍一下怎样写一个控制台小游戏。

Part 0 什么是控制台?

就是编写完C语言代码之后点击运行跳出来的那个东西————

image.png

Part 1 编写代码之前的准备工作

1. 选题

此处假设你已经找好了队友。

请选择一个感兴趣的题目,写一个控制台小游戏并不是一个“令人头疼的大作业”,而是我们使用c语言完成自己想实现功能的开端。

举一些栗子:俄罗斯方块、扫雷、五子棋、贪吃蛇、2048……

另外如果不想太难为自己,请不要选择对画面效果要求过高的题目。如果想自学可视化编程,推荐EGE、EASYX、QT(我也不会x)。

下面将以俄罗斯方块为例描述怎样完成一个控制台小游戏。

2. 写程序流程图

敲定选题之后我们可能会比较懵,不知道从哪里下手。于是我们需要写一份程序流程图。

程序流程图是为了明确游戏的机制,把难以解决的大问题转化为可以解决的小问题,同时为下一步的分工打基础。

首先粗略的列一下我们的程序(俄罗斯方块)需要哪些功能,然后再明确功能之间的逻辑关系。

2.1 完成一个俄罗斯方块游戏需要做些什么?

回忆游戏,我们首先需要输出游戏准备界面,还应该可以生成随机形状的方块、存储它、可以在指定位置输出它。我们还应该以一定的时延使得方块下落,判断方块是否应该停止下落(已经落地)。方块下落后,应判断是否能消除一行方块,未被消除的方块整体下落并统计得分。当方块的高度过高时,应判定GameOver。

实现了上述功能,用户点开我们的 exe 文件,就可以看到一段俄罗斯方块因为用户无法操作而输掉的视频了(bushi

所以我们还应该可以获取用户输入,与平时输入a和b的值输出a+b不同,我们不应当打断游戏的持续等待用户的输入。并根据用户的输入改变方块的位置或者旋转方块,改变方块下落速度。

2.2 绘制程序框图

对理清程序逻辑有较大帮助。如我对俄罗斯方块游戏的理解如下:

程序流程图.png

3. 准备素材

除ascll表和常用汉字外控制台可以显示的一些字符:

△▽○◇□☆▲▼●◆■★¤◎√×卍卐↑←↓→↖↗↙↘◥◤◣◢ ┌┬┐┏┳┓╔╦╗╭─╮
├┼┤┣╋┫╠╬╣│╳┃
└┴┘┗┻┛╚╩╝╰━╯
┍┑┎┒╒╕╓╖
┕┙┖┚╘╛╙╜
╢╤、┝┞┟┠┡┢═╞╟╡╪┭┮┯┰┱┲ ║╥╧╨╫ ┥┪┧┨┩┦┽┾┿╀╁╂┵┶┷┸┹┺╄╅╆╇╈╉╃╊
(可以通过修改控制台字符集来实现更丰富的体验,但是对于俄罗斯方块来说保持现状就足够了

4. 一些规范

使用函数完成任务内容,保持 main 函数清洁。

尽量使用局部变量,动手写代码之前明确好函数名和函数用途、变量名和变量用途。

记得写注释。


明天,我们将介绍代码的编写等进一步工作。