java 俄罗斯方块 教程_俄罗斯方块
1.游戏区:
◆游戏区可以划分成20行12列,共20*12个小方块区域。可以使用一个二维数组来表示。如int m_iMap[20][12], 其值为1表示有方块,为0表示
无方块。
◆每个图形由4个小方块构成,共有7种组合,其ID定义如下:
0 1 2 3 4 5 6
@@@@ @@ @ @@ @@ @ @
@@ @@@ @@ @@ @@@ @@@
◆当前图形:可以用一个4元素的数组来表示,如CPoint m_ptCurrent[4],其中保存方块的坐标值,如(3,5)表示该方块位于第3行第5列,不要
直接保存像素坐标值。小方块的长度和宽度的像素值(如20)可以保存在一个宏常量GRID_SIZE中。
◆下一图形的ID:可以用一个数表示,如m_iNextShapeID
◆每种图形可以进行90度翻转,7种图形衍生出19种变化。翻转状态可以用m_iRoateState记录,0表示初始状态,1、2、3分别表示旋转90度、
180度、270度后的状态。
◆左键:使当前方块向左移动一格。m_ptCurrent [i].x – 1
◆右键:使当前方块向右移动一格。m_ptCurrent [i].x + 1
◆下键:使当前方块向下移动一格。m_ptCurrent [i].y + n, n表示难度级别
◆上键:使当前方块顺时针旋转90度。计算出4个小方块新的坐标位置m_ptCurrent[4]。
◆使当前图形自动下降:OnTimer事件中实现,使m_ptCurrent[i].y + n
◆随机产生7种图形中的一种,作为下一图形。srand(GetTickCount()); rand() % 7;
◆算法设想:开始使用上次产生的“下一图形”的形状ID生成“当前图形”m_ptCurrent 重新产生“下一图形”……
◆碰撞检测:检测当前图形m_ptCurrent的4个方块的下端和m_iMap的上端,如果有重合,说明不能再下移了。
翻转时的碰撞检测
◆计分算法:填满的行要消除掉,并增加分数。重置m_iMap[20][12]二维数组的值。
加分规则:如果一次消1行,得10分;一次消2行,得30分;一次得3行,得60分;一次得4行,得90分。一次最多只可能消4行。
◆左右移动的限制:不允许移出20*12的边界。
◆小方块的实现:使用图像(Bltbit)或者使用矩形画图(Rectangle, FillSolidRect)
◆方块颜色,背景色:m_colorBlock, m_colorGameArea, m_colorNextArea, m_colorHelpArea
◆游戏结束:m_iMap[0][i]中任何一个元素为1,表明游戏结束。
2.下一图形提示区
3.帮助说明区
java 俄罗斯方块 教程_俄罗斯方块相关推荐
- java核心教程_核心Java教程
java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...
- java高级教程_高级Java教程
java高级教程 课程大纲 学习Java基础很容易. 但是,真正钻研该语言并研究其更高级的概念和细微差别将使您成为一名出色的Java开发人员. 网络上充斥着"软","便宜 ...
- java写作教程_如何编写技术教程-发布关于开发人员写作的新书
java写作教程 Writing for Software Developers, a new book by Philip Kiely, teaches you everything that yo ...
- Java国际化教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 Java国际化入门教程 - 从简单的步骤了解Java国际化从基本到高级概念,包括概述,环境设置,区域设置,区域设置详细信息,显示语言,ResourceBundle,NumberFormat, ...
- Java Regex 教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 正则表达式不仅仅是Java的技术,在任何一门编程语言中都会存在,是一种通用的IT技术,其理念和用法在任何编程语言中基本一致,除了有一些由于语言不同而导致的一些语法不同正则表达式,主要用于匹配 ...
- java俄罗斯方块答辩_俄罗斯方块项目答辩.ppt
俄罗斯方块项目答辩.ppt ,俄罗斯方块,小组杨洪松.杨明虹.严虹雨 组长杨洪松 组员杨明虹.严虹雨项目编写背景 项目开发进程 项目功能及项目效果 所运用的技术.开发工具 项目组各成员完成的内容 完成 ...
- java 俄罗斯方块 教程_java俄罗斯方块制作方法 全面哦
展开全部 代码多了,传不过去 分开给你传吧 还是发你邮箱吧 下面是一部分代码 代码如下: package com.tarena.tetris;//包名倒636f70793231313335323631 ...
- java在线教程_如何自学java-已拿阿里25k offer
本人19本科应届生,专注Java后台学习,已签腾讯WXG的offer(日后转c++). 众所周知,鹅厂后台一直以C++为重,面试官也是做C++开发.但是语言只是工具,对代码的理解才是核心.面试时重点考 ...
- java framemaker教程_《FreeMarker教程-笔录》
今天我们学习一下FreeMarker模板引擎.它是基于模板文件生成其他文本的通用工具.本章我们主要讲使用FreeMarker模板引擎生成 .html 文件和生成 .java 类文件. 简介 FreeM ...
- 用myeclipse开发java web教程_转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程...
本文是一篇在Myeclipse下构建Java Web项目的初级教程.图文并茂,非常详细.所用的Myeclipse版本是7.5. 第一步:新建Web Project,如下图. 第二步,在弹出的窗口填写下 ...
最新文章
- opencv函数copyto的用法
- AI“换脸”打开潘多拉魔盒,如何应对?
- 我怎么在AD里面找到已经改名的Administrator账户?
- ffmpeg编译 c++ 常量中有换行符
- 灵光一现的创造——霍夫曼编码
- 安装包安装服务,点修复出现的错误”Error 1001:指定的服务已存在“ 解决办法...
- python基本统计量_Python中简单统计量的计算
- 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
- 多态的两种用法 形参与返回值 java
- chrome扩展程序获取当前页面URL和HTML内容
- JAVA操作数据库调试经验
- 五笔字根表识别码图_五笔字根表
- python九宫格拼图游戏
- ftp服务器文件夹设置,ftp服务器对文件夹设置权限
- 1999-2019,互联网失落者
- 后端开发发展学习路线
- Linux下 Yum 是什么
- 解决ADB卡在等待调试器的问题Waiting For Debugger is waiting for the debugger to attach.
- android UI设计图片和文字尺寸px对应dp、sp值换算
- 骨传导耳机的作用有哪些?骨传导耳机的好处盘点