基于MFC的俄罗斯方块小游戏(一)

[原创]MFC实现的俄罗斯方块 用MFC实现的俄罗斯方块,上学期期末复习着无聊的时候做出来的,每天做一点,最后居然顺利做出来.做了之后才发现,要做成这个小游戏,值得考虑的地方还是很多的.想了想就有以下的一些细节,总结起来有以下几点: 1.   关于方块结构的确定,最初考虑的是用4*4的数组来表示一个方块,但这就意味着每个方块会造成远大于自身的存储空间的浪费,而且按照这种思路,方块每切换一次形状,就要对一个4*4的数组数据 阅读详情

一、唠嗑一下

这次接触mfc纯属意外:一家开发公司在西安举办了软件编程大赛来我们学校做大赛宣传,看了下作品要求都是些Web Page、Android APP什么的,然后看到mfc开发一项,对mfc产生了好奇,于是就查了一些mfc的资料,觉得界面编程挺有趣的。所以这也是我第一次接触微软基础类库mfc,也是我第一次写游戏哈哈哈!不完善之处希望多多包涵。

二、游戏思路及逻辑说明

这款游戏本身操作简单、逻辑分明,大致可分为以下几种状态:

1、 初始态:

随机生成物体,出现在最高处,分数为0;基本上为静态贴图。

2、 游戏进行态:

(一)方块控制

1.变形

    围绕一个方块向右旋转90度.以变形

2.左右下移动

    1>物体左右移动的时候不要过界.

    2>物体落定后.

        (1).设定它落下的位置.

        (2).看是否满足三个同样方格排成一排或一列,满了消去,而后继续随机生成新的方块

        (3).看是否方块垒到顶了.到了game over

(三)随机生成物体

    共七种类型的方块,分别是“田”,“一”,“L”、“J”、“Z”、反“Z”、“T”

(四)重复以上步骤

3、 死亡状态:

方块垒到最高处

三、实现

(一)类的定义

  • 方格类
typedef struct tagPane
   {
     int y; // 行
     int x;  // 列
     CImage blockPNG;
     int imageKind;    //方格的种类
    }Pane;
  • block类
//每个物体定义
   struct Block
   { 
     Pane eachPane[4];    //每个方块共有4个方格,用结构体数组记录
     int y1; // 对应于最上面的一个方块的y坐标
     int y2; // 对应于最下面一个方块x的坐标
     int x1; // 对应于最左面一个方块的y坐标
     int x2; // 对应于最右面一个方块x的坐标
    };
  • 游戏区域类
    struct GameArea
   {
     int bSet;//记录该方格是否被占用,被占用==1,否则为0
     int blockkind;
     CImage blockPNG;
   };

(二)操作函数

    void DrawBlock(int flag);//随机产生方块的颜色
    void GenerateBlock(struct Block &blk);// 随机的产生方块形状
    void TransBlockForm();//方块变形
    void Move(int direction);//方块左右移动
    void MoveDown();//方块下落

    void UpdateLimit(struct Block &blk);// 更新物体的上下左右边界
    bool IsBorder();//判断是否到达边界
    void SetBlockFlag();//标记
    bool IsLine();//判断是否符合消去条件
    bool IsValid();//消消乐的玩法

    void Initialize();//游戏初始化
    void Pause();//游戏暂停
    void GameOver();//游戏结束

(三)一些变量

    //当前的方块
    struct Block block;

    //我们将这个游戏区域格式化为 18*10 (y*x);
    struct GameArea gameAreas[18][10];

    int AreasTopLine;       //记录游戏区域最高的一行
    CRect GAME_RECT;        //游戏区域
    CImage background;      //背景图
    CImage blockPNG;        //方块的图片
    CDC cacheDC;            //缓冲DC
    CBitmap cacheCBitmap;   //缓冲位图

    int score;//得分
