无限循环的几何

一个群里的大佬做的 DOS 版我的世界让我想到了这个游戏,后面去看了看 Terraria 的视频,学习了下,做了个极其简陋的沙盒游戏
开发环境:VS2019 + EasyX_20210730
一个类似于二维版我的世界和泰拉瑞亚的沙盒游戏,你可以建造属于你的一片天地
(但因为目前方块过少,效果极其单调。。)
WASD 键:移动
Q 键:打开制作页面,再次按下返回
E 键:打开背包页面,再次按下返回
R 键:查看角色属性
ESC:设置页面(可调整为观察模式、普通模式,查看当前坐标)
大键盘1键:保存!!
制作页面:鼠标滚轮选择目标制作物品(部分物品需在工作台或熔炉旁才能制作)
背包页面:鼠标选中背包物品后拖动至使用栏便可更换使用栏物
...在 4399 上面看到一个很有趣的小游戏:合成立方体(游戏原地址)。
游戏中,玩家需要通过所给的形状去尽可能拼凑出完整的一行一列,然后完整的行列会增加分数,一旦所给的形状无法被塞下,游戏结束。非常简单的游戏,我用了 EasyX 去复原了一下。
游戏运行截图如下:
点击这里下载游戏完整源代码
这是网上经常见的视觉错觉艺术图片,可以用程序生成的。效果如下:
完整的源代码如下:
///////////////////////////////////////////////////
// 程序名称:视觉错觉艺术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 = getpix
...
今天很偶然需要这样一个东西:
求任意扇形的最小包围矩形,要求矩形的边是水平、垂直的。
这个东西看似很简单,但是仔细一想,需要注意的地方蛮多的,还真有点不好下手。再回想一下,好像没有那本书里面讲过。然后百度了一下,似乎也没找到有效的方法。于是我就花了点时间搞定了这个东西,然后顺手写了一个例子演示效果。
如果您有更好的方法,十分期待交流一下。
以下代码除了包含必要的求解任意扇形的最小包围函数之外,还加上了鼠标操作:按下左键移动鼠标,可以调整终止角的弧度;同时按下 Shift 键移动,可以调整起始角的弧度。
执行效果如图:
完整代码如下:
///////////////////////////////////////////////////
// 程序名称:计算扇形的最小包围矩形
// 编译环境:Visual C++ 6.0 / 2019,EasyX 20210730
// 作 者:y
...
当鼠标滑过时,可以在屏幕上实现漂亮的水波纹效果。
执行效果如下:
源代码如下:
(注意,请确保 loadimage 函数里面加载的图片路径存在)
/********************************************************
* 程序名称:实现水波纹显示 *
* 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730 *
* 作 者:豪 (QQ: 415051674) *
* 核心算法:参考网上算法 *
* 发布日期:2013/3/20 *
********************************************************/
#include <graphics.h>
#include <conio.h>
#inc
...
一款桌球游戏,简单模拟斯诺克。
底部力度条,可以控制击球力度。
按键 P 可以固定某个力度进行击球。
鼠标右键退出游戏。
附件下载(vs 2019 版):
snooker1.2
又是一个怀旧的游戏,让我想起了以前学习编程的时候。
这个游戏模仿的微软在 20 多年前的一个小游戏,不知道谁也有印象呢?图片都是从原来的游戏中抓图弄出来的,颜色也是从原游戏抓图中取色设置的,应该和原来的风格很像。
你的任务是用香蕉击中你的对手。
你可以通过鼠标调整投掷香蕉的角度和力度,香蕉会受重力加速度的影响。同时,请注意屏幕底部表示风力的箭头,香蕉同样会受风力影响。风力的箭头越长,表示风力越强。还有,周围的楼宇会阻挡你的香蕉。
游戏运行效果如下:
完整的源代码和图片可以【点击这里下载】。
也可以直接查看如下游戏源代码(注意,除了以下代码,还需要两个图片文件,在前面的压缩包里面有):
// 程序名称:扔香蕉的大猩猩
// 编译环境:Visual C++ 6.0 ~ 2019,EasyX_20210730
// 作 者:慢羊羊 <yw80@qq.com>
// 发布日期
...
这个程序模拟了几个小方块用弹簧连接到鼠标上的效果。当鼠标在绘图窗口上移动时,可以看到小方块连续受力的效果。
动态程序就不再抓图了。源代码如下:
///////////////////////////////////////////////////
// 程序名称:力学:鼠标用弹簧挂着一串小方块
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 移植作者:yangw80 <yw80@qq.com>
// 发布日期:2012-4-27
//
#include <graphics.h>
#include <math.h>
#include <time.h>
const int WIDTH = 640; // 窗口宽
const int HEIGHT = 480; // 窗口高
const int BOXCOUNT = 10; // 方块的数量
const int BOXSIZE = 10;
...
一个模拟橡皮筋的程序。
执行效果:
以下是全部源代码:
///////////////////////////////////////////////////
// 程序名称:模拟橡皮筋
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作 者:frxyz1 <http://hi.baidu.com/frxyz1>
// 最后修改:2012-4-15
//
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#define NODES 20
#define GRAVITY 1
#define ITER 8
struct Vector
{
float x, y;
void operator += (Vector v) { x += v.x; y += v.y; }
...
本程序根据物理原理模拟一个球自由落体并持续弹跳的效果,小球只受重力影响,忽略空气阻力,反弹时能量损耗 10%。
程序源代码如下:
////////////////////////////////////////////////////////////////////
// 程序名称:物理反弹球模拟程序
// 编译环境:VC6.0 / 2019,EasyX_20210730
// 作 者:yw80@qq.com
// 最后修改:2012-3-29
//
#include <graphics.h>
#include <conio.h>
int main()
{
double h = 300; // 高度
double v = 0; // 速度(方向向下)
double dv = 9.8 / 50; // 加速度(每 1/50 秒)
// 初始化绘图窗口
initgraph(640, 480);
// 画地平线
line(100, 421,
...
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 中的变量名。
//
#includ
...