挑战六秒

挑战六秒的说明

编写这个程序的想法来源于生活中的这个小游戏,一般商场等地方就会有这样的一个供路人来玩的“挑战六秒”的小小的装置。看谁能够准确的暂停到六秒整,感觉这个挺有意思,而且很锻炼人的反应能力和预判能力。其实编写这个“挑战六秒”程序的想法很早就产生了,但是由于各种原因,只能等到放假空闲下来编写。编写过程还算顺利,几乎是一气呵成,用了半天时间就编写成功了。

程序编写过程

首先我需要将程序的框架构建成功,主要过程就是按键后程序能够结束循环并暂停。这个实现后接下来就是设计程序界面。以前设计界面我都是用尺子在纸上进行勾绘。最近我发现 CAD 其实更适用。使用 CAD 可以准确的设计布局,并且可以找准坐标。为了更加真实的模仿“挑战六秒”,我需要按照电子数字字体绘制数字。我将电子数字字体分成 7 个模块。并将每个模块单独的编写成函数,每个模块的绘制是比较耗费时间的,这 7 个模块可以根据不同的组合组成需要的数字。为了防止出现闪屏的情况,我使用覆盖的方法将每次产生的数字

...

CosmoRun - 宇宙漫步

说明

CosmoRun是NoSixFive游戏工作室发布在Windows应用商店的一款魔性小游戏,觉得特别好玩所以仿做了一个。它的操作十分简单,点击鼠标可以让小球转向,控制小球在一个方块组成的世界中漫游~

游戏截图

代码概况

仓库地址:https://github.com/Nomango/CosmoRun-EasyX

编译环境:VS2010及以上

代码行数:1800+

由于这个游戏是16年4月份写的,当时我对游戏框架并不了解,完全按照自己的想法进行设计,注释写的很少,还有特别多的数字计算,所以代码阅读起来非常困难,尤其是Floor这个类,随机创建地板的算法复(hun)杂(luan)到我自己都不想再看见它…

源文件和类说明

main.cpp:
主函数,程序入口。创建了一个GameUI对象,运行StartUI函数进入游戏界面。

GameAfx.h
包含了所有头文件,并对游戏中的常量

...

Pixel Puzzles

Pixel Puzzles是一种逻辑游戏,以猜谜的方式绘画位图。在一个网格中,每一行和列都有一组数,玩家需根据它们来填满或留空格子,最后就可以由此得出一幅图画。例如,“4 8 3”的意思就是指该行或列上有三条独立的线,分别占了4、8和3格,而每条线最少要由一个空格分开。传统上,玩家是以黑色填满格子,和以“×”号标记一定不需要填充的格子。就此来看,这和踩地雷十分相似。但跟踩地雷不同的是,即使填错了格子,也不会即时出局。Pixel Puzzles是一个NP完全的问题。 Pixel Puzzles是在1987年由日本人西尾彻也发明的。在日本,Pixel Puzzles的名称是“お絵かきロジック”,意思是“绘画逻辑”。Pixel Puzzles初见于日本的谜题杂志,玩家用纸和笔来玩。

异世界之光

前言

这是一个策略养成小游戏,虽然几乎谈不上策略。本人蒟蒻一只,代码问题以后会慢慢修改

背景介绍

“我”在一片丛林中迷迷糊糊地醒来,看了看周围杂草丛生的环境,瞪大了眼睛:“我不是在床上睡觉吗!!这什么鬼地方!!”。“我”急忙从地上站了起来,活动活动了全身酸软的肌肉,开始疯狂的破坏。在过了一个多小时的冷静后,“我”终于得出结论——我穿越了。。。

在一个多小时的破坏后,我整理了我现在拥有的物品——睡衣......然后没了,就只有睡衣。但是正当我绝望之时,我看见了一个破茅棚,旁边有一个小湖泊、一颗果树和一本书......一本写着召唤之书四个大字的破书... ... 

