分享代码 快乐编程

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

迷宫(by 祝融)

玩家被困在一个迷宫里,拥有一盏油灯,油灯能够照亮以玩家为中心的一片圆形区域,随着时间的流逝,油灯的照明力会逐渐下降,迷宫内随机分布着一些加油站(黄色的圆角矩形),经过这些加油站能够恢复油灯的照明力,找到地图右下角的终点(绿色圆角矩形)。就算过关。

游戏采用图块(N * N 的正方形)的方式构建地图,且墙壁,地面,玩家,终点采用四个独立的函数绘制,如果想改变地图的风格,只需要修改这些函数的内容即可。

运行效果如下:

迷宫生成采用的深度优先算法,有明显的主路。

完整的游戏源代码如下:

//////////////////////////////////////////////
// 程序名称:迷宫
// 程序作者:祝融
// 作者邮箱:211103376@qq.com
// 编译环境:Visual Studio 2017 + EasyX 20180727(beta)
// 发布时间:2019
...

2D 赛车游戏(by 极品史莱姆)

一、关于本程序
看到吧里没有人写过赛车游戏,于是我就心血来潮写了一个了
顺便在这个程序里用上几个最近学习和思考的成果
也顺便复习了一下物理和数学

二、如何建立一个地图包
1. 选择赛车,音乐,地图的素材
2. 在程序的 map 文件夹下建立一个文件夹将这些素材放入
3. 建立 set.ini 文件
详情参考工程下的文件夹 a 和 b

三、关于碰撞图的绘制
1. 黄色(0xFFFF00)为沙地,会减速
2. 黑色(0xFFFFFF)为赛道,减速较小
3. 蓝色(0x0000FF)为冰面,会滑动
4. 红色(0xFF0000)为围栏,无法通过
5. 绿色(0xFFFFFF)为终点线
6. 灰色(0xAAAAAA)为终点线的两端,用于判定方向(终点线右侧)
7. 紫色(0xFF00FF)为玩家 2 起点
8. 白色(0x000000)为玩家 1 起点
*终点线最好为宽度为一的直线!!!

...

Rolling Ball(by Teternity)

这是经典的下 100 层游戏。>_<

通过鼠标左右键或者键盘 A、D 按键及左右方向键控制小球左右移动,木板会不断上升,小球到底认定游戏结束,按下键盘后小球会加速到一个最大速度,小球在木板上则会跟着木板上移,达到一定分数启动反向操作。

本程序采用单例设计模式,RollingBall 公有继承 BallAndPlank,protected 便于派生类访问基类数据成员。

木板的颜色随机,位置随机。

界面由初始化界面大小控制,可自行更改。

游戏运行截图如下:

游戏的完整源代码如下:

