一个正在开发的网页脚本游戏,有兴趣可以来看一下

主要编写语言: JavaScript 或者 JQuery

项目介绍:玩家可以通过wasd 键来控制角色移动,角色拥有10点生命.每隔一段时间会在角色身边生成环绕的飞行物,可以用来阻挡弹幕,或者用来发射.点击鼠标左键对指定方向进行攻击.

项目链接:https://gitee.com/Keith404/More-and-more

demo:https://keith404.gitee.io/more-and-more/

页内展示:

特色

有关JavaEE企业实战的全部内容说明文档(11月8日更新)

实验代码集合大礼包(如果你不想看下面这段废话,请直接下载):
https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/%E5%AE%9E%E9%AA%8C%E9%A1%B9%E7%9B%AE%E5%85%A8%E9%9B%86%E5%90%88.zip

实验5和作业5是只要完成其中一个就可以了,这里是完成的是作业5,为什么不选择实验5的原因呢,是因为glassfish3.0只支持早期的JavaEE 5以前的版本,而我这里用的是JavaEE7,此外还有很多原因,因为我根本就不想装glassfish3.0版本,无论是修改用户口令,或者是注册表配置项等,除此之外还要涉及到修改jre或者是jdk的版本(rua总之一大堆问题,有人问,那你下一个glassfish3.0的开源无需安装版不就好了吗,我试过,运行不出来,可能是配置服务器口令的时候有问题,会加载一年都无法加载出来)

下面是NetBeans IDE 做的syC_IDE能正常操作运行的配置
使用NetBeans完成的项目包括实验1,2,3,6,8,作业1,2,3
1. 首次运行该项目,让其自动生成所需要的表
2. 生成的表分别为PRODUCT0412、GOODSTABLE、USERDATA
3. 每个表都至少添加1条数据(否则会导致无法运行)
4. PRODUCT0412表的PRICE列必须填写数值,填写字符串将会出错
5. PRODUCT0412表要实现上一页下一页操作,加入至少20条以上的记录,最好填写30条以上
6. 实验8需要先运行webserviceISP,在运行syFeiniu_IDE 里的index.jsp里的加权平均按键
注意:模糊搜索算法并不完善,目前已知bug,无法匹配多次重复出现的字符,因为这里是将数据库里的每个表(这里总共3个表)的每行整理成一串字符串(老师自己写的时候就是这样,不要问我为什么)然后存进navicontrols.searchcontrol(JavaBean).(List)seachlib,再将其遍历与searchstr进行匹配,然后通过package algorithm; 里的FuzzyMatching类(封装好的模糊算法,但是我还没写好这个算法,有能力你们可以完善一下: 里面有演示实例链接)的public Boolean getEffectiveness()来进行判断匹配结果

如何演示实验
index.jsp 包含了绝大部分的实验演示,在网页最底部
此外需要单独运行manageProduct.jsp 该演示包括增删查改,分页查询(上一页下一页,PRODUCT0412表要至少20条以上数据才不会出错)
至于详细的实验说明,可以通过老师发放的文件查看
实验以及作业内容:https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/JavaEE%E5%AE%9E%E9%AA%8C%E5%8F%8A%E4%BD%9C%E4%B8%9A.rar
访问即可下载

下面是MyEclipse的配置
1. 在本地添加一个新的数据库,名字为javawebtestbase
2. 添加1张表cartshi,并插入一条数据
下面为创建表的指令:

DROP TABLE IF EXISTS `cartshi`;
CREATE TABLE `cartshi` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`cartsitem` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

