分类: Flex

俄罗斯方块游戏开发(四)–方块消除

发表于3年前(Dec 23, 2014 7:29:59 PM)  阅读 705  评论 0

分类: Flex 俄罗斯方块

标签: tetris 俄罗斯方块 消行

这节讲方块消除。首先我们建立一个Ground类,用着障碍物类,Ground类里面有个12*20的数组_cells,代表游戏面板可填充的所有方块,用_topCell变量来代表当前最顶上的一个障碍物,如果_topCell为0,则表示已经到顶,则游戏结束。

方块在移动前,将判断下方是否有障碍,或者是否左右出界。如果下方有障碍物,则触发Ground类的accept方法,开始进行消行判断,至此整个游戏就可以运行了。

最终游戏源码: /upload/2014/11/23/TETRIS1.04.zip

游戏安装程序:

......

俄罗斯方块游戏开发(三)–方块变形与移动

发表于3年前(Dec 23, 2014 7:27:14 PM)  阅读 624  评论 0

分类: Flex 俄罗斯方块

标签: tetris 俄罗斯方块 方块变形 方块移动 监听键盘事件

经过上一节,已经可以使方块自动下落,这节我们给他加入键盘事件,来实现控制方块变形与移动。

首先我们加上键盘事件监听,要考虑的是键盘事件监听加到哪个对象上面,GamePanel?不,如果加在GamePanel上,只有焦点在GamePanel上时才有用,我们应该加在整个应用上,只要焦点在应用上,就能控制方块,所以我们应该加在TETRIS上面。然后我们应该监听KeyboardEvent.KEY_DOWN事件还是KEY_UP事件呢?如果是KEY_UP事件,只有键盘释放时才会移动,这样的话,如果我们按住方向键不动的话,方块将不会移动,所以我们应该监听KEY_DOWN事件。

俄罗斯方块游戏开发(二)–方块的显示与定时下落

发表于3年前(Dec 23, 2014 7:08:32 PM)  阅读 787  评论 0

分类: Flex 俄罗斯方块

标签: tetris 俄罗斯方块 定时下落

这节我们主要讲如何让方块在游戏区域显示以及定时下落。首先我们知道,标准tetris一共有7种方块,每种方块最多有四种形态,有的只有一种如正方形块,有的只有两种如竖条横条,当然我们可以把他们也看做有四种形态,只是有些形态样式相同而已,这个影响不大。参考传智播客的视频方法,方块横向竖向最大宽度为4个格子,我们可以用一个4*4的方阵来表示每个方块以及他们的状态,如下面的方阵,转化为程序,我们可以用一个二维数组来表示,红色的部分值为1,白色部分值为0,画图时,我们只对1的部分画单元格,模型大概就是这样。

 

俄罗斯方块游戏开发(一)–游戏面板布局

发表于3年前(Dec 23, 2014 6:56:10 PM)  阅读 777  评论 0

分类: Flex 俄罗斯方块

标签: tetris 俄罗斯方块 布局 游戏面板

从今天起,我将使用AIR制作一个经典的游戏–俄罗斯方块。这个游戏不仅很多玩家喜欢玩,也有很多程序员都喜欢用这个做学习项目。刚学习AIR的时候,我就想过做这个游戏,基于难易程序,我先写了五子棋跟扫雷,五子棋的话,由于电脑AI算法现在不是我所能研究的,所以只做了玩家对战,玩家对战一般也只能用于局域网对战,实用性不强,所以没放上来。之前扫雷游戏算是完整完成了,虽然写的博客有点虎头蛇尾,实在是写作水平有限,望大家谅解。这次写扫雷程序,我会尽量写详细点,写完一点我会把每节的代码都会单独上传,希望能对大家有用。申明一点,写这个游戏前我初略看了一下传智播客的关于这个游戏的视频教程,那个是基于java GUI的,虽然语言不同,但思路是共通的,我想我很多设计会参考他,大家也可以参看那个视频。

Flex修改浏览器标题栏以及状态栏

发表于3年前(Dec 23, 2014 4:58:51 PM)  阅读 364  评论 0

分类: Flex

