找方块

程序介绍

该程序是仿照最近网上流行的找方块游戏编写的,虽然没有仿照的一模一样,但是也实现了他的一些功能。个人觉得可玩性还是挺高的,是一个不错的娱乐放松的游戏。

编写简介

该游戏的编写还是挺容易的,可以大致分为三步。第一步,生成一个界面。第二步,使用鼠标获取不同颜色的方块。第三步,刷新屏幕。需要注意的地方就是其中的细节与动态效果,都是些高中物理知识。

截图

源码

///////////////////////////////////////////////////
// 程序名称:找方块
// 编译环境:Mictosoft Visual Studio 2013, EasyX_20200315(beta)
// 作  者:luoyh <2864292458@qq.com>
// 最后修改:2021-10-26
//

#include<graphics.h>
...

盲人体验器

程序介绍

这是一款与盲人相关的游戏,虽然不能够完全的模拟出盲人走盲道的各种感受,但是可以模拟出当你不知道路在何方时的内心焦急,恐惧和不知所措。玩这个游戏时需要的是耐心,耐得住孤独,冷静的思考与判断。

玩法介绍

使用上下左右键或者 w s a d 键进行控制盲人的移动。盲人在盲人道上时是安全的。当处在墙上时是危险的,需要返回盲人道。当盲人正式踏上盲人道时,游戏开始,此时,盲人道会被黑暗遮挡住,一切的信息来源可以通过查看遮挡物的颜色判断。当遮挡物的颜色为黑色时,说明盲人在盲人道上,当遮挡物的颜色为红色时,说明盲人在墙上,需要盲人返回上一步,重新寻找去向。由于所有的操作过程都不知道盲人的位置。所以就会感觉到盲道特别长,操作不难,只是需要勇气和耐心。

示例图

源码

///////////////////////////////////////////////////
// 程序名称:盲人
...

在 Dev-C++ 或 Code::Blocks 下面配置 EasyX

前言

EasyX 虽然挺好用,但是目前官方只发布了针对 VC 的使用方法。本文介绍如何将 EasyX 配置到 DevCpp 或 CodeBlocks 里面,并提供相关的库。

平时我工作忙,有问题直接在后面留言,我会尽力修改。

注:版本太老的 mingw 无法支持。

库下载

点这里下载 easyx4mingw_20211002

配置说明

Code::Blocks 配置 EasyX 的详细说明

以下配置说明仅以官方原版 Code::Blocks 20.03 为例,下载地址:https://appzip.cn/codeblocks/w ,假设 Code::Blocks 的安装路径为 D:\App\CodeBlocks。

安装

1. 下载 easyx4mingw_20211002.zip 后,解压缩。

...

星罗万象时钟罗盘

编写思路

该程序的难点在于字符串的书写角度,理解了这个就已经理解了这个程序的核心内容,需要注意的地方是这个程序的每一圈代表一个 for 循环,我开始写的时候认为一个 for 循环嵌套一个 for 循环,但是后面我发现 for 循环嵌套的太多,就会导致程序运行的速度变慢,为了提高程序的速度,我将所有的 for 循环分开写,不用循环嵌套。然后用一个 while 循环来控制主循环。还有一个问题,程序中我没有用 Sleep 函数,直接使用了获取系统时间的函数,通过慢羊羊的指导,后续又加以修正,让钟表产生旋转的效果。在这里要感谢慢羊羊,感谢他对我编写的每一个程序进行指导,并给我一个展示的平台,让我对编程产生了浓厚的兴趣,由衷的感谢他。

心得体会

写程序总是兴趣使然,实现自己的想法所带来的成就感还是挺不错。如果发现一个自己想用程序实现的东西,总是心中念念不忘,然后悄悄酝酿着,积累着,当有足够的能力将所看所学所想的组合起来时,那可能就是创新吧。多想,多

...

台球斯诺克

一款桌球游戏,简单模拟斯诺克。

底部力度条,可以控制击球力度。

按键 P 可以固定某个力度进行击球。

鼠标右键退出游戏。

附件下载(vs 2019 版):

snooker

探索之路

一个群里的大佬做的 DOS 版我的世界让我想到了这个游戏,后面去看了看 Terraria 的视频,学习了下,做了个极其简陋的沙盒游戏

开发环境:VS2019 + EasyX_20210730

游戏说明:

一个类似于二维版我的世界和泰拉瑞亚的沙盒游戏,你可以建造属于你的一片天地

(但因为目前方块过少,效果极其单调。。)

WASD 键:移动

Q 键:打开制作页面,再次按下返回

E 键:打开背包页面,再次按下返回

R 键:查看角色属性

ESC:设置页面(可调整为观察模式、普通模式,查看当前坐标)

大键盘1键:保存!!

制作页面:鼠标滚轮选择目标制作物品(部分物品需在工作台或熔炉旁才能制作)

背包页面:鼠标选中背包物品后拖动至使用栏便可更换使用栏物

...

合成立方体 (模仿)

游戏介绍

在 4399 上面看到一个很有趣的小游戏:合成立方体(游戏原地址)。

游戏中,玩家需要通过所给的形状去尽可能拼凑出完整的一行一列,然后完整的行列会增加分数,一旦所给的形状无法被塞下,游戏结束。非常简单的游戏,我用了 EasyX 去复原了一下。

游戏运行截图如下:

游戏源码下载

点击这里下载游戏完整源代码

井字棋(release)

说明

简易实现了井字棋,未使用深搜算法。

基本原理

设立气的概念:

棋子的气:己方棋子的气大小为 1,对手棋子气的大小为 -1。

总气:所有外气的和,己方尽可能提高这个值,对手是负降低这个值。同理可推算中心点四个气,角三个,边两个。

