游戏程序的设计模式--工厂模式

角色扮演RPG游戏项目 注:完整代码与数据库含报告可下载,附下载链接: 1.游戏概述 1.1目的 利用本学期所学Java语言结合程序设计方法学的知识,做出一个可视化操作的RPG小游戏。 1.2游戏描述 该项目是一款RPG游戏,本游戏实现了基础的移动、回合制攻击、使用药剂及技能,并且可以通过击杀怪物过的武器。玩家可以通过方向键控制游戏主角与怪进行战斗。该游戏具有角色类型系统、角色装备加成功能、武器类型与加强系统、角色... 阅读详情

        最近打算翻译一些外国的文章,既长见识,有练习了英语,真是一石二鸟,一举两得,一箭双雕。下面就是第一篇:

        动机:

        我在一些技术电话访谈中发现,很多公司在寻找拥有“strong cs fundamental”的职员。我并不是很明白这样做的具体含义,但是我知道他们会问什么样的问题--经常它会是“写一个快速排序的函数”或者“写一个二叉树的搜索算法”。这些经常会成为难题,尤其是如果距离你最初作出这些题有几年时间了的话。对我而言,我认为更重要的是设计的质量以及对模式的实现。然而快速排序和BST是非常重要的,在很多语言及系统库中都会使用它。我认为设计更加高效复杂的算法的方法是了解算法的根本,但是更重要的是知道如何去组装他们。

        所以,因为我认为设计可能滴最有价值并且稀缺的技能,我打算开始写一系列的文章来解释游戏设计中的那些基本的设计模式。

        注意:我打算在这本书里好好解释尽可能多的设计模式。我并不认为我是个专家,所以没有顾忌地纠正我吧,我会尽力的修正我的观点。
第一:工厂模式
工厂模式是一个相当基本的模式。它是把一个复杂类的生成过程抽象为一个用来生成该类的类方法。举个例子,下面的伪代码来自我的游戏《Total Toads》(暂定名称):
        class Bug ...
        class BugFalling implements Bug ...
        class BugFirefly implements Bug ...
        class BugMultiply implements Bug ...
        在我的游戏中,你有一个想吃掉小虫的青蛙在屏幕的低端,那些小虫会以各种方式出现在屏幕上。每种小虫有不同的外观,而且就算是同一种的小虫也有不同的属性。比如,BugFalling 是静止的,有些是tutorial bugs,有些移动得很快,有些不活泼等等。我会把这些特别的属性整合到我的工厂类,而不是用一大串复杂而又难懂的初始化函数。我把这个工厂类叫做“BugFactory”,在BugFactory的有文件中,包含我之前提到的那些类,就像这样:
        // BugFactory creates bugs for specific uses
        class BugFactory 
        {
          // BugFalling creation functions
          static BugFalling bugFallingStatic();
          static BugFalling bugFallingTutorial();
          static BugFalling bugFallingAtSpeed(float speed);
          static BugFalling bugFallingDontAnimate();


          // Other bugs types might go below...
        }
        注意到BugFactory现在有四个类方法其返回值是BugFalling的实例。相比之前我需要在BugFalling类中写复杂的构造函数,而现在我只要实现简单的构造函数,而那些附加的初始化信息会由BugFactory来完成。现在我们来看一个BugFactory的函数, bugFallingStatic():
        static BugFalling bugFallingStatic()
        {
          BugFalling bug = new BugFalling();
          bug.speed = 0; // assume speed is a variable that controls the bug's fall
          return bug;
        }
        正如你看到的,这是一个目标简单的函数,你可以想象在越来越复杂的游戏中有越来越复杂的对象,这些对象的实例化会让人抓狂。使用对象会让你有你个单独的地方来查看与修改对象的创造。你可以想象,在BugFactory中添加BugFirefly和BugMultiply的生成不用费什么劲(其实是要的。。)。并且因为他们是类似的对象(都继承于父类Bug),有一个工厂制造他们是很方便的,并且可以很方便的修改他们特定的初始化过程。


        。。。。终于翻译完了,就这么短的文章翻译了一个多小时。。。真是很累啊。。
还有不懂  While quicksort and BST delete are important, they're oftentimes implemented in basic language/system libraries  和  write a binary search tree delete   这两句中的delete是什么意思?


        翻译完才发现这文章一般般,不过工厂模式的确是很好很基本的设计模式,可能大家平时无意间都在用这个模式,的但是却不知道怎么称呼,而现在你就可以很逼的说我这段程序是用了工厂模式,没听说过的就会很仰慕的看着你,高手。。。


        原文出处:http://blog.youkuaiyun.com/mazhibinit/article/details/7461663