我带着满心的疑惑,打开了这本烂让人无法直视的的“召唤之书”。这本破

...

Tony's Snake 3

介绍

一款基于贪吃蛇的小游戏, 加入了多种有特殊效果的食物, 可以控制蛇向八个方向移动.

这是本系列游戏的第三版, 使用了 EasyX 的图形库, 并增加了鼠标操作.

此程序是对绘图和鼠标操作的进一步练习, 是对多态与类继承的初步学习.

环境

VC++6.0

EasyX 2018 春分版

文件

startup.h -- 一些全局变量

startup.cpp -- 游戏主程序

game.h -

...

益智小游戏:交叉线

这是用 C++ 写的益智小游戏“交叉线”(源码在底部)。

本程序的核心在于判断线段是否交叉,需要两种算法:快速排斥实验和跨立实验

包含十三个文件

  • Head.h : 初始化头文件
  • Cross Line.cpp : 程序开端文件
  • Game_Class.h : 游戏类头文件
  • Game.cpp : 游戏类文件
  • Begin.cpp : 初始界面类实现文件
  • Level.cpp : 关卡界面类实现文件
  • Play.cpp : 游戏界面类实现文件
  • Win.cpp : 过关界面类实现文件
  • About.cpp : 关于项目类实现文件
  • Point.cpp : 点的结构类实现文件
  • Line.cpp : 
...

围住神经猫游戏

一.游戏说明

本游戏仿造4399的小游戏-围住神经猫,游戏地址:4399围住神经猫游戏

游戏操作:通过鼠标点击操作,设置路障,围住神经猫,当成功围住神经猫时,游戏胜利。当神经猫逃离地图边缘,游戏失败。

二.游戏截图

三.实现思路

1. 地图还原:

首先是游戏的道路,这里我们采用绘制灰白色的圆来表示可走的路,用黄色的圆来表示已存在的障碍物。同时还需要注意奇偶行需要交错排列。

2. 猪的移动:

这里我们采用广度优先搜索求最短路径。"猪"在一个位置,能够移动的方向有6个,需要注意的是:

由于奇偶行交替排列,导致奇偶行猫的可行路径是不一样的,奇数行:上,下,左,右,左下, 左上。

偶数行:上,下,左,右,右下,右上。剩下的就是常规的求最短路径即可。

四.完整代码

...

弹幕躲避游戏

游戏说明

1.操作

上下左右移动/选择 shift慢速模式 x清屏 esc退出界面(除了主界面)

2.计分

每帧(1/60秒)计分 原有 + 1 + pluspoint

3.奖励

