快速编程java:游戏架构,俄罗斯方块

前面有一篇网页版俄罗斯方块,看懂,难,修改,难。如果用java做,功能拆分,每个类单独负责一部分功能,耦合性低,这就叫架构良好。做起来,反而简单,还可以后续改进,增加功能。

运行效果:

快速编程java:游戏架构,俄罗斯方块_第1张图片

功能拆分,总体功能是三种MVC。V,View显示。M,Model数据,C,Control,程序控制。

java版 工程结构:窗口部分,游戏具体功能,图片基础功能。

快速编程java:游戏架构,俄罗斯方块_第2张图片

游戏的组成:舞台(scene,stage),演员(actor,role, sprite)

游戏三件事:初始化Init, 绘制paint, 数据刷新update

详细功能划分:

1.地图初始化:二维数组20x10,初始值为0; 方块初始化,在屏幕上方。

2.地图绘制:画出所有方块。 活动方块:画出4个小块。

3.地图刷新:找整行,消整行。

活动方块刷新:下落。下落结束后,产生新块。

俄罗斯方块A1版:
有时间片,可以动态掉落方块。绘制背景图片、方块图片。
没有键盘、鼠标事件,只能看,供初学者参考。

俄罗斯方块A2版:
完整的业务逻辑:时间片,碰撞检测(掉落新块,消除整行),键盘事件(移动和旋转)
关键技术:1.二维数组的使用 2. 状态机,状态改变 3.架构,功能拆分
辅助的技术:方块的坐标表示,图片的输出,全局数据的管理

俄罗斯方块这样的格子类游戏,坐标的表示是这样:

快速编程java:游戏架构,俄罗斯方块_第3张图片

一、架构

1.窗口、面板,按键事件

2.初始化、绘制、数据刷新 (地图、游戏元素的各自初始化、绘制、刷新)

java版和网页版的比较:
java版,功能拆分,每个类负责单独的功能,架构好,更容易做出新功能
网页版,如果没有架构,全靠一个个函数堆积,修改、改进,都困难。
网页版,新的技术,也有类、成员变量、成员函数、库。靠好的架构,才有大型页游。

二、状态

1.游戏状态:游戏进行,游戏失败
public static int  STATE_PLAY=0;    
public static int  STATE_OVER=1;    

2.方块的状态:正在移动,不能移动
状态很重要,用状态能划分流程、子流程,实现各种功能。UML有状态图,设计模式有状态模式。

public static int ACTIVEBLOCK_PLAY=0;
public static int ACTIVEBLOCK_FINISH=1;

三、尝试作业:
1. 完善玩家成绩
2. 用状态机的方法,做暂停功能

以java为例,我们继续做更多功能。
1.类的设计:拆分功能,找出公共部分。
2.具体程序:状态、子状态,流程,子流程。

乐创快速编程 https://blog.csdn.net/weixin_42644456

代码资源 https://download.csdn.net/user/weixin_42644456/uploads

你可能感兴趣的:(java和设计模式,俄罗斯方块,设计模式,java,游戏,源码)