回合制游戏-工厂模式 在游戏开发过程中,我们避免不了创建各种各样的人物职业,及怪物。试想一下,我有几十个大分类,复杂的层次结构,那么这个创建过程怎么维护。 不错,我们可以使用工厂模式进行创建过程,大大简化了维护方面的困难。 立即下载

相关推荐

Dell R730安装Windows Server 2008 R2

一、RAID驱动准备  在安装Windows server2008 R2操作系统时,如果没有发现硬盘,请将下面的阵列卡驱动先解压(在下载的.exe文件,双击点下一步会自动解压),解压后把那文件夹复制到U盘中。阵列卡 PERC9 H330 - H730 - H730P - H830 Controllers for Windows Server 2008 R2二、系统安装方法方法一:光盘安装  ①请您...

MarshLin 2万+

设计模式之游戏--工厂模式详解

工厂模式一.简单工厂模式二.工厂方法模式三.抽象工厂模式使用总结 引入问题:在面向对象编程中,创建一个对象的最常用的方法是new一个对象实例,new对象操作符就是用来构造对象实例的,但是在一些情况下,new操作符直接生成对象会带来一些问题,举例说,许多类型对象的创建都需要一系列的步骤,可能需要计算或取得对象的初始设置,选择生成哪个子对象实例,或者在生成需要的对象之前必须先生成一些辅助功能的对象,这些情况下,对象的建立就是一个过程,不仅是一个操作。 定义: 将原来分布在各个地方的复杂对象创建过程单独抽离出来,

a15970673567的博客 4533

NXP实战笔记(十五):32K3xx基于RTD-SDK在S32DS上安装HSE之后,进行AB SWAP功能实现OTA升级。

1.HSE 切换服务相关的变量,要放在合理的内存空间,可以参照HSE 安装的潜在失败原因分析。例如,在切换过程中,存在下面的变量,如果不放在dtcm或者no-cable的话,可能会导致切换不成功(非常重要)。链接文件里面设置2.连续两次操作,间隔时间太短,一般认为小于1s.如果连续两次切换,会导致程序死掉。但是重新上电reset之后,程序仍然会执行切换后block的程序。解释如下图:3.切换时未获取SU权限。但在实际的项目工程中,经调试发现如果不获取SU权限,也可以实现。

梦想技术家 3113

浅析设计模式1 —— 工厂模式

本文将着眼于工厂模式,从简单工厂模式、工厂方法模式和抽象工厂模式出发,展开学习和深入探讨。本文为此系列第一篇。概述我们在进行软件开发时要想实现可维护、可扩展,就需要尽量复用代码,并且降低代码的耦合度,而设计模式就是一种可以提高代码可复用性、可维护性、可扩展性以及可读性的解决方案。大家熟知的23种设计模式,可以分为创建型模式、结构型模式和行为型模式三大类。其中,创建型模式是对类的实例化过程进行抽象...

淘系技术 2027

启动盘安装Win10完整指南:U盘制作、BIOS设置与分区排错

系统重装是解决电脑卡顿、系统崩溃、病毒残留等问题的基础操作,而U盘启动盘则是目前最主流的安装介质。其核心原理在于通过Rufus等工具,将原版ISO镜像写入U盘,并依据主板固件类型(UEFI或Legacy)选择对应的GPT或MBR分区表,确保引导程序能正确加载。掌握这些底层概念,不仅能提升安装成功率,还能避免因引导模式不匹配导致的黑屏、无法启动等问题。在实际应用中,无论是老旧电脑升级、硬盘更换,还是需要纯净的系统环境,制作一个可靠的启动盘都是必备技能。本文从备份数据、下载官方镜像讲起,逐步演示U盘制作、启动快

weixin_32667955的博客 339

通俗易通解释SLAM问题的数学描述:运动方程和观测方程

高翔博士在他的《视觉SLAM十四讲》中把SLAM问题的数学描述抽象成了两个数学方程,以下对此做个总结,并且对此做一些通俗易懂的解释: 一、方程的总体形式 作为理性层次的描述,我们引入数学方程来描述SLAM过程,其中第一个方程叫做运动方程、第二个方程叫做观测方程,想象一下我们在研究SLAM的时候肯定需要观测机器人(无人汽车、无人机等都可以统称为机器人)的运动(画面感很强哈哈),这样很容易理解并且记忆这两个方程的名称和意义: 二、变量的含义 我们看到,这两个方程中有大量的英文字母作为变量存在其中,下面介绍一下