VC/MFC 俄罗斯方块双人版(基于MFC单文档) 游戏最终界面如图:题目要求参考VC++程序设计实验指导书,将上次编写的dos版双人俄罗斯方块改写成VC界面版。功能需求①实现双人俄罗斯方块 ②隐藏菜单栏、工具栏、状态栏 ③实现难度可以选择 ④实现下一个砖块预测功能 ⑤实现总分统计功能,和每步消除所得分数显示 ⑥实现下、左、右、旋转、暂停功能 ⑦实现背景音乐播放功能 ⑧添加游戏帮助菜单 ⑨实现砖块三维化 附加:实现双缓冲避免屏幕闪烁 阅读详情

相关推荐

c#实现简单的俄罗斯方块

      由于最近刚进出c#,想快速上手,所以决定写几个小游戏(后面会陆续更新)来熟悉语言,并且记录学习winform的一些相关问题和解决方法。      首先给我的感觉winform和c++中的界面设计MFC还是非常类似的(很可惜当时MFC深入浅出没吃透彻),下面我们就从最基础简单的来实现俄罗斯方块:1首先弄出一个窗体:我是在pictureBox控件上面实现画图的(因为没找到图片资源,所以我的...

c_living的博客 1万+

简单的MFC俄罗斯方块

MFC俄罗斯方块说明游戏功能介绍游戏界面游戏内数据如何改变文本的样式插入链接与图片游戏功能介绍生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 说明 这是使用 Visual Studio 2013的MFC单文档 开发的一个 简单的 俄罗斯方块游戏。适合初学者,源码中包含 大量注释 ,附件中包含 XMind思维导图 辅助理解。

Mirrors406的博客 1826

MFC双人版俄罗斯方块

MFC俄罗斯方块双人版实现

Leetp 5194

VC6.0 MFC 单文档 俄罗斯方块游戏

