`
hatedance
  • 浏览: 59493 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

DDD实践:手机java游戏(俄罗斯方块)

阅读更多
工作一直都是跟数据库和web相关的。虽说都是编程,但从来没写成一个小游戏。
于是我打算趁空闲写个小游戏。
我总觉得应用开发和游戏开发是有很大鸿沟的。
长期的DB开发,令我觉得若不建个表就不是设计模型,不用文本框下拉框就不是做界面。
而游戏既不需要表,也不用这些Form元素。

幸好,近年学习了一点DDD,用到了hibernate,逐渐远离SQL语句。
于是,我毫无把握的开始了游戏的开发:
1 游戏的需求大家都知道,几种方块:长条的,方块的,...。我去wiki上查阅了一下,人家用字母都给命名了:IDLJSZ。非常形象。
2 于是,我用ROSE设计类图,惊喜的发现,一共才需要3个类:
  1. Grid(基本元素,小方块),
  2. Tetromino(各种形状的方块),
  3. PlayField(整个方块的容器)。
  先不考虑界面显示,Grid的属性是位置和颜色,Tetromino由若干Grid组成,PlayField由若干Grid和一个正在下落的Tetromino组成。Tetrmino的职责主要是旋转和移动。PlayField的主要职责是生成和消去tetrmino,并且计分。
3 这3个类都很快定义好了。该考虑如何显示了。写惯了JSP,但Java的2D编程我没接触过,有点害怕。我甚至打算用AWT的按钮来当作Grid。

我google了"java游戏编程",结果多数是讲J2ME的,想想也对,java小游戏多数是跑在手机上的。于是我找了一个例子,模仿它定义了一个Canvas的子类,似乎没有Timer这样的东西,用线程解决。我决定让Grid,Tetrmino,PlayField都各自负责绘自己,定义了一个paint()函数。

于是,这游戏能跑在我的手机上了。

一点总结:
1 MVC的思想很重要。这次游戏开发一开始没考虑显示层。但毫不影响核心逻辑的开发。我觉得稍微学习一下3D API,这游戏就成为3D俄罗斯方块了。
2 OO思想很重要,以后不要凡事先考虑界面和持久层。应以domain为核心来驱动分析和设计,然后再考虑持久化和界面的问题。

附:
代码和可执行的jar文件都在google code上:  http://code.google.com/p/jack-lab/
2
1
分享到:
评论

相关推荐

    java-ddd-skeleton:Java框架和示例中的:hot_springs_selector:DDD。 课程:

    :hot_beverage: :rocket: Java DDD Skeleton:将样板保存在新项目中 :high_voltage: 尽快启动Java项目 :information_selector: 介绍 如果您想使用JUnit和Gradle引导Java项目,那么这是一个开始的库。 在这里,您...

    俄罗斯方块C++源代码

    俄罗斯方块,这款经典的益智游戏自1984年诞生以来,就以其简洁的规则和无尽的挑战性吸引了无数玩家。而用C++语言实现俄罗斯方块,是许多编程爱好者学习过程中的一个经典案例,它能够帮助我们深入理解C++的基本语法、...

    fangkuai.zip_fangkuai_俄罗斯_俄罗斯方块_俄罗斯方块 vc

    "ddd.h"可能是定义了一些游戏内部数据结构或算法的头文件,比如方块的形状、旋转规则、得分计算等。 在“俄罗斯方块”的编程实现中,一般会包含以下几个核心部分: 1. 方块生成:随机生成各种形状的方块,包括I、O...

    【推荐】DDD领域驱动设计&中台实践资料合集(20份).zip

    DDD领域驱动设计&中台实践资料合集,共20份。 DDD促进传统架构微服务转型 化繁为简--DDD驱动复杂业务软件架构的演进 基于FP的DDD实践 基于DDD的领域建模中的模版和工具实践 架构分层模型适配 金融支付系统的改造之...

    设计的秘密:DDD落地最佳实践与实战

    "设计的秘密:DDD落地最佳实践与实战" 本资源摘要信息主要关注Domain-driven design(DDD)的设计理念和实践,旨在帮助开发者更好地理解和应用DDD在软件开发中的重要性。 DDD的优势 DDD的主要目的是为了解决软件...

    DDD领域设计模式代码案例

    在Java环境下,DDD可以帮助开发者更好地理解和实现业务逻辑,提高代码的可读性和可维护性。本案例提供了一套完整的DDD实践,包括领域模型、聚合、值对象、实体、服务、仓储等核心概念。 1. **领域模型**:领域模型...

    基于Java微服务的DDD实践设计源码

    该源码集基于Java微服务架构,深入实践了领域驱动设计(DDD)理念,包含966个文件,涵盖837个Java源文件、77个XML配置文件、32个UML图文件(puml)、6个属性文件(properties)、4个Markdown文件(md)、4个YAML文件...

    DDD实战篇:分层架构的代码结构

    不同于其它的架构方法,领域驱动设计DDD(DomainDrivenDesign)提出了从业务设计到代码实现一致性的要求,不再对分析模型和实现模型进行区分。也就是说从代码的结构中我们可以直接理解业务的设计,命名得当的话,非...

    俄罗斯方块程序.rar

    《C++实现俄罗斯方块游戏源码解析》 在编程世界中,游戏开发是一项充满挑战性的任务,尤其对于初学者来说,通过编写简单的游戏代码,可以深入理解编程语言的特性和逻辑思维。本文将深入探讨如何用C++语言实现经典的...

    俄罗斯方块程序源码

    在本例中,VC被用于构建一个经典的俄罗斯方块游戏。 俄罗斯方块是一款简单却充满挑战性的游戏,它的基本机制是不同形状的方块从屏幕顶部落下,玩家需要旋转和移动这些方块,使得它们在底部形成完整的行,进而消除行...

    领域驱动设计(DDD):分层架构

    在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢? 在研究分层架构时,常通过...

    深度解析java游戏服务器开发.zip

    Java游戏服务器开发是一个涵盖多个领域的复杂工程,涉及网络编程、并发处理、数据库交互、游戏逻辑等多个方面的...希望这个Java游戏服务器项目能为你的课程设计或毕业设计提供宝贵的实践机会,助你在IT行业中稳步前行。

    ddd-base:Java的DDD(域驱动设计)基础软件包

    DDD基地 Java的域驱动设计基础软件包。 如何在Java中使用它? 请参考 特征 注解 实体,领域事件等的基类 域事件:遵循CloudEvents规范和CloudEvent转换支持 DDDReact性: : 组件 数据:实体,VO和汇总 行为:...

    DDD领域驱动设计&中台实践资料合集(20份).zip

    DDD领域驱动设计&中台实践资料(20份): DDD促进传统架构微服务转型(42页).pdf DDD在旅游电商架构演进中的实践(47页).pdf DDD实践中的那些坑(28页).pdf DDD的为与不为(25页).pdf Every Entity as A ...

    DDD领域驱动设计和中台实践资料合集25篇.zip

    DDD在旅游电商架构演进中的实践 Every Entity as A Microservice - 领域驱动设计DDD 分享我对领域驱动设计(DDD)的学习成果 化繁为简--DDD驱动复杂业务软件架构的演进 基于DDD的领域建模中的模版和工具实践 基于FP的...

    java-ddd-example:using使用SpringBoot的Java项目中的六角结构+ DDD + CQRS

    :hot_beverage: :direct_hit: 带有SpringBoot的Hexagonal Architecture + DDD + CQRS Java示例 您可以使用Java做一些很棒的事情 :slightly_smiling_face: 遵循域驱动设计(DDD)和命令查询责任隔离(CQRS)原则的...

    ddd-javaee7:在 Java EE 7 和开源世界中应用 DDD

    2. **Java EE 7**:Java EE 7是Java平台的一个版本,包含了诸如JAX-RS(用于RESTful服务)、CDI(上下文和依赖注入)、EJB(企业JavaBean)、JSF(JavaServer Faces)、JPA(Java Persistence API)等组件,这些组件...

    java-ddd-skeleton

    :hot_beverage: :rocket: Java DDD Skeleton:将样板保存在新项目中 :high_voltage: 尽快启动Java项目 :information: 介绍 如果您想使用JUnit和Gradle引导Java项目,那么这是一个开始的库。 在这里,您有的...

    基于 FP 的 DDD 实践(42页).pdf

    "基于 FP 的 DDD 实践" 基于 FP 的 DDD 实践是指在领域驱动设计(Domain-Driven Design)中应用函数式编程(Functional Programming)的思想和技术。领域驱动设计是一种软件开发方法论,它强调领域模型的重要性,并...

    java游戏开发实例

    Java游戏开发是一个涵盖广泛的主题,它涉及到编程语言、图形处理、用户交互以及游戏逻辑等多个方面。在这个"java游戏开发实例"中,我们可以深入探讨几个关键的知识点。 首先,Java作为编程语言是游戏开发的重要工具...

Global site tag (gtag.js) - Google Analytics