只把 EasyX 拷贝进项目里,方便发给没有安装 EasyX 的人编译(以 MinGW 为例)
只把 EasyX 拷贝进项目里,方便发给没有安装 EasyX 的人编译(以 VS2022 为例)
C 语言及 EasyX 相关教程推荐

万能的排查错误方法:代码删减法

对于一个成熟的程序员来说,不管任何代码错误,没有找不到的错误,只是时间问题罢了。
一些初学者在面对代码错误的时候,全凭肉眼看。尤其是代码比较长的时候,更是对 bug 无从下手。这里推荐初学者一个排查错误的方法:删减法。
所谓删减法,就是逐步删除项目里的无关代码,确保每一步删减之后,故障都存在。删到最后无法再删的时候,通常你就能发现问题在哪了。
下面举个例子,有个同学在写一个画图板项目,执行后画圆时有错误,会产生这样的效果(画的圆有明显的残影):
完整的有 Bug 的源码如下(代码不太成熟,请忽略):
#include <graphics.h>
#include <conio.h>
#include <math.h>
void InitGUI(int color[])
{
setbkcolor(WHITE);
cleardevice();
rectangl
...
解决编译错误:C4996:'GetMouseMsg': This function is deprecated.

问题概述
EasyX 提供了两个头文件:
- graphics.h
- easyx.h
easyx.h 包含最新的函数,并且删掉了旧函数。graphics.h 引用了 easyx.h,同时提供了对旧函数的支持。使用 graphics.h 里面提供的旧函数时,会收到一个 Warning C4996,例如使用旧函数 GetMouseMsg,会收到编译提醒:
C4996:'GetMouseMsg': This function is deprecated. Instead, use this new function: getmessage. See https://docs.easyx.cn/getmessage for details.
在过去,Visual&nb
...编程语言真的没有好坏之分吗?
经常在某些社区看到有人在讨论编程语言的好坏,然后经常会看到有人回复“编程语言没有好坏之分”。可事实上,编程语言真的有好坏之分。
举几个例子吧。
先说 Delphi,这当年可是火遍了全球的东西,其研发公司 Borland 在 DOS 时代开发了神器 Turbo C,以及当年竞赛广泛使用的 Turbo Pascal。Delphi 就是 Pascal 的 Windows 版本。可惜在发展理念上大牛 Anders 未能得到公司的支持,微软挖走,从此 Borland 公司一蹶不振,Delphi 也变得无人问津。当年用 Delphi 开发的项目,都废了。最典型的就是 Dev-Cpp,这是一个使用 Delphi 开发的开源免费的编译器。由于使用 Delphi 的开发人员越来越少,有能力和财力且愿意继续维护 Dev-C++ 的公司并不多。几经转手,目前维护 Dev-C++ 的是从 Bor
...
数字拼图游戏

C 语言天罡三十六题 - 封神九题(2021-5-29)

该系列共分四篇:
- 基础九题 https://codebus.cn/yangw/36-tasks-g1
- 进阶九题 https://codebus.cn/yangw/36-tasks-g2
- 精英九题 https://codebus.cn/yangw/36-tasks-g3
- 封神九题 https://codebus.cn/yangw/36-tasks-g4 (本篇)
相关说明请参考基础九题。
封神篇说明
与前三篇不同,封神九题当中,可以挑选三道题重点做,毕竟大学的时间有限。在半学期内利用课余时间做完前面 27 题,然后接下来的寒暑假时间做封神篇。
前三篇都是短小的练习,而封神篇的每道题,请以对待大作业的态度来完成。
封神篇每道题的衡量标准有两点:1. 代码量,2. 别人玩的时间。
如果代码量小于 3000 行,请自行增加功能。例如推箱子游戏,推箱子
...C 语言天罡三十六题 - 精英九题(2021-5-29)

该系列共分四篇:
- 基础九题 https://codebus.cn/yangw/36-tasks-g1
- 进阶九题 https://codebus.cn/yangw/36-tasks-g2
- 精英九题 https://codebus.cn/yangw/36-tasks-g3 (本篇)
- 封神九题 https://codebus.cn/yangw/36-tasks-g4
相关说明请参考基础九题。
精英九题
19. 天空星
任务:不可思议的图案(二)。
求以下迭代公式的图像:
// x’ = a * x + b * y + e
// y’ = c * x + d * y + f
// p = 概率
// x、y 值范围:0 ~ 1
double a[5] = { 0.35173, 0.3
...
C 语言天罡三十六题 - 进阶九题(2021-5-27)

该系列共分四篇:
- 基础九题 https://codebus.cn/yangw/36-tasks-g1
- 进阶九题 https://codebus.cn/yangw/36-tasks-g2 (本篇)
- 精英九题 https://codebus.cn/yangw/36-tasks-g3
- 封神九题 https://codebus.cn/yangw/36-tasks-g4
相关说明请参考基础九题。
进阶九题
10. 天贵星
任务:模拟 45 度反弹的 10 个小球。
在屏幕里画一个大矩形。
在矩形内的随机位置生成 10 个小球,每个小球都沿着某个 45 度方向匀速前进,碰到矩形边框后做 45 度反弹,反弹后速度不减,再次碰撞后再次反弹,如此往复循环。模拟这个动画过程。
11. 天富星
...
C 语言天罡三十六题 - 基础九题(2021-4-10)
关于 EasyX 的各种学习资源、实体书籍等汇总推荐

游戏素材网站推荐
写游戏的同学辛苦了。
这里推荐几个免费的游戏素材网站。欢迎推荐更多的素材网站,直接留言给我,我加到这个列表里面。
1. The Spriters Resource
地址:https://www.spriters-resource.com,https://www.sounds-resource.com
介绍:非常丰富齐全的游戏素材网站,并且按照游戏主机分类,包括 NES、PS、GBA 等各大游戏平台的游戏,素材基本都是抠好图的 PNG 格式,非常好用。想做高仿游戏的同学不要错过。
还有 3D 模型、贴图、音效等素材。就是国外网站,访问速度有点慢。
2. Open Game Art
地址:https://opengameart.org
介绍:很全很好用的游戏资源网站,就是国外网站的访问速度有点慢。
3. 爱给网
地址:http://www.aigei.com
介
...
开学新装备 - 学生党是否该入手 MacBook?

学生党是否该入手 macbook 这个问题,相信许多人在许多社区都有看到过类似讨论。只不过,许多讨论都掺杂了信仰、智商税、不懂、不熟悉未来需求等各种因素,导致内容空洞价值不大。这篇文章,抛开了所有非理性因素,详细的告诉你该如何选择。
便携性
有人说,喜欢 macbook 就是喜欢那种轻薄的感觉。
现在来看看真实数据:
屏幕大小 | 外观尺寸 | 重量 | |
苹果 MacBook Pro 2020 | 13 寸 |
创建一个不受系统缩放设置(DPI)影响的绘图窗口
现在的屏幕分辨率都比较高,为了使屏幕字体不至于太小,通常在 Win10 的显示设置里面设为放大 125% 或 150% 或更大,这样就会导致像素实际上被放大了。
如果你的程序不希望受系统缩放设置影响,你需要使用一个新的 API 函数:SetProcessDpiAwareness
注意这个 API 函数的使用条件:
- Win8.1 及以上版本
- 头文件 ShellScalingApi.h
- 库文件 Shcore.lib
以下是一个完整的范例程序,该范例创建一个不受系统缩放设置影响的绘图窗口,并画一个圆:
// 编译环境:Win10 + VS2019 + EasyX_20200727
//
// 设定操作系统版本为 Win10(需要放到 #include <graphics.h> 前面)
#define WINVER 0
...