标签: index.template.html 中文乱码 状态栏 标题栏

  众所周知Flex Web应用都是最后编译成swf文件,嵌入到html网页中的,有时候我们需要Flex跟html交互,当然这个不是我们本文讨论的重点。

  Flex提供了改变浏览器标题的方法:BrowserManager.getInstance().setTitle(yourTitle);但是没有提供改变状态栏的方法。我们可以通过Flex调用html的js方法来改变状态栏的属性。Flex Web应用编译出来的html文件是以html-template文件夹中的index.template.html为模板的,所以我们可以在index.template.html里面加入js方法来改变状态栏的属性:
window.defaultStatus=”可点击顶部菜单栏–帮助–图例说明中查看线路图例说明”;
但是你会发现在index.template.html加入上面的代码,编译后生成的html会是乱码,我试过很多种方法也修正不过来,网上找了很多资料,发现也有类似问题,但都没有解决结果。后来我偶然发现,如果把上面的代码独立出来,单独放到一个js文

......

AIR游戏扫雷(二):核心算法

发表于3年前(Dec 23, 2014 4:35:48 PM)  阅读 723  评论 0

分类: Flex 扫雷

标签: 扫雷 算法

简单介绍下扫雷游戏,扫雷游戏获胜方法是找出雷区中所有的雷,雷区中的数字标示他周围的8个格子中雷的个数(数字最大为8)。扫雷中核心算法主要是布雷算法。如何布雷呢?首先用一个二维数组标示雷区上的格子,数组初始值为0,然后开始进行布雷。布雷时,产生一个随机数,随机数根据一定算法来代替雷区上的一个格子,这个格子的值赋为9,然后旁边8个格子的值都增加1。一般来说为了避免雷过于集中,数字最大为6,且5、6出现的概率较小。

扫雷时,如果点中数字为9的格子,标示踩中雷,游戏结束。为0的格子则迭代周围8个格子,将相连的为0的格子为玩家点开。点中其余数字,则直接显示数字。

大概算法就是这样,具体实现见以后程序。

AIR游戏扫雷(一):窗口菜单的制作

发表于3年前(Dec 23, 2014 4:32:46 PM)  阅读 866  评论 0

分类: Flex 扫雷

标签: 扫雷 窗口菜单

今天开始进行扫雷游戏的制作。

今天第一课先先讲下窗口菜单的制作。上个C-DRAWS课题中的菜单栏使用的不是标准的air里面的菜单栏,是我从flex web项目中直接移植过来的,整体效果基本一致,而今天的菜单通用性就不那么好了,只能在air应用中使用。

我已经将菜单制作封装成了MenuUtil.as类,只要提供菜单的xml文件,就能方便的生成窗口菜单。

C-DRAWS画图程序(三):画图核心

发表于3年前(Dec 12, 2014 10:22:45 PM)  阅读 782  评论 0

分类: Flex C-DRAWS

标签: c-draws DrawCanvas CGraphics

这一节的内容主要是完成工具栏以及核心的画图。

上一节我们主要讲了布局,这一节我们先看下工具栏。众所周知,工具栏一般都是有一个选中状态的,实现方法有几种,一种是准备两组图片,一个是选中状态,一个是未选中状态,状态改变时替换相应的图片。还一种是改变按钮背景图片或颜色。在这里我们使用Flex中的Glow特效。

CGraphics类,用来扩充系统的Graphics。现在CGraphics类实现了画点,画线,画矩形,画圆的方法,并支持虚线样式。所有的样式我封装到了自定义的Style类里面了。

我们如何通过鼠标操作,来获得图形的相关操作呢?首先我们必须在画布(DrawCanvas)里监听鼠标事件,但鼠标按下时,我们必须记下,当前鼠标的坐标,作为图形的开始位置,然后开始监听鼠标移动事件(注意,鼠标移动事件不能一开始就监听,必须在鼠标按下时才开始添加监听),移动过程中, 记下鼠标的当前位置,作为图形的结束位置,开始画图,因为鼠标移动是个连续的过程,所以这样做的话,画图也会是一个连续的过程,能实时展现出来。