插入一条数据:
INSERT INTO `cartshi` VALUES (‘1’, ‘asdsad’);
3. 配置hibernate (如果不知道怎么配置请观看https://www.bilibili.com/video/av34779256/?p=2)
Driver name : mysql
Connection URL :jdbc:mysql://localhost:3306/javawebtestbase

如何演示:
(你可以自己去设计杂志页面,具体怎么回事看作业5)
实验4是运行index.jsp

作业5是
运行indextest.jsp 演示图片移动,选项卡,图片放大 ,jq修改网页文本 ,通过hibernate更新数据

链接集合:

上课操作的全部实验操作网页:https://space.bilibili.com/4922622/#/channel/detail?cid=54329

实验代码文件下载:
https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/%E5%AE%9E%E9%AA%8C%E9%A1%B9%E7%9B%AE%E5%85%A8%E9%9B%86%E5%90%88.zip

实验要求内容:
https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/JavaEE%E5%AE%9E%E9%AA%8C%E5%8F%8A%E4%BD%9C%E4%B8%9A.rar

老师上课讲解的PPT:
https://javaeefile-1257541903.cos.ap-guangzhou.myqcloud.com/JEE%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91PPT.rar

模糊算法终极版(无bug版)

项目实例下载:https://gitee.com/Keith404/fuzzy_algorithm/tree/master/

2018/11/7    16:55 修改

import java.util.ArrayList;
import java.util.List;

public class FuzzyMatching {

    //参数
    private int substrCrossDomain = 2; //子串允许的跨界下标值
    private int substrElimination = 2; //子串允许的消除个数值
    private int mainstrCrossDomain = 100; //主串允许的跨界下标值
    private boolean reportOpen = true; //是否显示汇报结果

    //变量
    private String mainString = ""; //主串字符串
    private String subString = ""; //子串字符串
    private int substrSubscript = 0; //子串下标
    private int subscriptMovementCount = 0; //子串移动下标次数
    private int currentEliminationNumber = 0; //存储消除子串字符的数值
    private int mainstrPreviousSubscript = 0; //主串的前一次下标值
    private boolean effectiveness; //返回值
    private List matchingItem; //符合条件的子串字符集
    private List report; //汇报内容
    private List result; //主串出现位置结果集

    //首字符出现的位置
    private int fistCharShow = -1;

    //是否执行过getResult
    private boolean readGetResult = false;

    //构造方法
    public FuzzyMatching() {
        report = new ArrayList();
        matchingItem = new ArrayList();
        result = new ArrayList();
    }

    public FuzzyMatching(String mainString, String subString) {
        report = new ArrayList();
        matchingItem = new ArrayList();
        result = new ArrayList();
        this.mainString = mainString;
        this.subString = subString;

    }

    //

    //设置主串和子串方法
    public void setMainString(String mainString) {
        this.mainString = mainString;
    }

    public void setSubString(String subString) {
        this.subString = subString;
    }

    //获取主串和子串
    public String getMainString() {
        return this.mainString;
    }

    public String getSubString() {
        return this.subString;
    }

    //设置参数值
    public void setSubstrCrossDomain(int value) {
        this.substrCrossDomain = value;
    }

    public void setSubstrElimination(int value) {
        this.substrElimination = value;
    }

    public void setMainstrCrossDomain(int value) {
        this.mainstrCrossDomain = value;
    }

    public void setReportOpen(boolean value) {
        this.reportOpen = value;
    }

    //返回主串分别出现的数据结果
    public List getResult() {
        if (readGetResult) {
            return this.result;
        } else {
            System.out.println("还没执行getEffectiveness方法");
            return this.result; //有待完善
        }

    }

    //返回匹配到的子串字符
    public List getMatchingItem() {
        if (readGetResult) {
            return this.matchingItem;
        } else {
            System.out.println("还没执行getEffectiveness方法");
            return this.matchingItem; //有待完善
        }
    }


    public Boolean getEffectiveness() {

        for (int i = 0; i < mainString.length(); i++) { if (mainString.charAt(i) == subString.charAt(0)) { if ((mainString.length()-i) > substrElimination){
                    fistCharShow = i;
                    break;
                }
            }
        }

        if (fistCharShow != -1){

        }else {
            substrSubscript++;
            fistCharShow = 0;
        }

        int mainStringSubscript = 0;
        mainStringSubscript = fistCharShow;
        while(mainStringSubscript<mainString.length()){

            subscriptMovementCount = 0;
            for (int j = substrSubscript; j < subString.length(); j++) {
                if (subscriptMovementCount < substrCrossDomain) {
                    if (mainString.charAt(mainStringSubscript) == subString.charAt(j)) {
                        if (mainStringSubscript - mainstrPreviousSubscript < mainstrCrossDomain) { //判断主串下标移动的范围值,如果是第一次匹配,则无穷
                            substrSubscript = j + 1;//将子串下标设置为当前匹配到的下标,并将子串下标移一位
                            matchingItem.add(subString.charAt(j));
                            result.add(mainStringSubscript);
                        } else {
                            report.add("超出主串允许的跨界幅度:" + mainString.charAt(mainStringSubscript));

                        }
                        mainstrPreviousSubscript = mainStringSubscript;
                        break;
                    }

                } else {
                    break;
                }
                subscriptMovementCount++;
                if (j==subString.length()){
                    mainStringSubscript = fistCharShow;
                }


            }

            mainStringSubscript ++;
        }

        for (int i = fistCharShow; i < mainString.length(); i++) { } currentEliminationNumber = subString.length() - matchingItem.size(); //汇报信息处理 String strs = "子串符合主串匹配的字符集为:"; if (currentEliminationNumber > substrElimination) {
            report.add("消除的子串个数超过预设值,所以结果无效");
            effectiveness = false;
        } else {
            report.add("消除的子串个数在预设值内,所以结果有效");
            effectiveness = true;
        }


        for (int i = 0; i < matchingItem.size(); i++) {
            strs += matchingItem.get(i).toString();
        }
        report.add(strs);
        strs = "在主串分别出现的位置为(以0作为起始值):";
        for (int i = 0; i < result.size(); i++) {
            strs += result.get(i).toString() + ",";
        }
        report.add(strs);

        //汇报
        if (reportOpen) {
            for (int i = 0; i < report.size(); i++) {
                System.out.println(report.get(i));
            }
        }
        this.readGetResult = true;
        return effectiveness;
    }


}