<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[thdgth的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/thdgth</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; thdgth]]></copyright><item><title><![CDATA[如何给PKHeX添加剑盾洞穴查询插件PKHeX_Raid_Plugin]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/109126503</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/109126503</guid><author>thdgth</author><pubDate>Sat, 17 Oct 2020 00:05:16 +0800</pubDate><description><![CDATA[随着口袋妖怪剑盾的发售，PKHeX新添加了旷野巢穴和铠岛巢穴等巢穴的修改功能，但是要想编辑洞穴数据，一个快速查询闪帧位置的插件PKHeX_Raid_Plugin显得格外重要。

笔者之前搞过这个插件，但过了大半年之后，随着PKHeX版本的升级，原本插件居然不能用了，又花了好久才重新装上最新的插件。于是决定写此贴以供教学与备用。

1.下载插件

首先去github上下载最新版本的PKHeX_Raid_Plugin插件，方法如下：

登录github（https://github.com/），在上方的搜索栏搜]]></description><category></category></item><item><title><![CDATA[Java程序设计：五子棋（四）——AI算法]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/102837815</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/102837815</guid><author>thdgth</author><pubDate>Thu, 31 Oct 2019 14:56:18 +0800</pubDate><description><![CDATA[一、前言

前面我们讲述了如何进行绘制棋盘，以及悔棋的基本逻辑与算法实现，接下来我们就来讲讲大家最感兴趣的部分：如何实现人机对战。

二、获取权值

首先，我们来回想一下当我们在下棋时，是如何去决定下一步要下在哪里的？首先，我们要先纵观全局，看一看我们的棋子有没有已经成4个连子的情况，如果有的话肯定就下这个位置，这样我们这一回合就赢了。如果没有的话，那么接下来就要看对手的棋子有没有已经成4个连子的...]]></description><category></category></item><item><title><![CDATA[Java程序设计：五子棋（三）——悔棋]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87639684</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87639684</guid><author>thdgth</author><pubDate>Mon, 18 Feb 2019 19:29:27 +0800</pubDate><description><![CDATA[如何悔棋
在玩棋盘游戏中，玩家很容易下错棋。可在虚拟游戏中，电子玩家可不像现实生活中那样，商量几句就让你几步。因此一个人性化的棋盘类游戏应该具备悔棋功能。

说到悔棋，大部分程序员第一个反应就是把上一个下的棋子撤销不就行了？现在我们仔细想想这种方法的可行性。要想记住上一个棋子下的位置很容易，只需要定义两个参数，用来存放上一个下的棋子的行和列即可。但如果是要毁很多步呢，或者一般人机对战时，默认的悔一...]]></description><category></category></item><item><title><![CDATA[Java程序设计：五子棋（二）——添加棋子]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87636030</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87636030</guid><author>thdgth</author><pubDate>Mon, 18 Feb 2019 18:30:57 +0800</pubDate><description><![CDATA[如何添加棋子
我们平时也在不同平台上玩过类似的棋盘游戏，一般的棋盘游戏的玩法都是在你想下的位置点一下，系统就会在你点的位置下一个棋子。五子棋的棋盘很规则，都是一个个正方形格子，点一个位置便会在那附近的格子角下一颗棋子。

那么怎么判断是哪个角呢？一般简单的定义一下就能解决。以一个格子为例，假设点在这个格子中，位置为(x,y)，而这个格子的某个顶点位置已知（一般是左上角），比如左上角位置为(a,b)...]]></description><category></category></item><item><title><![CDATA[Java程序设计：五子棋（一）——编写界面]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87568720</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87568720</guid><author>thdgth</author><pubDate>Mon, 18 Feb 2019 00:08:00 +0800</pubDate><description><![CDATA[1.界面的预处理与刷新

我们要绘制五子棋棋盘，首先必须明确一点：不管我们在棋盘上怎么操作，棋盘的网格线是不可能改变的。无论是下棋，悔棋，网格线都会在那。故而我们应该知道，要想网格线始终存在，我们需要在后台存在一个绘制代码，一直不断的画这些网格线，同样在这一个代码区将来我们下了棋子之后也要不断的在下棋的位置画上棋子。

那么这样的代码区在哪呢？我们知道我们绘制界面的大框架是JFrame,其他的组件...]]></description><category></category></item><item><title><![CDATA[Java程序设计：计算器（二）]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87568561</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87568561</guid><author>thdgth</author><pubDate>Mon, 18 Feb 2019 00:04:58 +0800</pubDate><description><![CDATA[1.设计界面



2.功能要求

①实现加减乘除功能，按下加减乘除键后再按数字则会清空当前界面来存放新的数字。当被除数为0时要有放错机制。

*界面的切换

在JFrame类中有方法dispose()，这个方法可以关闭对应的JFrame并删去其内存，从而实现对象所对应的界面的关闭。

*按钮的嵌套监听

如果在方法中直接通过嵌套格式对某一组件进行添加监听的工作，要注意虽然代码是写在一个同一个方法...]]></description><category></category></item><item><title><![CDATA[Java程序设计：计算器（一）]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87568475</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87568475</guid><author>thdgth</author><pubDate>Mon, 18 Feb 2019 00:03:48 +0800</pubDate><description><![CDATA[1.设计界面



2.设计思路

①设计出界面

②JTextField在定义的时候构造函数可以给一个String参数作为初始内容，比如


JTextField jf = new JTextField(“a”);

这样界面上的JTextField显现出来时一开始显示的内容就是a了

计算器中可以一开始显示0

③定义两个属性(最好是double型)dataA和dataB，dataA存储目前显...]]></description><category></category></item><item><title><![CDATA[Java关于数组队列的实现]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87568238</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87568238</guid><author>thdgth</author><pubDate>Sun, 17 Feb 2019 23:59:28 +0800</pubDate><description><![CDATA[先行知识：
①泛型
java中有几种泛型，在定义类的时候可以为这些类声明泛型。泛型可以指代任意数据类型，因此使用泛型的好处就是泛型属性可以赋予多种数据类型而不用强制转换。注意：泛型不是类，只指代数据，不能实例化对象。
②泛型的声明：
要想在类中使用泛型，需要在定义类名的时候做相应的定义，可以用任意字母或字符串来代替，多个泛型用逗号隔开，并用方括号括起来。（与定义继承、接口类似，只不过继承的标识符是...]]></description><category></category></item><item><title><![CDATA[Java编程软件教学：Eclipse入门]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87568101</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87568101</guid><author>thdgth</author><pubDate>Sun, 17 Feb 2019 23:56:10 +0800</pubDate><description><![CDATA[1.软件界面



2.新建一个项目

点击菜单栏中File→New→Java Project后，有如下界面



输入完项目名（非中文），点Finish或Next→Finish，即可完成新的项目创建。

3.新建一个包

 

在项目中我们有时会编写许多类，为了读写方便，我们需要将这些类进行分类整理，将具有同一特点的类包装成一个包。怎么分类、封装成的包名皆由我们程序人员自己决定。

在上一步建立...]]></description><category></category></item><item><title><![CDATA[java详解第八章：事件与画板]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87567559</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87567559</guid><author>thdgth</author><pubDate>Sun, 17 Feb 2019 23:47:02 +0800</pubDate><description><![CDATA[1.事件处理：

创建一个类，实现监听器接口，给事件源添加监听器，当组件发生相应的事件，自动的调用监听器的事件处理方法。

   

1.1事件源：

事件发生的源头

有哪些可以成为事件源？

界面每一个组件都可以是事件源。

也只有界面上的组件可以成为事件源。

   

1.2事件：

鼠标事件：用鼠标在界面操作

键盘事件：用键盘在界面上操作

动作事件：用鼠标点击按钮，发生动作事件

 ...]]></description><category></category></item><item><title><![CDATA[java详解第七章：图形界面开发（二）]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87567352</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87567352</guid><author>thdgth</author><pubDate>Sun, 17 Feb 2019 23:43:27 +0800</pubDate><description><![CDATA[Java图形界面主要分成两层，顶级容器和面板容器。顶级容器有且只有一个，没有顶级容器就没有界面。JFrame是最常见的也是最通用的顶级容器。

1.JFrame

构造方法介绍：

① JFrame() 构造一个初始时不可见的新窗体。

② JFrame(String title) 创建一个新的、初始不可见的、具有指定标题的 Frame。

 

常用方法

① setTitle(String n...]]></description><category></category></item><item><title><![CDATA[java详解第六章：图形界面开发]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87567170</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87567170</guid><author>thdgth</author><pubDate>Sun, 17 Feb 2019 23:40:25 +0800</pubDate><description><![CDATA[1.了解Java的图形界面类有哪些？

1.1 AWT组件——最初始的界面基础

AWT组件的名字由来是根据它的包名而来的，它的包名叫做java.awt。

AWT组件是在JDK1.0的时候推出的图形界面类。

AWT组件是采用C和C++混合实现的，而且这套组件调用了操作系统底层的绘图函数，来实现的组件绘制；

因为需要调用操作系统底层的函数，这样就导致这套组件在不同的平台上，需要独立去开发，所以...]]></description><category></category></item><item><title><![CDATA[java详解第五章：异常处理]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/87559854</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/87559854</guid><author>thdgth</author><pubDate>Sun, 17 Feb 2019 22:48:10 +0800</pubDate><description><![CDATA[1.简介

程序运行时，发生的不被期望的事件，它阻止了程序按照程序员的预期正常执行，这就是异常。异常发生时，是任程序自生自灭，立刻退出终止，还是输出错误给用户？或者用C语言风格：用函数返回值作为执行状态？。

Java提供了更加优秀的解决办法：异常处理机制。

异常处理机制能让程序在异常发生时，按照代码的预先设定的异常处理逻辑，针对性地处理异常，让程序尽最大可能恢复正常并继续执行，且保持代码的清晰...]]></description><category></category></item><item><title><![CDATA[java详解第四章：接口与线程]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/79316161</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/79316161</guid><author>thdgth</author><pubDate>Mon, 12 Feb 2018 13:31:57 +0800</pubDate><description><![CDATA[1.接口

       1.1前言

       我们之前讲过继承，我们知道一个子类只能继承一个父类，正如一个儿子只有一个亲生父亲一样。那如果我们定义的几个子类中有除了他们继承的父类所有的属性和方法，还有别的共同的属性和方法，但是他们继承的父类并没有这些属性和方法，他们又不能继承多个父类，怎么办呢？这里就可以用接口。

       1.2接口的定义

       接口（Interface）...]]></description><category></category></item><item><title><![CDATA[java详解第三章：流程控制与字符串处理]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/79297191</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/79297191</guid><author>thdgth</author><pubDate>Fri, 09 Feb 2018 12:22:05 +0800</pubDate><description><![CDATA[1.概述

       流程控制在任何编程语言中都是基础中的基础，再复杂的程序与算法都是由这些流程控制语言组合起来的。

2.流程控制方法

       Java流程控制包括顺序控制、条件控制和循环控制。

       最常见的控制方法就是顺序控制。顺序控制，就是从头到尾依次执行每条语句操作，没有任何的约束。

       条件控制，顾名思义，就是基于条件选择执行语句，比方说，如果条件成立...]]></description><category></category></item><item><title><![CDATA[java详解第一章：类与对象]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/79275495</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/79275495</guid><author>thdgth</author><pubDate>Thu, 08 Feb 2018 01:18:25 +0800</pubDate><description><![CDATA[1．前言

 Java是一门完全面向对象的编程语言。类和对象是面向对象编程的基础和核心。

2．现实生活中有哪些是对象?

        对象：在现实生活中只要是一个具体的物体或者一个具体的事物就是一个对象。

        通俗的说法：你所看到的任何一个物体，你所想的任何一个物体(事物)都是对象。

        举例：某一台电脑、某一个人、...

3．你会从哪些方面去描述一个对象？分别...]]></description><category></category></item><item><title><![CDATA[java详解第二章：类的继承]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/79285563</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/79285563</guid><author>thdgth</author><pubDate>Thu, 08 Feb 2018 01:16:32 +0800</pubDate><description><![CDATA[1. 为什么需要使用继承？

①.提高代码的重用性

比如说你想要建立学生类和老师类，这两个类都属于人类，即人类的属性和方法这两个类都有，通过继承我们只需将这些类定义一遍，提高了重用性。

②.提高程序的扩展性

如果你想将一个类详细化，那么能且只能将其往一个方面详细化，比如你想将人类详细化，那么你只能往同学类或老师类，不能同时往这两个方面详细化，不然得到的类既不是同学类又不是老师类，而是师生类。...]]></description><category></category></item><item><title><![CDATA[Java关于简易数据单链表的实现]]></title><link>https://blog.youkuaiyun.com/thdgth/article/details/78206526</link><guid>https://blog.youkuaiyun.com/thdgth/article/details/78206526</guid><author>thdgth</author><pubDate>Wed, 11 Oct 2017 17:55:17 +0800</pubDate><description><![CDATA[本文就链表在Java平台上的定义与应用，欢迎评论讨论~

       关于链表想必大家都很了解了，由于其在插入等方面具有极小的时间复杂性而被广泛应用。链表由节点组成，单链表中每个节点只包括两个部分：一个是存储数据元素，另一个是存储下一个节点是什么节点。相比于线性表顺序结构，链表由与不必须按顺序存储，在插入的时候可以达到O(1)的复杂度，比线性表和顺序表快很多。但是查找一个节点或是访问特定编号的节...]]></description><category></category></item></channel></rss>