【实战与杂谈】本地搭建自己的游戏王卡片生成器

声明:

1.游戏王卡片制作器本身就是由【kooriookami】开发的,用于DIY卡片因此我只是原有功能再现并不会追加新功能
2.其次数据和卡图均来源于网络,因此我也只提供网络能获取该内容的途径,并不会预先准备好

最近一直没有时间看回复和私信,我重新下载github上的项目发现,分支上的内容确实有问题,进行了重新调整。

这里默认读者已经阅读过前一篇博文:【实战与杂谈】如何复活一个开源网站-游戏王卡片生成器

前端环境配置

1. 准备powershell

因为执行的大多数都是些linux命名,在window环境还是安装一个powershell来执行命令
powershell下载地址为:
https://github.com/PowerShell/PowerShell 
根据当前系统选择版本,笔者是windows 10 64位,因此选择Windows (x64)
安装完成后

2. 安装nodejs


当出现时,需要安装node.js可以通过https://nodejs.org进行下载安装

随后执行

npm install

如果安装时间慢,是因为使用了国外国外进行,这里改成国内镜像

npm config set registry http://registry.npm.taobao.org

3. 安装is-electron

 当出现提示时

安装is-electron

npm install --save is-electron

4. 最终得到这个界面证明前端内容部分已经启动成功

执行

npm run dev

获得下图即代表正常启动

访问网址会进入到界面,只会显示默认的青眼白龙,卡面其他内容因为后端没启动不会加载,

目前github项目的前端已经在确保能正常启动后,把调整后的代码上传到项目中,按照上面操作在win10环境下应该得到截图内容。接下来就是准备后端环境

 后端环境配置

这次以最新2023.4月份数字包1201为例,本地搭建自己的游戏王卡片生成器就几乎能同步最新的卡。

在上一篇论文中我提供了源码,让读者自行编译执行,在后台和评论来看,我直接提供执行包,安装好运行环境能正常启动即可。

1. 安装JAVA运行环境

因为我后台使用的是java,因此执行环境需要安装jdk,选择能执行jar包的环境即可,在JDK找到能安装jdk安装包安装 ,得到下面截图内容即可

2. 启动后端程序

读者可以自行通过源码编译jar包,也可以下载我的分割好的压缩包(因为完整jar包超过100m)

java -jar YGO-CARD-1.0-SNAPSHOT.jar -image.img=c:\monster\ -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest?characterEncoding=utf-8 -spring.datasource.username=root -spring.datasource.password=123456
配置说明
-image.img卡片插画所在地址
-spring.datasource.url数据库地址
-spring.datasource.username数据库账号
-spring.datasource.password数据库密码

见到下图代表已启动成功

3. 初始化后端数据

后端项目启动后需要对图片和卡片数据进行初始化,程序才能正确获取到对应

3.1 卡片插画

通过游戏王数据库我们可以查询到【革命同调士】的码为97682931

ygoprodeck提供了api可以让我们查询到图片,例如【革命同调士】的码为97682931,我们访问97682931.jpg (624×624) (ygoprodeck.com) 就可以得到程序需要的插图

3.2 卡片数据

每个版本的ygo,过后对应的卡片数据更新斗发布在开源项目中,读者可以通过查看提交日志来取人卡片信息是否已经更:

https://github.com/mycard/ygopro-database/commits/dump

如下图我们可以发现在ygo发布4天后,卡片数据也已经更新了

       关于数据脚本导入我这里就不再多讲,我这里主要解决在私信说使用脚本导入不进去的情况,我这里提供对应数据表新建脚本。

