今儿个心血来潮,想琢磨琢磨用C语言写个小游戏,练练手。以前总觉得写游戏挺难的,这回自个儿动手试试,看看能鼓捣出个啥玩意儿。
准备工作
啥也不懂,就先上网搜搜资料,看看人家都咋写的。这一搜,发现挺多人都喜欢写个“猜数字”或者“扫雷”啥的,说是入门比较简单。我这人比较喜欢挑战,就琢磨着弄个不一样的,决定整个“见缝插圆”的小游戏。
这名字听起来有点意思?就是在一个窗口里面画好多圆,这些圆还不能重叠,得找空隙挤进去,有点像小时候玩的“挤油油”。
要画图,就得先有个“画板”?C语言本身好像没这功能,得找个帮手。网上说有个叫 graphics.h 的东西可以画图,我就去下载一个。
然后就是搭个架子。得有个窗口?这就需要用到一个叫 initgraph(x, y);
的东西,据说能创建一个窗口,左上角是起点,往右是x轴,往下是y轴。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
开始画圆
有画板,接下来就得开始画圆。这画圆也得有个“笔”?我找找,发现有个函数叫 circle()
,应该就是它。这玩意儿需要几个参数:圆心坐标(x, y),还有半径r。有这几个参数,就能画出一个圆。
圆是能画,可咋让它“随机”出现?这就要用到随机数。C语言里有个叫 rand()
的函数,能生成随机数。我试试,发现直接用 rand()
生成的数字太大,画出来的圆都挤到一块儿去。后来才知道,得用 rand() % n
这种方式,把数字控制在一个范围内。
“见缝插针”的难题
随机画圆是实现,可这“见缝插针”咋弄?总不能让圆重叠到一起?我想个笨办法,就是每画一个新圆之前,都跟之前画的圆比较一下,看看它们会不会“撞车”。
这“撞车”咋判断?我想起初中学的几何知识,俩圆不相交,那圆心之间的距离肯定大于两个圆的半径之和。想到这儿,我就写个函数,专门用来判断两个圆是不是相交。
每次画新圆,都用这个函数检查一遍,要是跟之前的圆都“保持距离”,那就画出来;要是有“亲密接触”,那就重新生成一个随机位置,再检查一遍,直到找到一个“安全”的位置为止。
让圆动起来
圆是画出来,也“见缝插针”,可它们都静静地待在那儿,看着有点呆。我想着要不让它们动起来?
咋动?我想个简单的办法,就是每次画完一个圆,稍微等一会儿,然后把这个圆擦掉,再换个位置画一个新的。这样看起来就像圆在移动一样。
这“擦掉”圆也挺简单的,用一个跟背景颜色一样的圆,在原来的位置画一下,就相当于“擦掉”。
最终效果
经过一番折腾,这“见缝插圆”的小游戏总算是有点样子。运行起来,窗口里一堆圆挤来挤去,还挺有意思的。虽然代码写得有点乱,逻辑也有点绕,但毕竟是自个儿一点点鼓捣出来的,还是挺有成就感的。
这回写小游戏的经历,让我对C语言有更深的解,也体会到编程的乐趣。以后有时间,再琢磨琢磨其他的小游戏,继续练手!