当达到第六级别后可以奖励一次清屏机会(原有3次

4.关卡结束

关卡结束后有约0.6秒的休息时间

5.慢速模式

速度减少约一半,并显示判定点

6.垂直同步

屏幕刷新与逻辑刷新同步,打开可以减少cpu负担

7.关卡

目前共有五关

8.文件

含有文件 gdat 玩家数据与设置 ; main.cpp 主程序 ;  define.h 定义函数 ; type.h 定义数据与数据结构 ; Title.jpg 标题背景 

9.pluspoint

为黄色的点,获得后可以增加1点pluspoint随关卡等级增加,出现率增加,进入下一关后淸0

...

诺基亚经典贪吃蛇

纯代码实现的经典贪吃蛇。相信贪吃蛇是不少人儿时的美好记忆。诺基亚的像素版贪吃蛇,曾经风靡一时。今天,我用 EasyX 实现了它。操作方法:可通过 wasd 或上下左右键控制蛇的移动;通过食物的成员函数 color 将吃掉食物后增加的节颜色设定为吃掉食物的颜色;每得 500 分,增加一个食物,但食物总数不超过 10 个;撞墙或撞到自己即为死亡。这是本人第一次发表代码,且本人为初中生,如有可改进之处欢迎提出建议!

老年贪吃蛇游戏

游戏说明

         这是一个用来模拟老年机上贪吃蛇游戏的游戏,简谱的画面希望能够给大家带来童年的回忆。当然,难度自然会比老年机上的游戏难一些,希望大家做好准备,开始游戏吧!

        作者信息:邮箱 mzh1772@163.com,2007 年出生,有错误欢迎提出。

操作方法

        按方向键控制蛇的方向,ESC 键暂停游戏,吃到一个食物加 1 分,碰到墙壁或蛇自己结束游戏。

运行截图

游戏源码

/*
	名称:  老年贪吃蛇
	作者:  梅朱赫(QQ:3406077232)
	环境:  Vs2019-C++空项目模板-32位
	拓展包:EasyX_20200315(beta)
	时间:  20
...

90%还原南宫梦吃豆人

MyPacman 作者 bridgeL

开发软件:VS2019

使用的图形库 easyx, 版本2020-1-9
使用的图片素材 /pacman2/res 来自于网络
项目github地址: https://github.com/bridgeL/pacman2

本文对应版本v1.4.7

特性:迷宫;四只怪物,A*算法,差异化追逐;大力丸,用于反杀怪物;怪物会感受恐惧,四散躲避

游戏运行画面展示

核心框架概述

类图/设计流图

类关系

CMover 派生

CMonster 
CPacman 

CFlash 容器

CFla

...

博弈五子棋(人机对战)算法改进

基于 EasyX 的五子棋程序。

界面依旧,唯一不同的是算法。改进前的 AI 眼光短浅,只顾当前局面。改进后的 AI 使用 DFS(深度优先搜索)进行对博弈树的遍历,再挑选分值最大的根节点进行落子。具体的,就是先算出每个点的当前分值,再递归去寻找落子后对方分值,把这两个值相减,就可以得到这个位置真正的分值。

可是如果直接递归,时间复杂度很大,大约是 O((192)n)( n 为递归次数),于是就加入了两个剪枝(只查找周边有棋子的空位)(如果位置初始分值大于最大分值才递归)和层数限制(只考虑以后4步)。

改进后基本1秒就可以算出来。

运行效果如下:

完整源代码如下:

////////////////////////////////////////////////////////
// 程序名称:博弈五子棋
// 编译环境:Visual C++ 2019	
...

迷宫小游戏

基于 EasyX 的迷宫小游戏,有三种随机生成算法。

包含九个文件

  • Maze.h : 初始化头文件
  • Maze.cpp : 程序开端文件
  • Game.h : 游戏类头文件
  • Adventrue.cpp : 冒险模式类文件
  • Forest.cpp : 冒险模式-森林系列类实现文件
  • Dungeon.cpp : 冒险模式-地牢系列类实现文件
  • Infernal.cpp : 冒险模式-地狱系列类实现文件
  • Help.cpp : 帮助信息类实现文件
  • Other.cpp : 刷新界面、放置按钮、输出对话框类实现文件

包含算法

  • 森林系列:Prim 算法
  • 地牢系列:图论 DFS 算法
  • 地狱系列:暴力 DFS 算法

算法说明

以下对这些算法给出简单说明,详细请自行学习(比较有难度):

...

炸金花小游戏

纯代码实现的一个简单的炸金花的小游戏。

市面上的炸金花似乎已经被禁,因此模拟时没有参考,或许有一些不足。

由于简单模拟,所以没有太多的动画和界面。

程序由 三个头文件 和 一个源文件 组成,便于分块管理。

一、"Cards.h"

        封装了卡牌底层,由三个类组成,单张牌类、三张牌类 和 52 张牌的类。

        有控制台的输出测试接口。

二、“CardGraph.h”

        该文件主要是进行绘图,根据扑克的底层数据进行相关绘制。

        修改:利用宽字符输出实现花色,而不是直接绘制。

        绘制卡片背面心形时,仅需两条直线和两条贝塞尔曲线即可,这里不过多说明。

...