俄罗斯方块游戏 一、详细步骤 1、新建一个MFC单文档应用程序,如下图所示。 2、新建一个类,如下图所示。 3、添加成员变量并初始化,如下图所示。 4、添加成员函数Draw,并在里面调用画游戏边界和画方块函数(后面会用到),如下图所示。 代码如下: void CRussiaBlock::Draw(CDC *p) { CString str; CFont ft; pDC = p; DrawArea(); DrawBlock(); str.Format("得分:%d 分",m_scor

青哥 2582

C++ vs2019 基于MFC实现俄罗斯小方块游戏

–文件可自取,提取码 xhhs– 添加链接描述 #主要框架来自于杭电李卫明老师的教学视频(如果真要写的话可以先看他的视频,本文主要记录一些拓展功能的实现) 添加链接描述 1. 绘制自定义的图形 在4*4(当然也可以随便)的方格(看成二维数组)里把需要的地方随便赋值,画个南瓜饼(把除了四个角都赋值)什么的都行。 2.得分与显示 在game类加上一个数据成员表示这局游戏的分数,消行的时候增加分数(连续消行也可以加的更多)。 显示,绘制一个edit控件,然后对它右键选择创建变量,变量类型设为“值”,类型为int

kyle_sblogs的博客 1987

俄罗斯方块第二版

放假了,没回家,租房了,没网线---俗话说,有电脑不能上网就好比有个老婆而不能上床.以往自己装好学生,电脑里面都不带安装游戏的.甚至附件里面的纸牌,挖地雷游戏都被我给删掉了.现在一不能上网,立马觉得空虚了.这日子要TMD怎么过啊.人总不能一心烦一空虚就去拿关系代数和微积分解闷吧. 突然想起来自己是写过一个俄罗斯方块的,可以拿出来凑合着.翻出来代码编译一下,一看那代码写的恶心的半天没

秋城 1654

MFC 实现 俄罗斯方块

 很经典的游戏.简单又让人着迷.今天就用mfc来实现个自己的俄罗斯方块.运行截图如下:看起来还行吧..网上有很多版本的实现代码.但是看了几个都是用一个很大的数组记录这些下落的物体的形状.然后写一个很大的switch case来实现变形.感觉真麻烦.今天提出一个容易的实现方法.下面切入正题思路是这样的:一:随机生成物体二:控制    1.变形        围绕一个方块向

秋城 1万+

MFC实现的经典俄罗斯方块游戏

俄罗斯方块(Tetris)是一款经典的电子游戏,自1984年由苏联程序员阿列克谢·帕基特诺夫发明以来,吸引了世界各地的玩家。游戏的目标是通过旋转和移动不断下落的方块,使它们在游戏区域底部形成完整的一行,从而消除这一行并获得分数。随着游戏的进行,方块下落的速度逐渐加快,游戏难度也逐渐增加。MFC(Microsoft Foundation Classes)是微软公司提供的一套面向对象的C++封装库,用于在Windows平台上快速开发应用程序。

weixin_29317963的博客 928

(游戏编程-03)MFC版俄罗斯方块(奇迹冬瓜)

由于代码插入错位,对不久前发的博文重新发布 (一)运行图 (二)前言        大二下学期了,小编学的是软件工程专业.学了大量书本后发现根本没有好的实践,没弄出来什么立体的可感的游戏,于是乎在学校实验室花了3到4天的从早到晚的冥思苦想做出来了这个俄罗斯方块的小游戏.其中查了大量的资料.当立体呈现的时候,小编发现了几个BUG,一是加速下落的键盘不灵(⊙o⊙)…!囧.二是控制

runner2012的专栏 2338

基本MFC类框架的俄罗斯方块游戏

PC游戏早已在IT行业形成了庞大的产业链,很多IT企业都凭借着自己雄厚的游戏开发技术而占据电子游戏娱乐市场。俄罗斯方块是一款风靡全球的PC机游戏和掌上机游戏,它造成的轰动与创造的经济价值可以说是游戏史上的一件大事。这款游戏看似简单却变化无穷。

神仙别闹的自留地 1106

俄罗斯方块的完美MFC实现:代码分析与实践

MFC(Microsoft Foundation Classes)是微软公司为简化Windows应用程序开发而设计的一套C++类库。自从1992年首次推出,MFC一直是Windows平台下主要的开发工具之一。尽管它比一些现代框架更加古老,但在许多企业级应用程序和旧有系统中,MFC仍然是活跃的工具。良好的用户界面设计是游戏成功的关键。美观的界面布局设计和精心挑选的颜色与字体可以为游戏增色不少。动态效果如动画和过渡效果则能够极大地提升用户互动体验。

weixin_35811662的博客 871

基于PierreDellacherie算法MFC俄罗斯方块

文章目录一、 系统分析二、 主要函数代码说明三、程序运行界面截图四、程序调试心得体会参考文档: 一、 系统分析 简要概括: 基于对话框实现俄罗斯方块小游戏。可以玩家亲自下,也可以由算法控制自动下。并且能够连接数据库,记录玩家的得分情况以及查看得分记录。 类图: 主要由五个类组成 图1 项目结构图 CGJXDlg类 图 2 GJXDlg类图 表1 CGJXDlg类成员变量 变量类型 变量名 功能描述 Game game; Game类成员变量,用于控制游戏的进行以及调用Game类方法。实现游戏的可视化

MrGong123的博客 3577

VC++与MFC框架下的俄罗斯方块游戏开发实战

Visual C++是微软推出的一个集成开发环境(IDE),它不仅支持C++语言,还提供了其他多种语言的开发支持。自推出以来,Visual C++凭借其高效的编译器、丰富的库支持和强大的调试工具,赢得了广大开发者的青睐。特别地,它对Windows平台的应用程序开发具有天然的亲和力。俄罗斯方块自1984年由苏联程序员阿列克谢·帕基特诺夫创造以来,就以其简单的游戏规则和上瘾的游戏性吸引了无数玩家。

weixin_32661831的博客 1063

俄罗斯方块 c++ MFC

一、实验实习目的及要求 加强对C++语言的深入理解,达到提高学生分析问题,解决综合问题的能力。要求:分析俄罗斯方块游戏的类及层次图;实现俄罗斯方块游戏的基本功能;实现界面:Windows界面,利用对话框应用程序形式。 二、实验实习设备(环境)及要求(软硬件条件) 设备:PC机 操作系统:Windows 编译软件:Visual Studio 2019 三、实验实习内容简介: 系统应实现的主要功能: 游戏方块移动,游戏方块的碰撞检测,游戏方块旋转,满行消除,分数以及等级计算,开始、结束以及重新开始按钮,游戏方

qq_43527345的博客 3016

MFC做的小游戏连连看(含音乐,含设置)

连连看 MFC做的 VC C++ 带音乐带设置(简单 普通 困难) 100%可以正确运行

基于 C++实现的MFC-海战小游戏,类似雷电游戏,飞机大战

【作品名称】:基于 C++实现的MFC-海战小游戏,类似雷电游戏,飞机大战 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: MFC-海战小游戏 1.游戏 == 绘图; 2.第一关敌军不能发射子弹,50分通关,小船1分,大船3分; 3.第二关敌军发射直子弹,50分通关,小船1分,大船3分; 4.第三关敌军发射追踪弹,击杀大船即可通关。 5.敌船和子弹在出了屏幕或爆炸后会重新生成,子弹回到敌船子弹口 6.使用的编译器是VS2019

MFC实现俄罗斯方块二

1>生成物体         大家想的都过于复杂了.生成物体只是为几个小方块生成几个 行列值,当然这个行列值不是随意的.而是有限制的.假如我们让第一个方块的行列值为 然后依据这个方块在它的上下左右四个方向随机生成第二个方块,然后再根据第二个生成第三....根据第三个生成第四个.每个方块都是上一个方块的上下左右四个方向中非上一个方块的地方,那这个生成的物体正是我们要的!!!不信在纸上画一下! 根据

秋城 6427

Xilinx PL实现DP TX视频传输的关键配置与实战解析

本文详细解析了在Xilinx ZCU106开发板上,利用PL(可编程逻辑)实现DP TX(DisplayPort发送)视频传输的关键配置与实战流程。内容涵盖从硬件平台搭建、DP TX IP核参数(如链路速率、通道数、视频时序)的详细配置,到软件驱动初始化、中断处理及链路训练的全过程,并提供了屏幕闪烁、颜色异常等常见问题的避坑指南与调试技巧,旨在帮助开发者高效实现稳定的4K视频输出。

weixin_29165465的博客 353

MFC俄罗斯方块

MFC俄罗斯方块设计报告 第一章项目描述 1.1功能描述 使用MFC设计一款俄罗斯方块。实现方块下落,方块移动,方块叠加,方块变形,消行等功能。 1.2所需技术 MFC双缓冲绘图,方块移动,下落,叠加,变形,消行处理。 第二章总体设计 2.1运行流程 如附录图2-1俄罗斯方块运行流程图所示。 第三章详细设计 3.1CTetrisGame类的成员函数与变量

Have a nice day. 5957

Unity游戏接入穿山甲广告SDK全攻略:从零到上线的避坑指南

本文为Unity开发者提供了接入穿山甲广告SDK的完整实战指南。详细解析了从账号注册、应用创建到Unity插件集成、安卓与iOS平台打包配置的全流程,并重点分享了广告加载失败、展示异常等常见问题的排查与解决方案,帮助开发者高效实现游戏广告变现。

weixin_29015899的博客 536

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 45万+
上一篇: "MiniHand"蓝牙自动化仿生机械臂小车
下一篇: 基于MFC的俄罗斯方块小游戏(二)
HY_Chan
博客等级 码龄10年 54粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值