weixin_41855010的博客 7110

Unity设计模式之工厂模式

在创建敌人对象时,可以使用工厂模式来根据不同的参数来创建不同类型的敌人。在创建武器对象时,可以使用工厂模式来根据不同的参数来创建不同类型的武器。例如,可以创建一个武器工厂类,根据不同的参数来创建不同类型的武器对象。在创建道具对象时,可以使用工厂模式来根据不同的参数来创建不同类型的道具。例如,可以创建一个道具工厂类,根据不同的参数来创建不同类型的道具对象。工厂模式是一种创建型设计模式,它提供了一种封装对象创建的方式,将对象的创建过程与使用过程分离,使得代码更加灵活、可扩展和可维护。四、工厂模式的应用场景。

voidinit的专栏 1661

SAP FICO资产明细表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO资产明细表开发说明书(包括源代码,测试样例及FS)

我好像病了的博客 1467

游戏开发设计模式之工厂模式

抽象工厂模式提供了一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式使得客户端不需要知道如何创建这些对象的具体类。在游戏开发中,工厂模式可以有效地解决对象创建的问题,降低耦合度,提高系统的可扩展性和灵活性。具体选择哪种工厂模式应根据实际情况和需求进行权衡。例如,在Unity3D游戏开发中,工厂模式被广泛应用于各种设计模式中,帮助开发者写出低耦合高内聚的项目。如果项目较小且不需要处理复杂的产品系列,简单工厂模式可能是一个不错的选择。

🌟【AI炼丹师 | 你的数字技术搭子】 大二解锁3200+道友同行👾 2404

药物代谢仿真软件:PKSim_(6).案例研究与实践应用

通过本章的案例研究和实践应用,我们展示了如何利用PKSim软件构建药物动力学模型、进行参数估计、仿真预测和结果分析。这些方法不仅有助于优化药物代谢研究过程,还可以在药物研发中提供重要的数据支持。通过模型的构建和验证,我们可以更好地理解药物在体内的动态变化过程,为临床试验和药物治疗提供科学依据。

kkchenjj的博客 654

Arch Linux 命令大全,值得收藏!

Arch Linux 是一款轻量级、高度可定制的 Linux 发行版,以其简洁和强大的特性深受高级用户喜爱。但对于新手来说,完全掌握 Arch Linux 的操作需要时间和实践。本文将为您详细介绍常用的 Arch Linux 命令,涵盖系统管理、文件操作、用户管理、软件安装与管理、网络配置和磁盘管理等内容,帮助您更高效地使用 Arch Linux。

网络技术联盟站 973

一篇文章搞懂简单工厂模式、工厂模式、抽象工厂模式

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式中,新增产品时需要修改工厂类,为了解决这个问题而出现了工厂模式。为了解决系列产品的问题,就有了抽象工厂模式。

qq_43173942的博客 411

微波技术仿真:微波谐振器分析_(2).微波谐振器理论

谐振器是一种能够在特定频率范围内存储和释放电磁能量的器件。在微波频段,谐振器通常用于滤波、频率选择和能量存储等应用。一个理想的谐振器在谐振频率下能够存储无限大的能量,但在实际应用中,由于损耗的存在,谐振器的性能会受到一定限制。微波谐振器在微波通信、雷达系统、微波测量和微波电路设计等领域中发挥着重要作用。谐振器的设计需要考虑多个因素,包括谐振频率的精确控制、损耗的最小化、频率稳定性的提高和小型化设计。通过理论分析和仿真工具的使用,可以有效优化谐振器的性能,满足实际应用的需求。

2401_87715305的博客 932

基于Python的工厂模式学习总结

学习书籍精通Python设计模式 介绍 目的:简化对象的创建过程,在创建对象时无需关心内部逻辑与实现。 作用:与直接使用类实例化来创建对象相比,使用一个中心函数来创建对象更容易追踪。实现对象创建与使用的解耦,降低维护应用的复杂度。 工厂模式有两种形式: 工厂方法 抽象工厂 工厂方法 基于单一的函数来处理对象创建任务 传入一个参数,返回一个对象 Django框架的模型类使用的就是工厂方法: foms就是一个工厂方法,传入CharField和DateField就可以创建name对象和birth_data