DROP TABLE IF EXISTS `datas`;
CREATE TABLE `datas` (
  `id` int(11) NOT NULL,
  `id1` blob,
  `id2` blob,
  `id3` blob,
  `type` blob,
  `atk` int(11) DEFAULT NULL,
  `def` int(11) DEFAULT NULL,
  `level` int(11) DEFAULT NULL,
  `race` int(11) DEFAULT NULL,
  `attribute` int(11) DEFAULT NULL,
  `id0` blob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


DROP TABLE IF EXISTS `texts`;
CREATE TABLE `texts` (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `desc` text CHARACTER SET utf8,
  `dec2` text CHARACTER SET utf8,
  `dec3` text CHARACTER SET utf8,
  `dec4` text CHARACTER SET utf8,
  `dec5` text CHARACTER SET utf8,
  `dec6` text CHARACTER SET utf8,
  `dec7` text CHARACTER SET utf8,
  `dec8` text CHARACTER SET utf8,
  `dec9` text CHARACTER SET utf8,
  `dec10` text CHARACTER SET utf8,
  `dec11` text CHARACTER SET utf8,
  `dec12` text CHARACTER SET utf8,
  `dec13` text CHARACTER SET utf8,
  `dec14` text CHARACTER SET utf8,
  `dec15` text CHARACTER SET utf8,
  `dec16` text CHARACTER SET utf8,
  `dec17` text CHARACTER SET utf8,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

删去ygopro-database/locales/zh-CN at dump · mycard/ygopro-database · GitHub脚本中的

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE texts(id integer primary key,name text,desc text,str1 text,str2 text,str3 text,str4 text,str5 text,str6 text,str7 text,str8 text,str9 text,str10 text,str11 text,str12 text,str13 text,str14 text,str15 text,str16 text);

CREATE TABLE datas(id integer primary key,ot integer,alias integer,setcode integer,type integer,atk integer,def integer,level integer,race integer,attribute integer,category integer);

COMMIT;

最终效果

本次博文对原有项目追加内容

- 前端项目

修复了原有代码无法正常启动的问题

- 后端项目

提供源码启动jar包,只需要安装java环境直接启动,指定环境参数即可

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以使用NI-VISA库来进行GPIB接口控制,下面是一个简单的示例代码。 ```java import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import visa32.*; public class GPIBControl { private static final int GPIB_ADDRESS = 1; // GPIB地址 private static final int BUFFER_SIZE = 1024; // 缓冲区大小 public static void main(String[] args) { // 初始化NI-VISA库 VisaLibrary visaLibrary = (VisaLibrary) Native.loadLibrary("visa32", VisaLibrary.class); visaLibrary.viOpenDefaultRM(); // 打开GPIB设备 String deviceName = "GPIB0::" + GPIB_ADDRESS + "::INSTR"; Pointer instrument = new Memory(GpibLibrary.ViUInt32.SIZE); visaLibrary.viOpen(visaLibrary.getResourceManager(), deviceName, new GpibLibrary.ViAccessMode(GpibLibrary.VI_NO_LOCK), new GpibLibrary.ViUInt32(0), instrument); Pointer session = instrument.getPointer(0); // 设置超时时间 visaLibrary.viSetAttribute(new GpibLibrary.ViSession(session), new GpibLibrary.ViAttrState(GpibLibrary.VI_TMO_VALUE), new GpibLibrary.ViUInt32(5000)); // 写入命令 String command = "*IDN?"; visaLibrary.viWrite(new GpibLibrary.ViSession(session), command.getBytes(), new GpibLibrary.ViUInt32(command.length()), new IntByReference()); // 读取响应 byte[] buffer = new byte[BUFFER_SIZE]; visaLibrary.viRead(new GpibLibrary.ViSession(session), buffer, new GpibLibrary.ViUInt32(BUFFER_SIZE), new IntByReference()); String response = new String(buffer).trim(); System.out.println("Instrument response: " + response); // 关闭设备 visaLibrary.viClose(new GpibLibrary.ViSession(session)); visaLibrary.viClose(visaLibrary.getResourceManager()); } } ``` 这个示例代码使用NI-VISA库来打开GPIB设备,设置超时时间,写入命令并读取响应。需要注意的是,GPIB_ADDRESS变量需要设置为实际的GPIB地址,BUFFER_SIZE变量可以根据需要进行调整。 在实际应用中,需要根据仪器的通信协议进行编写代码,例如使用SCPI命令进行控制。希望这个示例代码能够对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值