java怎么制作放置游戏_从零开始实现放置游戏(三)——实现后台管理系统(1)后台管理系统搭建...

上一章已经把整体的代码框架搭建完毕。然而整个游戏的功能非常的多,这就要求我们必须思路清晰,把所有功能依次分解开,逐步实现。

需求分析

整个游戏的核心玩法是放置挂机,打怪练级是核心功能,先实现一个最小可运行的DEMO,那么可以先实现玩家和怪物挂机战斗这部分。像装备、道具、掉落、随机词缀、组队等功能都可以放到后面做。想实现挂机战斗,那么要有一个战斗的逻辑模块,根据输入的战斗信息,计算出战斗结果,输出给客户端播放。整体逻辑大致如下图:

java怎么制作放置游戏_从零开始实现放置游戏(三)——实现后台管理系统(1)后台管理系统搭建..._第1张图片

这里,我们需要对游戏战斗相关的属性有个规划。我们暂时规定一级属性有力量、敏捷、智力、耐力,二级属性有生命值、护甲、攻击强度、法术强度、命中率、躲避率、暴击率。一级属性对二级属性提供加成,二级属性参与战斗逻辑计算,装备加成既可以加一级属性也可以加二级属性。人物每个等级自身四围的属性数值是固定的。人物的战斗属性由自身属性+装备加成+得出。怪物的属性比较简单,只有等级、生命值、护甲、伤害值,直接参与计算。

以上,我们需要配置人物每个等级的属性,怪物的属性。另外,人物和怪物都是在地图上移动的,因此还需要配置地图信息。要配置这些信息,我们就需要先搭建后台管理系统,通过excel,把我们的数值配置导入系统。下面,我们就开始搭建我们的rms模块。

RMS系统搭建

1.引入依赖

首先,有一些常用的工具类,插件类,几乎每个模块都要用到的,我们在父级节点idlewow的pom中引入:

注意:lombok是个IDE的插件依赖,需要有一步在Idea中安装此插件的操作。插件的安装请查看此篇:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

org.apache.commons

commons-lang3

3.8.1

com.alibaba

fastjson

1.2.57

com.fasterxml.jackson.core

jackson-databind

2.9.8

com.fasterxml.jackson.core

jackson-core

2.9.8

org.projectlombok

lombok

1.18.6

provided

idlewow的pom.xml

idlewow-core模块需要访问数据库,添加相关依赖:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

org.mybatis

mybatis

3.5.1

mysql

mysql-connector-java

8.0.15

pom.xml

在idlewow-rms中,我们使用springmvc+mybatis,需要添加的引用较多:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

org.springframework

spring-context

5.1.6.RELEASE

org.springframework

spring-context-support

5.1.6.RELEASE

org.springframework

spring-core

5.1.6.RELEASE

org.springframework

spring-web

5.1.6.RELEASE

org.springframework

spring-webmvc

5.1.6.RELEASE

org.springframework

spring-aop

5.1.6.RELEASE

org.springframework

spring-jdbc

5.1.6.RELEASE

org.springframework

spring-tx

5.1.6.RELEASE

javax.servlet

javax.servlet-api

4.0.1

provided

javax.servlet

jstl

1.2

provided

org.aspectj

aspectjweaver

1.9.3

org.apache.commons

commons-dbcp2

2.6.0

org.mybatis

mybatis-spring

2.0.1

pom.xml

2.添加相关配置

已经引入了依赖,还有很多配置文件需要配。

首先,我们来配置一下最基本的配置,也就是web容器的配置: web.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

IdleWow RMS

contextConfigLocation

classpath:spring/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:spring/spring-mvc.xml

1

springmvc

/

30

web.xml

在 web.xml 里主要配置了一个spring的上下文listener,用来在启动时,自动扫描注入;一个spring的servlet,用来实现mvc路由;还有一个字符编码的filter,用来把请求数据转换成utf-8编码,防止出现乱码。

现在我们针对web.xml中Spring的上下文listener和servlet添加单独的配置。在resources目录下新建spring文件夹,并新建applicationContext.xml文件,applicationContext.xml 主要配置spring需要扫描的包,并引入了数据源的配置文件。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

classpath:/properties/jdbc.properties

applicationContext.xml

在/resources/spring路径下,新建spring-mvc.xml文件,主要配置mvc的路由规则,并启动spring的mvc注解。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