外气:一共八个外气,对应两个对角线以及横竖三条线,气的大小对应该条线上的棋子气之和。

内气:一共九个内气,对应棋谱的九个位置,每个位置的气为该位置涉及到的外气之和。

计算步骤:

1. 优先处理外气为 2 的位置,该位置是己方的胜利位置。

2. 其次处理外气为 -2 的位置,该位置是对手的获胜位置。

3. 然后处理内气位置为 2 的位置,该位置是己方的绝杀点。

4. 然后对于一个进行区别对待:有一个情况边优先度比中心点高。

5. 如果中间位置没有占,占中间位置。

6. 遍历内气,取得有意义的内气的中值,二次遍历,找内气大小是中值的位置,在这些位

...

七巧板Plus

游戏介绍

鼠标左键拖动图形移动,松开时自动吸附,按下 ctrl 键的同时拖动则不进行吸附,右键单击图形顺时针旋转 45°,ESC 结束游戏。

新增内容

1. 增加了点吸附效果,拖动图形松开后,触发边吸附的同时也会触发点吸附。

2. 拖动图形的同时,若按下 ctrl 键,则不会进行吸附。

不定期更新,力求完善。。。

程序说明

简要介绍程序中的一些点。

属性

使用模板类和 lambda 表达式实现了属性,用于对外暴露字段,详见 C# 属性。

使用属性可以简化程序,减少繁琐的 get 函数和 set 函数,提高了程序的可读性。

因为是自行封装的属性,所以存在很大的缺陷,很大程度上增加了类的大小(因为把函数成员变成了数据成员),属性的重写以及访问控制的不完善等。

对象管理机制

使用 Tangram 类来管

...

四杆机构-机械原理

四杆机构模拟。

四杆机构介绍:维基百科、哈工大机械原理课件.

说明

AB 作为主动件,AD 为机架。

根据传入的杆长自动绘制出相应的四杆机构。

如下图,程序绘制了曲柄摇杆、双摇杆、摇杆曲柄、双摇杆机构。

单击鼠标右键循环隐藏圆圈、C2 点、C1 点。

/////////////////////////////////////////////////////////////
// 程序名称:四杆机构-机械原理
// 编译环境:Visual Studio 2019 (v142),EasyX_20210730
// 作  者:luyiran <872289455@qq.com>
// 发布日期:2021-8-11
//
#pragma warning(disable:4244)	
...

解决编译错误:C4996:'GetMouseMsg': This function is deprecated.

问题概述

EasyX 提供了两个头文件:

  • graphics.h
  • easyx.h

easyx.h 包含最新的函数,并且删掉了旧函数。graphics.h 引用了 easyx.h,同时提供了对旧函数的支持。使用 graphics.h 里面提供的旧函数时,会收到一个 Warning C4996,例如使用旧函数 GetMouseMsg,会收到编译提醒:

C4996:'GetMouseMsg': This function is deprecated. Instead, use this new function: getmessage. See https://docs.easyx.cn/getmessage for details.

在过去,Visual&nb

...

Tony's Jumper

介绍

这是一个模仿 Doodle Jump 的小游戏,实现了原游戏中的部分元素。

             

操作说明

由于没有重力感应,所以用键盘替代。

按下 A/D 或方向键会给予角色水平向左或向右的恒定加速度,此加速度可以在 OPTIONS 界面通过改变灵敏度来调节。同时角色也受水平阻力影响,阻力大小与水平速度的平方成正比,因此达到一定速度会变为匀速运动。竖直方向只受重力加速度,碰到平台或踩到怪物会获得一定的初速度。

鼠标点击可向光标方向射击(只能向角色上方区域发射),怪物头上的一个红点代表一点生命值,为零时被击落。

其他操作见游戏中的 HELP 界面。

文件说明

  • game.h/cpp: 全局常量,点、向量、得分等基本结构体,以及计算、文件、声音、图像处理等函数。
  • interface.h/cpp: 游戏界面类,
...

VS 中的生成事件

简介

VS的项目中有一个 生成事件 的选项,即在执行相关操作时运行的一些命令行,只要能运用好这一功能可以很好地编程提升效率。


生成事件具体位置

命令行的命令可通过 cmd 中的 help 命令查询,这里便不再赘述。

实例1:根据 x86/x64 环境,将对应的 dll 文件移到项目文件夹下

在使用外部的库时,常有 x86/x64 两种不同的版本的 dll ,若改变编译环境,就要手动移动相应的 dll 文件,十分麻烦,因此可以利用生成前命令(此处以 fmod 为例),在编译前将相应的 dll 移动到项目文件夹中。

具体步骤:

1.打开项目属性页

2.选择平台 x64 选择配置 所有配置

3.点击生成事件页

4.点击生成前事件

5.在命令行一栏添加以下命令

copy /Y lib\x64\fmod.dll

...

简单的音乐游戏

介绍

这是一款十分简单的音乐游戏。

编译环境:Visual Studio 2019,EasyX_20210730

游戏说明

  1. 介绍:玩家需根据音乐节奏,控制方向块,接住不断靠近的 note。
  2. 控制:Q 逆时针旋转,W 后移,E 顺时针旋转,ESC 暂停游戏,具体可于游戏中进行设置。 
  3. 若想游玩其他谱面可以访问 osu 或镜像站 v mirror (推荐 使用时可以下载其中的MINI谱面,减少不必要的空间占用)下载谱面 并将下载的 .osz 文件以 zip 格式打开并解压到 obm 文件夹中。
  4. 对于任何音乐游戏,包括该游戏都建议从最低难度开始。

项目共包含以下文件

源程序文件:

  1. main.cpp 主程序。
  2. Control.h/cpp 游戏控制部分 包含类 keycheck 单独按键控制,timer 计时器,FPSCounter 帧数计算。
...