C++语言程序设计:C++ 实现俄罗斯方块
安安 2017-10-19 来源 :网络 阅读 1422 评论 0

摘要:本篇C++语言程序教程将为大家讲解C++语言编程的知识点,看完这篇文章会让你对C++语言程序编程的知识点有更加清晰的理解和运用。

本篇C++语言程序教程将为大家讲解C++语言编程的知识点,看完这篇文章会让你对C++语言程序编程的知识点有更加清晰的理解和运用。

俄罗斯方块是很多人的入门游戏啊,小时候常常拿着游戏机玩,现在学了编程,你是否有想过自己开发一款俄罗斯方块呢,比如像下面这样子的:

 C++语言程序设计:C++ 实现俄罗斯方块

看起来很有程序员风格啊,上图是实验楼教程【C++ 实现俄罗斯方块】最后的效果图,如果你也想开发一个这样的俄罗斯方块,可以点击教程进行学习哦~

下面是开发这样子俄罗斯方块的原理及关键函数设计,如果你不想直接看详细的开发步骤和代码,也可以先看看下面的内容哦~


开发原理

1 设计前的分析

在开始程序编写之前,我们要先分析程序设计需要实现哪些功能,划分为哪些模块,在俄罗斯方块中我们首先想到的应该是显示方块,其次是方块的下落,左右移动,旋转,最后的层满消行,另外一个基本的俄罗斯方块游戏还应该有下一个方块形状的提示功能。

所以我们编程中需要解决的问题有:

· 显示方块

· 实现方块的移动

· 方块旋转

· 对层满的方块消行

· 提示下一个方块形状

2 基本图形

每个方块由四个 box 组成,从游戏框的中心位置掉落,在框内不碰撞边界和其他方块的情况下可以进行旋转。

 C++语言程序设计:C++ 实现俄罗斯方块

3 NCURSES库的使用

简单地说,NCURSES 是一个从 System V Release 4.0 (SVr4) 中 CURSES 的克隆,这是一个可自由配置的库,完全兼容旧版本的 CURSES,是一个可以使应用程序直接控制终端屏幕显示的库。

NCURSES封装了底层的终端功能,包含了一些创建窗口的函数,并且有Menu、Panel 和 Form对CURSES基础库的扩展,我们可以建立一个同时包含多窗口(multiple windows)、菜单(menus)、面板(panels)和表单(forms)的应用程序。

窗口可以被独立管理,例如让它卷动(scrollability)或者隐藏。 菜单(Menus)可以让用户建立命令选项,从而方便执行命令。而窗体(Forms)允许用户建立一些简单的数据输入和显示的窗口。面板(Panels)是 NCURSES 窗口管理功能的扩展,可以用它覆盖或堆积窗口。


关键函数设计

头文件: 首先包含头文件以及定义一个交换函数和随机数函数,后面用到(交换函数用来做方块的旋转,随机数用来设置方块的形状)

定义类:

设置方块形状: 通过 case 语句定义了7种方块的形状,在每次下一个方块掉落之前都要调用以设置好它的形状以及初始位置

旋转函数: 用了一个比较简单的算法对方块进行旋转,类似于矩阵的旋转,先将 shape 数组进行斜对角线对称化,再进行左右对称,便完成了旋转,需要注意的是要判断旋转后方块是否出界或重合,如果是,则取消本次旋转。

移动函数:如果玩家没有按下任何按键,方块需要慢速下落;

重复函数:每次移动或旋转之后要进行判断的函数;

层满函数:对方块已满的行进行消除,每当一个方块向下移动停止后都需要进行判断。

代码实现

上面对开发这样一个俄罗斯方块进行了原理分析,也介绍了关键函数的设计,不知道你看完之后是否已经会开发了呢?~


希望这篇C++文章可以帮助到你。总之,同学们,你想要的职坐标C++频道都能找到!

本文由 @安安 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程