奔跑的蜗牛的博客 393

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

游戏中常用的设计模式

使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,伍但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。 一:观察者Observer 观察者的设计意图和作用是: 它将对象与

猪少爷的专栏 1675

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java设计模式 十二 享元模式 (Flyweight Pattern)

享元接口定义了对象的共享方法。

空 1221

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[游戏] - 游戏开发中常用的设计模式

来源:http://blog.youkuaiyun.com/duzhi5368/archive/2008/04/22/2314232.aspx 使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认...

weixin_30254435的博客 155

游戏开发中常用的设计模式

来源:http://blog.youkuaiyun.com/duzhi5368/archive/2008/04/22/2314232.aspx http://www.blogjava.net/supercrsky/articles/202544.html Java 观察者模式的浅析 使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计...

wby__2005的专栏 181

游戏设计中常用的设计模式

使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。  一:观察者Observer  观察者的设计意图和作用是: 它将对象与对象之间创建

sunshinewave的专栏 1226

软件设计模式与体系结构【实验报告合集】

四个实验(两学时):策略模式、装饰者模式、抽象工厂模式、命令模式【没做GUI界面,只满足最简要求】 本文对你有用的话,记得点赞哦!以下是教科书&参考书 策略模式 Strategy Pattern 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。在熟悉策略模式相关理论知识的基础上,使用策略模式实现一个小游戏。 ...

鸽子的博客 6279

享元模式

享元模式基本介绍享元模式的实现第一步:创建非共具体享元类(棋子位置类和user类)第二步:创建抽象享元类(抽象棋子类Chess)第三步:创建具体享元类(黑白棋子类BlackWhiteChess)第四步:创建享元工厂总结 基本介绍 享元模式这样理解,“享”就表示共享,“元”表示对象. 享元模式涉及的四个角色 1)抽象享元类(FlyWeight) 是抽象的享元角色, 他是产品的抽象类, 同时定义出对象的外部状态和内部状态(后面介绍) 的接口或实现 2) 具体享元类(ConcreteFlyWeight) 是具体的

weixin_45386797的博客 501

java常用设计模式 看了她,改变你的一生~~~

设计模式;一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案。在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能...

weixin_30797027的博客 92

python编程实战 运用设计模式_《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 1.3 工厂方法模式-阿里云开发者社区...

本节书摘来自华章出版社《Python编程实战:运用设计模式、并发和程序库创建高质量程序》一 书中的第1章,第1.3节,作者:(美) Mark Summerfield,更多章节内容可以访问云栖社区“华章计算机”公众号查看。1.3 工厂方法模式如果子类的某个方法要根据情况来决定用什么类去实例化相关对象,那么可以考虑工厂方法模式。此模式可单独使用,也可在无法预知对象类型时使用(比方说,待初始化的对象类型...

weixin_39636164的博客 197

一名程序员能从俄罗斯方块游戏中得到什么

如今,俄罗斯方块游戏已经成为了一种文化现象,不仅是一款游戏,更成为了一种文化符号和代表,影响了全球无数的玩家和游戏开发者。在俄罗斯方块游戏的历史长河中,它不仅仅是一款游戏,更是一种经典、一种传承和一种精神。那么我们作为一名程序员可以从这款游戏中得到哪些启发呢。一、俄罗斯方块游戏的历史俄罗斯方块的原版作者是俄罗斯游戏设计师Alexey Pajitnov(阿列克谢·帕吉特诺夫),他在1984年创造了这...

新栋BOOK 734

JAVA_WEB设计模式5

设计模式; 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案。在真正理解设计模式之前我一直在编写“简单”的代码. 这个“简

AinUser的博客 1186

3D游戏编程与设计作业05

3D游戏编程与设计作业05鼠标打飞碟(Hit UFO)游戏要求游戏内容要求程序设计要求编写一个简单的自定义Component参考文献 鼠标打飞碟(Hit UFO)游戏 要求 游戏内容要求 游戏有 n 个 round,每个 round 都包括10 次 trial; 每个 trial 的飞碟的色彩、大小、发射位置、速度、角度、同时出现的个数都可能不同。它们由该 round 的 ruler 控制; 每...

鱼板: RE的博客 324
下一篇: [转]整理关于java的String 类,equals函数和比较操作符的区别
木杉
博客等级 码龄15年 12粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值