慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

带一盏油灯去巡视仓库

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

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

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

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

以下是全部源代码:

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

...

扔香蕉的大猩猩(怀旧)

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

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

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

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

游戏运行效果如下:

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

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

...

贪吃蛇游戏的双人对战版

这是贪吃蛇游戏的双人对战版。

游戏双方分别控制蓝色和红色两条小蛇的前进,碰壁或咬到蛇身体算输。

这个对战版的贪吃蛇游戏网上有不少源代码,这个代码的特点就是为两个游戏者分别增加了命令队列,以实现更舒服的控制。

完整的游戏源代码如下:

///////////////////////////////////////////////////
// 程序名称:贪吃蛇游戏的双人对战版
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20130322(beta)
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2012-7-23
//
#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <queue>

using namespace std;

#def
...

力学:鼠标用弹簧挂着一串小方块

看到最近力学程序受欢迎,我就翻出来以前收藏的一个 javascript 脚本,也是力学相关的,模拟出几个小方块用弹簧连接到鼠标上的效果。当鼠标在绘图窗口上移动时,可以看到小方块连续受力的效果。

动态程序就不再抓图了。源代码如下:

///////////////////////////////////////////////////
// 程序名称:力学:鼠标用弹簧挂着一串小方块
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20120404(beta)
// 原 作 品:很早以前收藏的一个 javascript 脚本,源地址忘了
// 移植作者:yangw80 <yw80@qq.com>
// 最后修改:2012-4-27
//
#include <graphics.h>
#include <math.h>
#include <time.h>

const	int		WIDTH		= 640;		
...

力学:弹跳球模拟程序

本程序根据物理原理模拟一个球自由落体并持续弹跳的效果,小球只受重力影响,忽略空气阻力,反弹时能量损耗 10%。

程序源代码如下:

////////////////////////////////////////////////////////////////////
// 程序名称:物理反弹球模拟程序
// 编译环境:VC6.0 / 2010,EasyX 2011惊蛰版
// 作  者:yw80@qq.com
// 最后修改:2012-3-29
//
#include <graphics.h>
#include <conio.h>

void main()
{
	double h = 300;				// 高度
	double v = 0;				// 速度(方向向下)
	double dv = 9.8 / 50;		// 加速度(每 1/50 秒)

	// 初始化绘图窗口
	initgraph(640, 480);

	// 画
...

火焰效果模拟程序

模拟火焰效果的程序。

执行效果抓图如下:

通过修改色系,本程序可以实现红色火焰、蓝色火焰、绿色火焰三种效果,在 InitFire() 函数中取消相应行注释可以实现不同色系的火焰效果。

完整的源代码如下:

///////////////////////////////////////////////////
// 程序名称:火焰模拟程序
// 编译环境:VC6.0 / VC2010,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2012-1-21
// PS: 核心算法参考的微软范例,在此感谢。
//
#include <graphics.h>
#include <conio.h>
#include <time.h>

// 宏常量
#define	WIDTH		640
#define
...

漂亮的四叶草

前几天有网友在 QQ 群“C 语言革命”里面发了一段 Turbo C 代码,感觉蛮漂亮的,我就将代码移植到 VC + EasyX 下面(稍作了一点格式上的修改)。

执行效果如下:

源代码如下:

///////////////////////////////////////////////////
// 程序名称:漂亮的四叶草
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 作  者:yangw80 <yw80@qq.com>
// 最后修改:2011-10-14
// 注:源程序是网友发在 QQ 群“C 语言革命”里面的 Turbo C 代码,我修改的
//
#include <graphics.h>
#include <math.h>
#include <conio.h>

#d
...

一束漂亮的花

先说正题,我把原来的 GW-BASIC 程序移植到了 VC + EasyX 下,并简单的加了些颜色,执行效果如下:

又是一个难忘得回忆。。。

我最早是抱着一台“学习机”学的 Basic 语言,之后第一次在电脑上输入的程序,就是这个。不过那个年代的显示器是单色的,书上的代码也没有设置颜色,当时把程序输入 GW-BASIC 后,输出的整个图案都是墨绿色的。哦,顺便贴一下书的封皮照片:

我一直记得我还留着这本书的,上次回家偏偏没找到,然后网上到处搜也没搜到,恰好 easyx 群里的阿里同学说他们学校图书馆有这本书,于是借来帮我拍了几张照片,在这里表示感谢。

感慨完了,代码如下:

///////////////////////////////////////////////////
// 程序名称:一束漂亮的花
// 编译环境:V
...

图片滤镜系列:波浪线叠加效果

我念初中的时候买过一盘国外原版的磁带:贝多芬第九交响乐《合唱》。磁带很是精美,硬纸壳压出了立体的金色贝多芬头像,并且还有第二个封面,是叠加在金色波浪线上的贝多芬头像。这个波浪线叠加的效果很有趣,我一直想写个程序实现这种效果,无奈总是抽不出时间,今天可算把这件事情给做了。

只是由于屏幕分辨率太低,还是无法和印刷的效果相媲美。而且,由于磁带已经找不到了,我只是按照我想象中的样子做的。

我就不弄贝多芬的头像了,换了另一个重要人物的头像照片做图片源,程序处理后的效果如下:

全部源代码如下:

注:src.jpg 就是源图片的名字,该图片的大小必须是 640 x 480,另外建议用简单的背景,大一点的头像,否则效果不是很理想。

///////////////////////////////////////////////////
// 程序名称:图片滤镜系列:波浪线叠加效果
// 编译环境:Visual 
...

高等数学图形:玫瑰曲线

在极坐标系中,以下方程表示的曲线称为玫瑰曲线:

r = sin ( k θ )  或  r = cos ( k θ )

当 k 是奇数时,玫瑰曲线有 k 个花瓣;当 k 是偶数时,玫瑰曲线有 2k 个花瓣。执行效果如下图:

可以按 A-Z 和 a-z 调整参数,绘制不同的玫瑰曲线。例如,k = n / d = 2 / 1,就是四叶玫瑰曲线,k = n / d = 3 / 1,就是三叶玫瑰曲线。

源代码如下:

////////////////////////////////////////////
// 程序名称:高等数学图形:玫瑰曲线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 程序编写:yangw80 <yw80@qq.com>
// 最后更新:2011-7-11
//
#include 
...