手动摆放七巧板

游戏介绍

手动摆放七巧板的程序,可以拼成各种图案,也可以再添加一套七巧板一起拼。

操作方法:

  • 鼠标左键拖动图形;
  • 鼠标右键使七巧板顺时针旋转 45 度;
  • 按住左键时按空格可以让四边形轴对称翻转。

游戏截图

完整游戏源代码

完整的 VC 项目在 gitee 上:https://gitee.com/ProtagonistMan/tangram

编译环境

VisualStudio 2019,EasyX_20200902

文件描述

Point.h

用于存三角形和四边形的点的值,用整型限制很多,例如求一个点相对于一个圆心旋转一定角度后的位置,我的做法是用三角函数来求,就是半径长度乘以三角函数值得到 x,y 的坐标,最终结果一定是小数,如果这个值不保存下来,而是强转为整型,那么这个点的位置就不准确,下次旋转时得

...

舒尔特方格小游戏

游戏介绍

学校的心理课上介绍了舒尔特方格这个东西,能锻炼自己的专注力,回家以后写了 300 来行代码实现了这个舒尔特方格小游戏。

玩法就是按照 1~25 的顺序去点击数字,时间越短越好。

更新日志 (2021/11/27) : 对游戏进行大改,重写 UI,加入计分系统

游戏截图

游戏源码下载

这里直接上源码,同学们可以自行复制到自己的编译器里编译。

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

#include <fstream>

#include <vector>
#include <algorithm>
#include <string>

#pragma comm
...

找方块

程序介绍

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

编写简介

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

截图

源码

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

#include<graphics.h>
...

盲人体验器

程序介绍

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

玩法介绍

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

示例图

源码

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

探索之路

一个群里的大佬做的 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 类来管

...

Tony's Jumper

介绍

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

             

操作说明

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

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

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

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

文件说明

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

简单的音乐游戏

介绍

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

编译环境: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 帧数计算。
...

数字拼图游戏

这是一个简易的拼图游戏。

其实很多时候,精彩的游戏不一定非要用图片。将游戏的功能和手感都做好,游戏一样好玩。

所以我就做了这个拼图游戏当作例子。运行效果如下:

完整的 VC 源代码如下:

/////////////////////////////////////////////////////////
// 程序名称:数字拼图游戏
// 编译环境:Visual C++ 2010,EasyX_20210730
// 作    者:慢羊羊
// 发布日期:2021-3-26
// 最后修改:2021-8-3
//
#include <graphics.h>
#include <time.h>
#include <conio.h>


IMAGE	g_Block[16];		// 拼图碎片
byte	g_Map[4][4];		// 游戏地图(存储了每个碎片的下标)
byte	g_E
...

Logic Pic(模仿)

程序介绍

模仿手游 Logic Pic 做的游戏。

 

游戏介绍

玩法

根据数字的提示,左键点击白色方格,将其变为黑色,使每一行(列)的黑色方格,满足这一行(列)的数字,右键白色方格将此方格变为禁止状态,意为不涂,便于解题。左键(右键)黑色(灰色)方格,可取消其状态,变为白色普通方格。

当所有行(列)的黑色方格都满足该行(列)的数字时,解密成功。

例:3   :该行(列)三个黑色方格在一起,如上图第二列。

例:2 1:该行(列)一共有黑色方格,但是 2 和 1 需要分隔开,如上图第五列。

功能按钮

提示按钮,游戏界面下方第一个。随机获得一行(列)的正确答案,可能会出现在已经被填涂的行(列)。每局游戏只能使用一次,请谨慎使用。

记录按钮,游戏界面下方第二个。记录当前所有方格的状态。不限使用次数,但会覆盖原来的数据。

回退按钮,游戏界面下方第三

...

贪吃蛇(纯C++)

游戏说明

这是一个传统的贪吃蛇游戏,基于链表实现

界面设计参考了 https://codebus.cn/aknoi/a/snake

按键说明

  • 方向控制:↑↓←→ 或者 Q(逆时针),R(顺时针)
  • 速度:按下 space 加速,‘[’ 减速,‘]’ 加速 
  • 食物:小键盘 + 增加食物,小键盘 - 减少食物 
  • 其他:非小键盘数字键 9、0 可以调整帧率,小键盘 * 可以切换贪吃蛇模式,F1 帮助,F11 截屏

状态栏说明

  • 生命状态:贪吃蛇是否存活,由于没有设置死亡,所以只有存活和濒死两种状态
  • 等级:每吃 10 个食物升一级
  • 分数:每个食物 10 分
  • 速度:默认速度 0 ,可以调节,最快 10,最慢 -10
  • 长度:
...

双人击球游戏

游戏说明

Player1 玩家通过 W、S 按键控制左板上下移动,Player2 玩家通过 O、L 按键控制右板上下移动。在游戏过程中,小球的速度会随着接触木板的次数增加而加快,增加游戏难度。当小球没有碰到木板时游戏结束。

效果图

完整代码

///////////////////////////////////////////////////
// 程序名称:双人击球游戏
// 编译环境:VS2010,EasyX_20200902
// 作  者:温良
// 最后修改:2021-1-31
//

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

int main()
{
	initgraph(640, 480);
	srand(GetTickCount());
	setbkcolor(WHITE);
	cleardevice();

	setfillco
...

2048游戏(高仿版)

实现原理

作为一名Oier,我会告诉你,整个程序用到的只有一种算法,那就是:模!拟!

(而且本游戏的灵感就来源于我做过的一道OI题)

既然是模拟,那么按照游戏流程编制就行了。整个程序分为这样几个部分:

  1. 初始化
  2. 绘制界面
  3. 玩家移动,并计算生成新棋盘、计算分数
  4. 返回 步骤2. 直至游戏结束 或 胜利

依次实现即可(详见代码)。

游戏方法

先贴一张运行截图:

可使用 WASD 或 方向键 进行游戏。

游戏结束后,可选择重新开局 或 退出游戏。

完整源码

该项目的 github 地址:https://github.com/Dashu-Li/2048Game

完整代码如下:

// 程序名称:2048Game
...