分享代码 快乐编程

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

[图形学] 画任意斜率的直线(基于直线的中点算法)

图形学中的直线的中点算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于中点算法画任意斜率的直线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2011-4-26
//
#include <graphics.h>
#include <conio.h>

// 使用中点算法画任意斜率的直线(包括起始点,不包括终止点)
void Line_Midpoint(int x1, int y1, int x2, int y2, int color)
{
	int x = x1, y = y1;
	int a = y1 - y2, b = x2 - x1;
	int cx = (b >= 0 ? 1 : (b = -b, -1)
...

[图形学] 画任意斜率的直线(基于 DDA 算法)

图形学中的 DDA 画直线算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////
// 程序名称:基于 DDA 算法画任意斜率的直线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2011-4-26
//
#include <graphics.h>
#include <conio.h>

// 四舍五入
int Round(float x)
{
	return (int)(x < 0 ? x - 0.5 : x + 0.5);
}

// 使用 DDA 算法画任意斜率的直线(包括起始点,不包括终止点)
void Line_DDA(int x1, int y1, int x2, int y2, int color)
{
	float
...

贪吃蛇(流畅前进)(by wysaid)

这个版本的贪吃蛇用的面向对象技术,包含三个文件,请建立项目后将三个文件全部加入才可以编译。

运行效果就不抓图了,抓图不足以体现小蛇的可爱。

以下是每个文件的代码(点这里下载完整的 VC6 项目打包):

文件 3-1:snake.cpp

///////////////////////////////////////////////////
// 程序名称:Greedy Snake (贪吃蛇)
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作  者:wysaid <wysaid@gmail.com>
// 最后修改:2011-1-23
//
#include "snake.h"

...

做个纪念:椭圆组合而成的抽象图案

每次看到这个程序我就会想起高中时曾那么痴迷编程。当时看到一本书的封面有这个图案,就用那个时候学的 QuickBasic 写了这个程序。现在移植到 VC 上,做个纪念吧。

执行效果如下:

代码如下:

// 程序名称:椭圆组合而成的抽象图案
// 编译环境:Visual C++ 6.0/2010,EasyX 2011惊蛰版
// 最初编写:1998-2-21,by yw80@qq.com(QuickBasic 版本)
// 最后修改:2011-3-23,by yw80@qq.com
//
// 高中时候看到一本书的封面有这个图案,就用当时学的 QuickBasic 写了这个程序。
// 现在移植到 VC6 上,做个纪念。
//
#include <graphics.h>
#include <conio.h>
#include <math.h>

#define	PI	3.1
...

走迷宫程序(含自动迷宫生成)

迷宫程序。执行效果如下:

程序间有足够多的注释,就不多作介绍了。代码如下:

///////////////////////////////////////////////////
// 程序名称:迷宫 游戏
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2013霜降版
// 作  者:krissi <zhaoh1987@qq.com>
// 最后修改:2011-3-12
//
#include <graphics.h>
#include <time.h>



//////////////////////////////////////////////////////
// 定义全局变量
//
BYTE**	g_aryMap = NULL;			// 迷宫地图
SIZE	g_szMap;					// 迷宫地图的尺寸
IMAGE	g_imgSight(
...

经典游戏 贪吃蛇(by 轻雨漫步)

经典游戏贪吃蛇。

源代码如下:

////////////////////////////////////////////
// 程序名称:贪吃蛇
// 编译环境:Visual C++ 6.0 / 2010,EasyX_2011惊蛰版
// 程序编写:轻雨漫步 <512655756@qq.com>
// 最后更新:2011-3-11
//

////////////////////////////////////////////
//开始编写游戏需要的类
////////////////////////////////////////////

#include <graphics.h> //EasyX_2011惊蛰版(绘图库)
#include <stdio.h>
#include <conio.h>
#include <time.h>

#define UP		1
#define DOWN	2
...

[分形学] 基于 L 系统绘制 Hilbert (希尔伯特) 曲线

德国数学家 David Hilbert 发现了这样一种可以填满整个单位正方形的分形曲线,称它为 Hilbert 曲线。具体的我就不多做介绍了,相关内容请自己搜索。这里只说程序。

程序执行后,按数字键 1~8 可以显示相应阶数的 Hilbert (希尔伯特) 曲线,按 ESC 退出。

五阶 Hilbert (希尔伯特) 曲线的执行效果如下:

代码如下: 

// 程序名称:Hilbert (希尔伯特)曲线 (基于 L 系统绘制)
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 最后修改:2011-3-7
//
#include <graphics.h>
#include <conio.h>

int g_len;	// Hilbert 曲线的单位长度

// 递归绘制 Hilbert 曲线
void hilbert(LPCTSTR 
...

吸顶灯上的一个图案,由若干圆弧组成

也不知道这个程序该叫什么名字,是我最早学编程的时候写的。那时候看见什么东西都想用程序画出来,然后偶然间在一个吸顶灯的灯罩上看到了这样的图案,于是就写了一个程序来生成。

执行效果如下:

代码如下:

// 程序名称:圆弧组成的图案
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 最后修改:2011-3-7
//
#include <graphics.h>
#include <conio.h>
#include <math.h>

#define PI	3.1415926536
#define R	200

// 四舍五入
int Round(double x)
{
	return (int)(x < 0 ? x - 0.5 : x + 0.5);
}

// 主函数
void main()
{
	// 变量定义
	in
...

万花尺(又叫万花规)模拟程序

万花尺相信很多人小时候都玩过吧,将一个满是齿牙的小圆套在一个大圆里面,用笔放进小圆的洞里,然后转圈圈画,就可以画出很多美丽有趣的图案。这个程序就是万花尺的模拟程序。

下面是几组数据和执行效果的抓图:

代码如下:

////////////////////////////////////////////
// 程序名称:万花尺(又名万花规)模拟程序
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 程序编写:yangw80 <yw80@qq.com>
// 最后更新:2011-2-26
//
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PI 3.1415926536

void main()
...

俄罗斯方块(Tetris) VC 源代码

童年的经典游戏~~。界面上没有做额外的修饰,需要的可以自己增加。执行效果如下:

上面的图是后来改的,下面这张是以前的执行效果。不知道这次的修改是不是对得起观众?

代码如下:

////////////////////////////////////////////
// 程序名称:俄罗斯方块
// 编译环境:Visual C++ 6.0 / 2010,EasyX_v20131006(beta)
// 程序编写:krissi <zhaoh1987@qq.com>
// 更新记录:2010-12-18	首次编写
//      2011-9-28	修改了下落超时的逻辑
//      2013-10-7	修改了绘制方法,将原来的立体效果修改为扁平效果
//
#include <easyx.h>
#include <conio.h>
...