代码分享

================

烟花

这是一个简单的烟花程序,纯代码实现,

代码总长约 260 行,若有心去看应该不难看懂,相关注释已写于源码中。

3D 到 2D 转换 和 物理轨迹严格按照公式计算,

其余个别参数根据估计调试而设置,不用深究。

程序用到的 EasyX 绘图 主要是 solidcircle 和 putpixel,

更多的是对 语言特性、基础数学和物理的应用,亦可见其重要性。

编程之路,需要的不仅仅是语言,愿君共勉。

最后祝大家新年快乐!

界面截图:

源代码:

/*
	程序名称:
			烟花(Fireworks)

	简介:
			用 EasyX 实现的一个简单的烟花程序
			加入 z 轴以实现简单的 3D 视觉效果
		...

二维天体模型(by 悠远的苍穹)

一直很喜欢《三体》这部科幻小说,其中诡异的三体运动让我想要一探究竟,
便想着试着模拟一下三体运动,或是多天体的运动情况。

在三体模拟中,大多数情况下,系统都很不稳定,天体之间会很快发生吞噬或逃逸,
吞噬后可能会成为相对稳定的双星系统,当然也有很大概率会再次发生吞噬成为单星系统;
若是逃逸的话,这基本上大概率是没再见面的希望了。
而若是想要找到一个一定时间内相对稳定的三体系统那会很不容易!

在多天体模拟中,粗略估计有一半的情况中心天体能够捕获到一些小天体成为它的卫星,
直接逃逸的天体也时有出现,或者是进入了一个很大周期的轨道中。

此程序只是简单的粗略模拟,一些参数均无实际意义,且本程序仅为一个二维模拟。

执行截图如下:

完整的源代码如下:

///////////////////////////////////////////////////////...

纯软件算法实现 3D 渲染(by 桌子)

这个项目用 EasyX 实现了软件渲染器,模仿了很多 OpenGL 的 API 定义(类似 OpenGL 运行库),然后在 main.cpp 里面写用户自己的模型及贴图代码。在源码中有详尽的说明。

软件运行可以得到如下的效果:

主要实现的功能:

  • 一些简单的数学运算(矩阵相乘,向量叉乘等)
  • 使用扫描线多边形填充算法绘制多边形
  • 线性插值(linear interpolation)
  • 透视校正插值(perspective correct interpolation)
  • 深度测试(用于消隐)

一些我想到的但是暂时没实现的功能:

  • 不支持 ddx 和 ddy,所以没有 Mipmap,因为实现起来比较麻烦。
    ddx 和 ddy 是指在屏幕空间上求
...

随机街道闪电效果

想起之前看的一部鬼片,里面闪电效果和BGM营造了一种阴森恐怖的气氛。所以,突然想试试用简约的风格绘出这样的气氛。

目标:绘画出 简单的随机街道 ,

街道上空出现 各种形态的闪电 ,

并实现街道在闪电时的 闪光变化

效果动态图:

代码如下:

/************************************************************
* 程序名称: 随机街道闪电效果 
* version : Release x86-1.0 
* 程序目标: 制作简单的随机街道上空出现闪电,并实现街道在闪电时的闪光变化
* 编写系统: win10 1809专业版 x64 
* 编译环境: VS2017 + EasyX_20180727(beta) 
* 作者 : 星羽 
* 邮箱 : 1479245050@qq.com 
* QQ : 1479245050...

背井离乡(by 萌新)

上大学一学期了,有点想家。

突发奇想,花了一天的时间,用 vc++6.0 写完了这个程序。

代码写的不怎么样,希望大家不要太严格 QAQ

执行效果截图:

完整源代码、背景音乐请【点击这里下载】。

完整代码如下(记得附上背景音乐文件):

#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <stdio.h>
#pragma comment(lib,"Winmm.lib")

#define WATERSPEED	12.0									// 雨点速度
#define BUILDINGNUM	30										// 建筑物数量
#define RAINNUM		300										// 雨点数量
#def...

多边形万花筒动态

这个程序实现了一个由五角星反复变形的多边形,执行效果如下:

可以在宏定义直接改变数量和画布大小等,直接感受不同的视觉效果。

全部源代码如下:

//项目名称		多边形万花筒动态
//作者			星羽1704
//email			1479245050@qq.com
//联系方式		qq 1479245050
//描述			由五角星反复变形的多边形,可以在宏定义直接改变数量和画布大小等,直接感受不同的视觉效果。
//编译环境		win10 64位 + vs2017 + easyx—ver: 20180727(beta)

#include <graphics.h>
#include <conio.h>
#include <math.h>

// 宏定义
#define PI				3.1415926535897932384626433832795
#define ...

镜像绘图程序:迷盘(Mirror Paint)

微软应用商店里面有个有趣的镜像绘图程序 Mirror Paint,以下代码模拟了这个镜像绘图程序的基本功能,效果如下:

完整代码如下:

///////////////////////////////////////////////////////////
// 程序名称:迷盘(mirror_paint)
// 编译环境:Visual Studio 2017 / EasyX_20180727(beta)
// 程序编写:忧郁 506688268@qq.com
// 最后更新:2018-08-09
////////////////////////////////////////////////////////////

#include <graphics.h>
#include <iostream>
const int Width = 1280;               // 客户区宽
const ...

【七夕活动精选】致你的七夕礼物——3D Heart(by Nomango)

程序效果很简单,是一颗跳动的心脏,心脏下面有一行小字写着“七夕快乐”,按住鼠标左键并拖动可以让它旋转起来,按住右键可以让这颗心暂时停止跳动。

执行效果如下:

完整的源代码如下:

/////////////////////////////////////////////////////////
// 程序名称:致你的七夕礼物 —— 3D Heart
// 编译环境:Visual Studio 2017,EasyX 20151015(beta)
// 作    者:Nomango <www.nomango.cn>
// 最后修改:2017-8-19
// 项目类型:Win32 Console Application
//

#include <easyx.h>
#define _USE_MATH_DEFINES
#include <math.h>
#incl...

用绘图语句画安卓(android)机器人(初学 C 语言的同学必看)

学编程最需要注意的就是多动手,多练习。不管你学了多少,学一点,就要练习一点。哪怕没有学习循环和判断,都可以写出一些不错的程序来。

所以,我写了这个范例程序给大家参考。希望可以抛砖引玉,给初学 C 语言的同学以启发。

执行效果如下:

VC 源代码如下:

/////////////////////////////////////////////////////////////
// 程序名称:用绘图语句画安卓(android)机器人(初学 C 语言的同学必看)
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20200315(beta)
// 作  者:yangw80 <yw80@qq.com>
// 发布日期:2014-10-9
//
#include <graphics.h>
#include <conio.h>

#define PI 3.14159265

v...

用绘图语句画机器猫(初学 C 语言的同学必看)

学编程最需要注意的就是多动手,多练习。不管你学了多少,学一点,就要练习一点。哪怕没有学习循环和判断,都可以写出一些不错的程序来。

所以,我写了这个范例程序给大家参考。希望可以抛砖引玉,给初学 C 语言的同学以启发。

执行效果如下:

具体这个家伙叫机器猫还是小叮当还是多啦A梦就不管啦,看代码吧:

/////////////////////////////////////////////////////////////
// 程序名称:用绘图语句画机器猫(初学 C 语言的同学必看)
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20200315(beta)
// 作  者:yangw80 <yw80@qq.com>
// 发布日期:2014-9-17
//
#include <graphics.h>
#include <conio.h>

#define PI 3....

多个小球在方框内的碰撞运动(by 可可)

本程序模拟了多个小球在方框内的碰撞运动。

源代码如下:

///////////////////////////////////////////////////
// 程序名称:多个小球在方框内的碰撞运动
// 编译环境:Visual C++ 6.0,EasyX 2013冬至版
// 作  者:可可 
// 最后修改:2014-03-18
//
#include <graphics.h>
#include <conio.h>
#include <math.h>
#define	 XN	640
#define	 YN	480						// 设置图形窗口的大小
#define	 N	40						// 设置球的个数,最多 90 个
#define	 V	20						// 设置球的速度

// 画出一个球
void Ball(int x, int y)
{
	fillcircle(x, YN - y, 20);		// 转...

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

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

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

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

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

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

执行效果如图:

完整代码如下:

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

带一盏油灯去巡视仓库

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

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

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

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

以下是全部源代码:

/////////////////////////////////////////////////////////
// 程序名称:带一盏油灯去巡视仓库
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2013霜降版
// 作    者:yangw80 <http://hi.baidu.com/yangw80>
// 最后修改:2013-11-11
//
#include <graphics.h>
#include <conio.h>...

实现水波纹显示效果(by 豪)

当鼠标滑过时,可以在屏幕上实现漂亮的水波纹效果。

执行效果如下:

源代码如下:
(注意,请确保 loadimage 函数里面加载的图片路径存在)

/********************************************************
 * 程序名称:实现水波纹显示								*
 * 编译环境:Visual C++ 6.0 / 2010,EasyX_20200315(beta)	*
 * 作  者:豪 (QQ: 415051674)							*
 * 核心算法:参考网上算法									*
 * 发布日期:2013/3/20									*
 ********************************************************/


#include <graphics.h>     
#include <conio.h>...

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

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

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

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:将图片转换为马赛克效果
// 编译环境: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 坐标
//		sta...