魔域-文字rpg(初学Java第四篇)

本文介绍了初学者在学习Java过程中,如何在魔域文字RPG项目中应用Code Refactoring、I/O Streams和Composition & Inheritance。通过对代码的重构,实现了游戏角色的继承和组合,提高了代码的可理解和维护性,并探讨了Java I/O Streams在游戏数据处理中的作用。
摘要由CSDN通过智能技术生成


前言

学习目标:本次学习讲初步涉及到Code Refactoring、I/O Streams、Composition and Inheritance等方面知识。


提示:以下是本篇文章正文内容,下面案例可供参考

游戏界面及特性介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

游戏名:仙侠传

地图:

                                  |拜火高窟|
                                    |
                |十里田|——|餘杭村|//|無垠荒漠|
                    |       |       |
                |玄鐵鎮|//|檾山仙市|——|玄玉藥房|

                   北
                东    西
                   南

道具系统: 四种不同道具,其中一种可以触发隐藏剧情

通关:15级通关

可存档读档;
附送大logo;

一、Code Refactoring

重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

怎样才算是合格的重构呢? 至少需要做到以下几点:
消除味道:一个重构应该是从识别一个坏味道(Bad Smell)开始,以消除一个坏味道结束,任何不以消除坏味道为目标的重构都是耍流氓。
始终工作:即重构定义中的“在不改变软件可观察行为的前提下”,说白了就是重构过程不能破坏甚至改变软件外在功能。
持续集成:不需要为重构单建分支,重构过程可以做到Feature开发在同一分支上持续集成持续交付。
随时中止:例如一个方法重命名,需要修改100个调用点,当改到50个的时候有个紧急的Feature,我可以随时暂停重构,立即切换到Feature开发上,且不需要回滚已做的重构。
断点续传:还是上边的例子,假如我已经完成了紧急Feature的开发,可以随时继续之前的重构,完成剩下50个调用点的重命名。
过程可逆:对于重构,经常有人会问:你怎么保证重构就会更好而不是更坏呢?重构的伟大就在于他跳出了对错之争,将关注点放到如何快速平滑安全的变化上,当然也包括反向重构。

根据重构定义所述,我将所有跟角色有关的代码利用继承和组合进行了重构,主要从creature、player、enemy中进行。

二、Composition and Inheritance

1.继承

继承:
“is-a”的关系;
B是基类A的一个派生类;
逻辑上要求:“一个B对象也是一个A对象”。

(父类更通用,子类更具体)

功能:有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的 基础上,还可以定义自己的新成员。

格式:class 子类名 extends 父类名 {}

优点:

  1. 提高了代码的复用性

  2. 提高了代码的维护性(通过少量的修改,满足不断变化的具体要求)

  3. 让类与类产生了一个关系,是多态的前提

缺点:

  1. 破坏封装,子类依赖父类

  2. 只能继承一个父类,必须包含所有方法,增加系统复杂性

  3. 复用父类方法

代码如下(示例-继承):

定义一个类 Car 来描述所有汽车通用的刹车行为 brake(), 
然后通过某种方式(继承/组合)来为不同的型号的汽车提供不同的刹车行为。
public class Car {
   

    public void brake() {
   
      // 提供一个默认的刹车实现
      ...
    }
}

public class CarModelA extends Car {
   
    public void brake() {
   
      aStyleBrake();// A 风格的刹车行为
    }
}

public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值