
这是网上经常见的视觉错觉艺术图片,可以用程序生成的。效果如下:
完整的源代码如下:
///////////////////////////////////////////////////
// 程序名称:视觉错觉艺术3
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作 者:yangw80 <yw80@qq.com>
// 最后修改:2014-7-14
//
#include <graphics.h>
#include <conio.h>
// 定义回调
void (*callback)(int x, int y);
// 圆中的每个点(回调函数)
void CirclePoints(int x, int y)
{
if (x < y)
{
COLORREF c1 = getpixel(x, y);
COLORREF c2 = getpixel(y, x);
put
...

2012年2月14日情人节就要来临了,西班牙程序员 Roman Cortes 用纯 javascript 脚本编写了红色玫瑰花。
现在,我把这个精彩的程序移植到了 VC 上。以下是执行效果:
完整的 VC 源代码如下:
////////////////////////////////////////////////////////////////////
// 程序名称:情人节的玫瑰
// 编译环境:VC6.0 / VC2010,EasyX_20210730
// 原 作 者:西班牙程序员 Roman Cortes
// 原 程 序:http://js1k.com/2012-love/demo/1022 (javascript 版本)
// 移植作者:krissi <zh@easyx.cn>
// 最后修改:2012-2-13
// 注:程序中的很多精简变量名都沿用原 javascript 中的变量名。
//
#include <graphics.
...

一个群里的大佬做的 DOS 版我的世界让我想到了这个游戏,后面去看了看 Terraria 的视频,学习了下,做了个极其简陋的沙盒游戏
开发环境:VS2019 + EasyX_20210730
游戏说明:
一个类似于二维版我的世界和泰拉瑞亚的沙盒游戏,你可以建造属于你的一片天地
(但因为目前方块过少,效果极其单调。。)
WASD 键:移动
Q 键:打开制作页面,再次按下返回
E 键:打开背包页面,再次按下返回
R 键:查看角色属性
ESC:设置页面(可调整为观察模式、普通模式,查看当前坐标)
大键盘1键:保存!!
制作页面:鼠标滚轮选择目标制作物品(部分物品需在工作台或熔炉旁才能制作)
背包页面:鼠标选中背包物品后拖动至使用栏便可更换使用栏物品
目前版本
...

四杆机构模拟。
四杆机构介绍:维基百科、哈工大机械原理课件.
说明
AB 作为主动件,AD 为机架。
根据传入的杆长自动绘制出相应的四杆机构。
如下图,程序绘制了曲柄摇杆、双摇杆、摇杆曲柄、双摇杆机构。
单击鼠标右键循环隐藏圆圈、C2 点、C1 点。
/////////////////////////////////////////////////////////////
// 程序名称:四杆机构-机械原理
// 编译环境:Visual Studio 2019 (v142),EasyX_20210730
// 作 者:luyiran <872289455@qq.com>
// 发布日期:2021-8-11
//
#pragma warning(disable:4244) // 程序会用到浮点数截断特性
#include <cstdio> // printf
#
...
图形学中的 Bresenham 画圆算法是基于中点画圆算法的派生,以下是该算法的 C 语言实现:
///////////////////////////////////////////////////
// 程序名称:基于 Bresenham 算法画圆
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作 者:YangW <yw80@qq.com>
// 最后修改:2011-5-3
//
#include <graphics.h>
#include <conio.h>
// 使用 Bresenham 画圆法
void Circle_Bresenham(int x, int y, int r, int color)
{
int tx = 0, ty = r, d = 3 - 2 * r;
while( tx <= ty)
{
// 利用圆的八分对称性画点
putpixel(x + tx, y + ty,
...
图形学中的中点画圆算法,以下是该算法的 C 语言实现:
///////////////////////////////////////////////////
// 程序名称:基于中点算法画圆
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作 者:YangW <yw80@qq.com>
// 最后修改:2011-4-29
//
#include <graphics.h>
#include <conio.h>
// 中点画圆法
void Circle_Midpoint(int x, int y, int r, int color)
{
int tx = 0, ty = r, d = 1 - r;
while(tx <= ty)
{
// 利用圆的八分对称性画点
putpixel(x + tx, y + ty, color);
putpixel(x + tx, y - ty, color);
p
...

又是一个怀旧的游戏,让我想起了以前学习编程的时候。
这个游戏模仿的微软在 20 多年前的一个小游戏,不知道谁也有印象呢?图片都是从原来的游戏中抓图弄出来的,颜色也是从原游戏抓图中取色设置的,应该和原来的风格很像。
你的任务是用香蕉击中你的对手。
你可以通过鼠标调整投掷香蕉的角度和力度,香蕉会受重力加速度的影响。同时,请注意屏幕底部表示风力的箭头,香蕉同样会受风力影响。风力的箭头越长,表示风力越强。还有,周围的楼宇会阻挡你的香蕉。
游戏运行效果如下:
完整的源代码和图片可以【点击这里下载】。
也可以直接查看如下游戏源代码(注意,除了以下代码,还需要两个图片文件,在前面的压缩包里面有):
// 程序名称:扔香蕉的大猩猩
// 编译环境:Visual C++ 6.0 ~ 2019,EasyX_20210730
// 作 者:慢羊羊 <yw80@qq.com>
// 发布日期:2012-9-23
// 最
...

今天很偶然需要这样一个东西:
求任意扇形的最小包围矩形,要求矩形的边是水平、垂直的。
这个东西看似很简单,但是仔细一想,需要注意的地方蛮多的,还真有点不好下手。再回想一下,好像没有那本书里面讲过。然后百度了一下,似乎也没找到有效的方法。于是我就花了点时间搞定了这个东西,然后顺手写了一个例子演示效果。
如果您有更好的方法,十分期待交流一下。
以下代码除了包含必要的求解任意扇形的最小包围函数之外,还加上了鼠标操作:按下左键移动鼠标,可以调整终止角的弧度;同时按下 Shift 键移动,可以调整起始角的弧度。
执行效果如图:
完整代码如下:
///////////////////////////////////////////////////
// 程序名称:计算扇形的最小包围矩形
// 编译环境:Visual C++ 6.0 / 2019,EasyX 20210730
// 作 者:yangw80 <yw80
...
有网友反馈说,鼠标左键按下并拖动后,会相当于一次键盘按键,使 _getch() 触发。鼠标双击也会使 _getch() 触发。经过排查后,发现该问题是某些翻译软件的划词翻译功能引起的。
解决方法:关掉翻译软件的划词翻译功能(比如有道词典就有这个功能)。
或者,使用 getmessage(EM_CHAR) 替代 _getch() 实现按任意键继续。

介绍
这是一个模仿 Doodle Jump 的小游戏,实现了原游戏中的部分元素。
操作说明
由于没有重力感应,所以用键盘替代。
按下 A/D 或方向键会给予角色水平向左或向右的恒定加速度,此加速度可以在 OPTIONS 界面通过改变灵敏度来调节。同时角色也受水平阻力影响,阻力大小与水平速度的平方成正比,因此达到一定速度会变为匀速运动。竖直方向只受重力加速度,碰到平台或踩到怪物会获得一定的初速度。
鼠标点击可向光标方向射击(只能向角色上方区域发射),怪物头上的一个红点代表一点生命值,为零时被击落。
其他操作见游戏中的 HELP 界面。
文件说明
- game.h/cpp: 全局常量,点、向量、得分等基本结构体,以及计算、文件、声音、图像处理等函数。
- interface.h/cpp: 游戏界面类,以及按钮类。
- jumper.h/cpp: 角色与怪物均派生于 Jumper 类。
...

奥特曼的组成
奥特曼是由斜的椭圆,圆角矩形,圆形,以及曲线的组成的。此处绘制中,主要应用了曲线的的绘制,将奥特曼画的比较饱满。
值得学习的地方
本次绘制过过程中,自己编写了两个函数。一个是绘制有倾斜角的椭圆,用来表示奥特曼的眼睛,这样可以使得奥特曼更加有灵魂。另一个是心形。在平时绘制别的东西时,如果需要,可以直接借鉴。
效果图
源码
///////////////////////////////////////////////////
// 程序名称:绘制奥特曼
// 编译环境:Mictosoft Visual Studio 2013, EasyX_20200315(beta)
// 作 者:luoyh <2864292458@qq.com>
// 最后修改:2020-6-10
//
#include<conio.h>
#include<gr
...
图形学中的 DDA (Digital Differential Analyzer) 画直线算法,以下是该算法的 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 co
...
图形学中的直线的中点算法,以下是该算法的 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));
int cy = (a
...
图形学中的 Bresenham 画直线算法,以下是该算法的 C 语言实现:
///////////////////////////////////////////////////
// 程序名称:基于 Bresenham 算法画任意斜率的直线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 作 者:yangw80 <yw80@qq.com>
// 发布日期:2011-4-26
//
#include <graphics.h>
#include <conio.h>
// 使用 Bresenham 算法画任意斜率的直线(包括起始点,不包括终止点)
void Line_Bresenham(int x1, int y1, int x2, int y2, int color)
{
int x = x1;
int y = y1;
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int
...