分享代码 快乐编程

一起学习,一起进步,从分享代码开始~

视觉错觉艺术2

这是网上经常见的视觉错觉艺术图片,可以用程序生成的。效果如下:

完整的源代码如下:

///////////////////////////////////////////////////
// 程序名称:视觉错觉艺术2
// 编译环境:Visual C++ 6.0,EasyX 2013霜降版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2013-12-16
//
#include <graphics.h>
#include <conio.h>

// 定义常量
#define	UNIT		24
#define OFFSET_X	116
#define OFFSET_Y	36

// 画装饰花
void DrawUnit(int x, int y, int shape)
{
	// 设置颜色
	int n = ((shape & 1) ? 1 : 0) + ((shape &a...

视觉错觉艺术1

这是网上经常见的视觉错觉艺术图片,可以用程序生成的。效果如下:

完整的源代码如下:

///////////////////////////////////////////////////
// 程序名称:视觉错觉艺术1
// 编译环境:Visual C++ 6.0,EasyX 2013霜降版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2013-12-16
//
#include <graphics.h>
#include <conio.h>

// 定义常量
#define	UNIT		15
#define OFFSET_X	122
#define OFFSET_Y	23

// 画每个小单元
void DrawUnit(int x, int y, int shape)
{
	// 定义颜色
	static COLORREF c[4] = {0x0000ff, 0x0077ff, ...

游戏:矿井逃生

游戏说明:

矿井里的电路又出问题了。迅速借助你的头灯,在漆黑的矿井里找到出口逃出去吧。

控制说明:

  • 方向键:移动
  • A/S/D/W:移动
  • 鼠标:控制照射方向
  • F2:重来一局
  • ESC:退出游戏

就不放抓图了,有兴趣的运行一下代码看看效果吧,【点这里下载编译后的 exe 文件】

以下是全部源代码:

///////////////////////////////////////////////////
// 程序名称:矿井逃生
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2013霜降版
// 作  者:yangw80 ...

计算任意扇形的最小包围矩形

今天很偶然需要这样一个东西:

求任意扇形的最小包围矩形,要求矩形的边是水平、垂直的。

这个东西看似很简单,但是仔细一想,需要注意的地方蛮多的,还真有点不好下手。再回想一下,好像没有那本书里面讲过。然后百度了一下,似乎也没找到有效的方法。于是我就花了点时间搞定了这个东西,然后顺手写了一个例子演示效果。

如果您有更好的方法,十分期待交流一下。

以下代码除了包含必要的求解任意扇形的最小包围函数之外,还加上了鼠标操作:按下左键移动鼠标,可以调整终止角的弧度;同时按下 Shift 键移动,可以调整起始角的弧度。

执行效果如图:

完整代码如下:

///////////////////////////////////////////////////
// 程序名称:计算扇形的最小包围矩形
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2013霜降版
// 作  者:ya...

带一盏油灯去巡视仓库

今天是 2013 年光棍节,写个程序庆祝一下,呵呵。

本程序模拟了这样一个场景:一个空地上乱七八糟地堆了一些货物,一个孤独的仓库管理员,带了一盏油灯,去巡视这些货物。

在鼠标的位置会亮起一盏油灯,随着鼠标的移动,部分光线会被仓库的货物遮挡。

就不抓图了,有兴趣的运行一下代码看看效果吧,【点这里下载编译后的 exe 文件】

以下是全部源代码:

/////////////////////////////////////////////////////////
// 程序名称:带一盏油灯去巡视仓库
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2013霜降版
// 作    者:yangw80 <ht...

[图像处理] 将图片转换为马赛克效果

这个程序将图片转换为马赛克效果。

算法原理:求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色。依次处理每个小方块,即可实现马赛克效果。

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:将图片转换为马赛克效果
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130322(beta)
// 作    者:krissi <zh@easyx.cn>
// 最后修改:2013-4-22
//
#include <graphics.h>
#include <conio.h>

// 将图片转换为马赛克效果
// 参数:
//		pimg: 待处理的 IMAGE 对象指针
//		tilesize: 马赛克的尺寸
//		startx: 马赛克的平铺起始位置 x 坐标
//		starty: 马赛克的平铺起始位置 y...

[图像处理] 将图片进行模糊处理

这个程序实现将图片进行模糊处理。

本程序的模糊处理算法:遍历图片像素,将每个像素颜色值与其周围像素颜色值求和,取平均值对其赋值。

完整代码如下(注意图片文件的路径):

/////////////////////////////////////////////////////////////////////////
// 程序名称:将图片进行模糊处理
// 编译环境:Visual C++ 6.0 ~ 2017,EasyX 20180727(beta)
// 作  者:krissi <zh@easyx.cn>
// 发布日期:2013-1-19
// 最后修改:2018-10-5
//
#include <graphics.h>
#include <conio.h>				

// 将图片进行模糊处理
void Blur(IMAGE *pimg)
{
	DWORD*	pMem = GetImageBuffer(pimg);

	int	r, g, b...

[图像处理] 彩色图片转化成底片效果

这个程序实现将图片转化成底片效果。

底片效果使用如下公式:

R = 0xFF - GetRValue(pMem[i]);

G = 0xFF - GetGValue(pMem[i]);

B = 0xFF - GetBValue(pMem[i]);

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:底片效果
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130114(beta)
// 作    者:krissi <zh@easyx.cn>
// 最后修改:2013-1-20
//
#include <graphics.h>
#include <conio.h>

// 底片效果
void ColorInvert(IMAGE *pi...

[图像处理] 彩色图像转换为灰度图像

这个程序实现将彩色图像转换为灰度图像。

彩色转换为灰度使用如下公式:

Gray = R * 0.299 + G * 0.587 + B * 0.114

为了提高运算速度,将这个公式转换为整数运算:

Gray = (R * 229 + G * 587 + B * 114 + 500) / 1000

为了提高运算速度的方法还有很多,这里作为演示,不再详述。

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:彩色图片转换为灰阶图片
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130322(beta)
// 作    者:krissi <zh@easyx.cn>
// 最后修改:2013-...

扔香蕉的大猩猩(怀旧)

又是一个怀旧的游戏,让我想起了以前学习编程的时候。

这个游戏模仿的微软在 20 多年前的一个小游戏,不知道谁也有印象呢?图片都是从原来的游戏中抓图弄出来的,颜色也是从原游戏抓图中取色设置的,应该和原来的风格很像。

你的任务是用香蕉击中你的对手。

你可以通过鼠标调整投掷香蕉的角度和力度,香蕉会受重力加速度的影响。同时,请注意屏幕底部表示风力的箭头,香蕉同样会受风力影响。风力的箭头越长,表示风力越强。还有,周围的楼宇会阻挡你的香蕉。

游戏运行效果如下:

完整的源代码和图片可以【点击这里下载】

也可以直接查看如下游戏源代码(注意,除了以下代码,还需要两个图片文件,在前面的压缩包里面有):

<...