/*
	项目名称:
		RollingBall
	作者:
		tzdhu.z@qq.com (1926594835)
	编译环境:
		Visual Studio 2017,EasyX_20190219(beta)
	发布日期:
		2019-2-2
	最后修改:
...

功能强大的计算器(by 尔灵尔亿)

这个计算器程序是模仿 Windows 10 系统的计算器所写的,借鉴了 Windows 10 计算器的一些外观设计以及所包含的一些功能,但是实现此计算器的所有算法是自己独立开发,其中的一些功能或许没有写的很完善。

下面介绍此计算器所包含的一些功能,以及用法。

计算器包含两大功能:计算功能、转换功能。计算功能包含普通计算器、科学计算器、超大数的计算、解一元一次方程。转换器包含体积转换、长度转换、重量转换、温度转换、能量转换、面积转换、速度转换、时间转换、功率转换、数据转换、压力转换、角度转换,包含了基本所有常用的转换。

普通计算器:实现最普通的加减乘除,通过用户输入的字符串(中缀表达式),转换为计算机可以计算的后缀表达式(后缀表达式又称逆波兰式),最后通过栈来实现计算。

科学计算器:所谓的科学计算器只是加上了一些可以计算的函数,如 sin、cos、tan 等,这个计算器不是按上面普通计算器的实现方法,而是通过数字的直接计算,功能实现的不是很好(所以我认为科学计算用起来是不怎么好用)。

超大数计算:实现一

...

FlipGame(by that boy)

FlipGame,又名点灯游戏,是一个十分有趣的智力游戏:有一行 N 行 N 列的灯,开始时全部是灭的,当你点击其中一盏灯时他的上下左右(若存在的话)状态全部改变,现在要求你以最少地步数,将全部的灯点亮。
此处使用了 8 x 8 的方格,其亮灭状态使用一个 8 字节变量按位记录,点亮状态使用了图片作为背景。

执行效果如下:

项目使用 VS2017 编译,图片内嵌到了资源文件中,并设置了应用图标。【点击这里下载全部源码】

作者:that boy
QQ:512906409
邮箱:zhuguangfeng.thatboy@gmail.com

兰顿蚂蚁(by that boy)

受到生命游戏启发,想到了这个兰顿蚂蚁,都是零玩家游戏。

在平面上的正方形格被填上黑色或白色。在其中一格正方形有一只“蚂蚁”,它的头部朝向上下左右其中一方。
若蚂蚁在白格,右转90度,将该格改为黑格,向前移一步;
若蚂蚁在黑格,左转90度,将该格改为白格,向前移一步。

以上就是兰顿蚂蚁的简单规则描述。更详细的请参考维基百科。

执行效果如下:

完整的源代码如下:

/******************************
 * 兰顿蚂蚁
 * 编译环境:VC++ 2017
 * 作者:that boy,2018/12/19
 * 最后修改:2018/12/21
 ******************************/

#include <EasyX.h>
#include <string>
#inclu

...

LuaEasyX——用 Lua C/API 封装 EasyX(by 小冰)

相信看到这篇文章大部分得小伙伴都是用过 EasyX 的,这是一个 Windows 下的 C++ 图形库,过多的介绍不再赘述。

当初接触 EasyX 时,我最大的感触就是:哇,原来还有这么简单易用的图形库!!!!

用过一段时间感觉很棒,推荐给大家!

某次突发奇想,要不我把 EasyX 封装成 Lua 模块吧,这样子就不受到编译器的限制了,只要装有相应版本的 Lua 解释器,并且提供运行库那就很 OK 啦。

大家  LuaEasyX =  require "LuaEasyX"  后自己 for k,v in pairs(LuaEasyX) do print(k,v) end 看一看

我也懒得做文档了,因为 LuaEasyX 本质就是对 EasyX 的再次封装,API 的参数几乎一模一样。

在下面放出的文件中我会把一些API的差异给列出到一个文本文档中。

以后还会用自己封装的LuaEasyX来再做几个小游戏给大家玩玩

...

基于 EasyX 的实时信号绘制工具(by Ephemeroptera)

由于最近从 matlab 转接到 vs 平台继续自己的仿真工作,但是却一直没有找到简易 plot 工具,于是尝试用 EasyX 开发一个绘制波形的小工具,希望可以帮助到有需要的人。

执行效果如图:

完整源代码如下:

/******************************************************************************************/
// EasyPlot 是基于 EasyX 绘图库(https://www.easyx.cn)而编写的,对实时信号进行绘制的一个工具
// 以下代码为了便于学习以源文件形式展示,如果应用于工程建议采用头文件形式封装
// 本文采用Unicode字符集,ANSI环境的读者注意相关地方格式的转换
// 作者:Ephemeroptera
// 地点:安徽大学
// 联系方式:605686962@qq.com
// 最后修改时间
...

背井离乡(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"

...

方块阵动画

一个方块阵,旋转移动的动态效果,执行效果如下:

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

完整源代码如下:

//项目名称		方块阵
//作者			星羽1704
//email			1479245050@qq.com
//联系方式		qq 1479245050
//描述			一个方块阵,旋转移动的动态效果
//编译环境		win10 64位 + vs2017 + easyx—ver: 20180727(beta)
////////////////////////

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

////////////宏定义
//	常量
#define PI					3.141
...