spring-mvc.xml

在/resources/spring路径下,新建dataSource.xml文件,主要配置数据库连接,连接池,启动spring的事务注解。并指定mybatis需要扫描的包。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

dataSource.xml

在resources目录下,新建properties文件夹,并新建文件jdbc.properties。具体定义了数据库连接的账号、密码等,供dataSource.xml使用。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

writeConn.jdbcUrl=jdbc:mysql://localhost:3306/idlewow?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC

writeConn.user=admin

writeConn.password=123456readConn.jdbcUrl=jdbc:mysql://localhost:3306/idlewow?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&flag=readonly&serverTimezone=UTC

readConn.user=admin

readConn.password=123456

jdbc.properties

3.最简页面搭建

配置完毕,我们先搭建一个最简的管理员登陆页面和登陆后的首页,让整个项目能够跑起来。

这里我们直接使用一套网上开源免费的基于layui实现的前端框架xadmin,下载地址:http://x.xuebingsi.com/。下载后,把css, js, fonts, images, lib目录都拷贝到webapp目录下即可。

然后,我们写一个简单的登陆验证。这里,我规定数据库建表时,所有表均需包含id, create_user, update_user, create_time, update_time, is_delete, version几个字段。在facade模块中,新建一个包com.idlewow.common.model, 并新建一个抽象类BaseModel,后面凡是数据库的实体类,均需继承此类。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.idlewow.common.model;importlombok.Data;importjava.io.Serializable;importjava.util.Date;

@Datapublic abstract class BaseModel implementsSerializable {/*** 主键ID*/

privateString id;/*** 创建人*/

privateString createUser;/*** 修改人*/

privateString updateUser;/*** 创建时间*/

privateDate createTime;/*** 修改时间*/

privateDate updateTime;/*** 是否删除 0-否 1-是*/

privateInteger isDelete;/*** 版本号*/

privateInteger version;

}

BaseModel.java

另外,再facade模块中,新建一个包com.idlewow.admin.model,并添加管理员类SysAdmin,

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.idlewow.admin.model;importcom.idlewow.common.model.BaseModel;importlombok.Data;

@Datapublic class SysAdmin extendsBaseModel {privateString username;privateString password;

}

SysAdmin.java

在rms模块中,新建包com.idlewow.rms.controller, 并新建一个登陆认证的controller, 在这里,我们直接写死账号admin可登陆,并自动添加密码123456,方便开发,

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.idlewow.rms.controller;2

3 importcom.alibaba.fastjson.JSONObject;4 importcom.idlewow.admin.model.SysAdmin;5 importorg.apache.commons.lang3.StringUtils;6 importorg.springframework.beans.factory.annotation.Autowired;7 importorg.springframework.stereotype.Controller;8 importorg.springframework.web.bind.annotation.RequestMapping;9 importorg.springframework.web.bind.annotation.ResponseBody;10

11 importjavax.servlet.http.HttpSession;12

13 @Controller14 @RequestMapping("/authorize")15 public classAuthorizeController {16 @Autowired17 HttpSession httpSession;18

19 @ResponseBody20 @RequestMapping("/login")21 publicObject longin(SysAdmin sysAdmin) {22 String userName =sysAdmin.getUsername();23 String password =sysAdmin.getPassword();24 if (userName.equalsIgnoreCase("admin")) {25 userName = "admin";26 password = "123456";27 }28

29 JSONObject jsonObject = newJSONObject();30 //验证用户名和密码不能为空

31 if (StringUtils.isBlank(userName) ||StringUtils.isBlank(password)) {32 jsonObject.put("status", false);33 jsonObject.put("msg", "用户名和密码不能为空");34 returnjsonObject.toJSONString();35 }36

37 httpSession.setAttribute("loginuser", sysAdmin);38 jsonObject.put("status", true);39 jsonObject.put("msg", "登录成功");40 returnjsonObject;41 }42 }

AuthorizeController

在webapp目录下,添加login.html登陆页面,这里直接使用xadmin提供的模板,对js稍作改动,

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1

2

3

4

5

后台登录

6

7

8

9 content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/>

10

11

12

13

14

15

16

17

18

19

20 idlewow管理登录

你可能感兴趣的:(java怎么制作放置游戏)