游戏王残局简化版

Check-in [6f99fc6a2a]
Login

Check-in [6f99fc6a2a]

Overview
Comment:0.0.2742
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 6f99fc6a2a789f6f31ad7bb21a4d9ecbc588ecb076d05cc484c599f488f9211e
User & Date: 顽雨沉风 on 2023-10-14 10:02:52
Other Links: manifest | tags
Context
2023-10-14
10:13
0.0.2743 check-in: d8be18d9bf user: 顽雨沉风 tags: trunk
10:02
0.0.2742 check-in: 6f99fc6a2a user: 顽雨沉风 tags: trunk
09:33
0.0.2741 check-in: cdf7904414 user: 顽雨沉风 tags: trunk
Changes

Modified script/ygopro_编译.html from [e1da7ea2ac] to [ed93a40534].

32
33
34
35
36
37
38


39
40
41
42
43
44
45
</header>
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#前言" id="toc-前言"><span class="toc-section-number">1</span> 前言</a></li>
<li><a href="#新建文件夹" id="toc-新建文件夹"><span class="toc-section-number">2</span> 新建文件夹</a></li>
<li><a href="#编译器" id="toc-编译器"><span class="toc-section-number">3</span> 编译器</a></li>
<li><a href="#lua" id="toc-lua"><span class="toc-section-number">4</span> lua</a></li>


</ul>
</nav>
<h1 data-number="1" id="前言"><span class="header-section-number">1</span> 前言</h1>
<p>来,走起,我们来编译一个小且可用的 ygopro 。</p>
<p>功能不求全,<b>只要有</b>残局功能就够了。</p>
<h1 data-number="2" id="新建文件夹"><span class="header-section-number">2</span> 新建文件夹</h1>
<p>万事第一步,先新建个文件夹……</p>







>
>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</header>
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#前言" id="toc-前言"><span class="toc-section-number">1</span> 前言</a></li>
<li><a href="#新建文件夹" id="toc-新建文件夹"><span class="toc-section-number">2</span> 新建文件夹</a></li>
<li><a href="#编译器" id="toc-编译器"><span class="toc-section-number">3</span> 编译器</a></li>
<li><a href="#lua" id="toc-lua"><span class="toc-section-number">4</span> lua</a></li>
<li><a href="#sqlite3" id="toc-sqlite3"><span class="toc-section-number">5</span> sqlite3</a></li>
<li><a href="#freetype" id="toc-freetype"><span class="toc-section-number">6</span> freetype</a></li>
</ul>
</nav>
<h1 data-number="1" id="前言"><span class="header-section-number">1</span> 前言</h1>
<p>来,走起,我们来编译一个小且可用的 ygopro 。</p>
<p>功能不求全,<b>只要有</b>残局功能就够了。</p>
<h1 data-number="2" id="新建文件夹"><span class="header-section-number">2</span> 新建文件夹</h1>
<p>万事第一步,先新建个文件夹……</p>
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

















































































178
179
180
181
182
183
184
<p>电平受制于电的不稳定,所以它是不精确的。</p>
<p>电平是低于某个临界点,就属于低电平,高于某个临界点,就属于高电平。</p>
<p>这个临界点是人定的。</p>
<p>接下来,不讲底层了。</p>
<p>01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。</p>
<p>但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是
c 语言的别称——「便携式汇编语言」。</p>
<p>一门编程语言可以大致分为三部分:语法、标准库、自定义库。</p>

<p>lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c
语言标准库。</p>
<p>加个参数:</p>
<pre><code>cl /MD /O2 /c ./lib/lua/src/*.c</code></pre>
<p>这样子, lua 就会采用系统自带的 c 语言标准库了。</p>
<p>但仅仅是这样子还不行,因为 ygopro 不是一个纯 c 语言的项目。</p>
<p>这里的 lua 需要采用 cpp ,也就是 c++的方式进行编译:</p>
<pre><code>cl /TP /MD /O2 /c ./lib/lua/src/*.c</code></pre>
<p>然后由于 cpp
的特性,你会收到一堆报错,此时编译器会提醒你再加个参数:</p>
<pre><code>cl /EHsc /TP /MD /O2 /c ./lib/lua/src/*.c</code></pre>
<p>好,大功告成,这就算把 lua 编译完了。</p>
<p>不过,这时候,你的目录下会有一大堆的 obj 文件,不好看。</p>
<p>于是输入:</p>
<pre><code>lib /OUT:lua.lib *.obj</code></pre>
<p>这就把所有的 obj 文件合成了一个文件了。所以可以把 obj
文件全部删了:</p>
<pre><code>del *.obj</code></pre>
<p>也就是说,我们由一堆文件中编译出了一个文件:</p>
<pre><code>lua.lib</code></pre>

















































































<script>

document.onclick = function(event) {

  var target = event.target

  if (target.tagName == "PRE"







|
>















|
|



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<p>电平受制于电的不稳定,所以它是不精确的。</p>
<p>电平是低于某个临界点,就属于低电平,高于某个临界点,就属于高电平。</p>
<p>这个临界点是人定的。</p>
<p>接下来,不讲底层了。</p>
<p>01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。</p>
<p>但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是
c 语言的别称——「便携式汇编语言」。</p>
<p>一门编程语言可以大致分为三部分:</p>
<p>语法、标准库、自定义库。</p>
<p>lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c
语言标准库。</p>
<p>加个参数:</p>
<pre><code>cl /MD /O2 /c ./lib/lua/src/*.c</code></pre>
<p>这样子, lua 就会采用系统自带的 c 语言标准库了。</p>
<p>但仅仅是这样子还不行,因为 ygopro 不是一个纯 c 语言的项目。</p>
<p>这里的 lua 需要采用 cpp ,也就是 c++的方式进行编译:</p>
<pre><code>cl /TP /MD /O2 /c ./lib/lua/src/*.c</code></pre>
<p>然后由于 cpp
的特性,你会收到一堆报错,此时编译器会提醒你再加个参数:</p>
<pre><code>cl /EHsc /TP /MD /O2 /c ./lib/lua/src/*.c</code></pre>
<p>好,大功告成,这就算把 lua 编译完了。</p>
<p>不过,这时候,你的目录下会有一大堆的 obj 文件,不好看。</p>
<p>于是输入:</p>
<pre><code>lib /OUT:lua.lib *.obj</code></pre>
<p>这就把所有的 obj 文件合成了一个文件了。</p>
<p>所以可以把 obj 文件全部删了:</p>
<pre><code>del *.obj</code></pre>
<p>也就是说,我们由一堆文件中编译出了一个文件:</p>
<pre><code>lua.lib</code></pre>
<h1 data-number="5" id="sqlite3"><span class="header-section-number">5</span> sqlite3</h1>
<p>接下来,我们需要下载一个很厉害的软件,作者是理查德·希普。</p>
<p>这一回应该不会遇到网络问题了:</p>
<pre><code>https://www.sqlite.org/index.html</code></pre>
<p>虽然,这一回我们不会再遇到网络问题,但可能会遇到这个网站的质疑:</p>
<p>你到底是不是<b>人</b>?</p>
<p>这是因为有些中国人恶意进攻这个网站,于是理查德专门把防范机器人的机制加强了。</p>
<p>把解压后的目录复制过来:</p>
<pre><code>ygopro
|—— lib
|——|—— lua
|——|——|—— src
|——|—— sqlite3</code></pre>
<p>然后编译:</p>
<pre><code>cl /MD /O2 /c ./lib/sqlite3/*.c</code></pre>
<p>然后再连接与清理一下即可。</p>
<p>其实 sqlite3 非常强,但是 ygopro
并没有对它擅加利用,这一点也体现在,你看这次的编译非常简单吧。</p>
<p>编译简单是因为没有设置那些解放 sqlite3 力量的宏。</p>
<h1 data-number="6" id="freetype"><span class="header-section-number">6</span> freetype</h1>
<p>下载:</p>
<pre><code>http://www.freetype.org</code></pre>
<p>目录结构:</p>
<pre><code>ygopro
|—— lib
|——|—— lua
|——|——|—— src
|——|—— sqlite3
|——|—— freetype
|——|——|—— src
|——|——|—— include
|——|——|—— builds</code></pre>
<p>编译:</p>
<pre><code>cl /MD /O2 /c /D FT2_BUILD_LIBRARY -I ./lib/freetype/include</code></pre>
<p>可以发现,上面添加了头文件所在的文件夹。</p>
<p>但奇怪的是,怎么没看到c文件?</p>
<p>因为这一次要编译的文件太多了:</p>
<pre><code>str[&quot;freetype_文件表&quot;] = {

&quot;src/autofit/autofit.c&quot;
, &quot;src/base/ftbase.c&quot;
, &quot;src/base/ftbbox.c&quot;
, &quot;src/base/ftbdf.c&quot;
, &quot;src/base/ftbitmap.c&quot;
, &quot;src/base/ftcid.c&quot;
, &quot;src/base/ftfstype.c&quot;
, &quot;src/base/ftgasp.c&quot;
, &quot;src/base/ftglyph.c&quot;
, &quot;src/base/ftgxval.c&quot;
, &quot;src/base/ftinit.c&quot;
, &quot;src/base/ftmm.c&quot;
, &quot;src/base/ftotval.c&quot;
, &quot;src/base/ftpatent.c&quot;
, &quot;src/base/ftpfr.c&quot;
, &quot;src/base/ftstroke.c&quot;
, &quot;src/base/ftsynth.c&quot;
, &quot;src/base/fttype1.c&quot;
, &quot;src/base/ftwinfnt.c&quot;
, &quot;src/bdf/bdf.c&quot;
, &quot;src/cache/ftcache.c&quot;
, &quot;src/cff/cff.c&quot;
, &quot;src/cid/type1cid.c&quot;
, &quot;src/gzip/ftgzip.c&quot;
, &quot;src/lzw/ftlzw.c&quot;
, &quot;src/pcf/pcf.c&quot;
, &quot;src/pfr/pfr.c&quot;
, &quot;src/psaux/psaux.c&quot;
, &quot;src/pshinter/pshinter.c&quot;
, &quot;src/psnames/psmodule.c&quot;
, &quot;src/raster/raster.c&quot;
, &quot;src/sfnt/sfnt.c&quot;
, &quot;src/sdf/sdf.c&quot;
, &quot;src/smooth/smooth.c&quot;
, &quot;src/truetype/truetype.c&quot;
, &quot;src/type1/type1.c&quot;
, &quot;src/type42/type42.c&quot;
, &quot;src/winfonts/winfnt.c&quot;
, &quot;src/svg/ftsvg.c&quot;
, &quot;builds/windows/ftsystem.c&quot;
, &quot;builds/windows/ftdebug.c&quot;
}</code></pre>
<script>

document.onclick = function(event) {

  var target = event.target

  if (target.tagName == "PRE"

Modified script/ygopro_编译.md from [55c0a64c37] to [713ffe9f05].

227
228
229
230
231
232
233
234


235
236
237
238
239
240
241

接下来,不讲底层了。

01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。

但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。

一门编程语言可以大致分为三部分:语法、标准库、自定义库。



lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c 语言标准库。

加个参数:

~~~
cl /MD /O2 /c ./lib/lua/src/*.c







|
>
>







227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243

接下来,不讲底层了。

01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。

但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。

一门编程语言可以大致分为三部分:

语法、标准库、自定义库。

lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c 语言标准库。

加个参数:

~~~
cl /MD /O2 /c ./lib/lua/src/*.c
263
264
265
266
267
268
269
270


271
272
273
274
275
276
277
278
279
280
281























































































































于是输入:

~~~
lib /OUT:lua.lib *.obj
~~~

这就把所有的 obj 文件合成了一个文件了。所以可以把 obj 文件全部删了:



~~~
del *.obj
~~~

也就是说,我们由一堆文件中编译出了一个文件:

~~~
lua.lib
~~~






























































































































|
>
>











>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403

于是输入:

~~~
lib /OUT:lua.lib *.obj
~~~

这就把所有的 obj 文件合成了一个文件了。

所以可以把 obj 文件全部删了:

~~~
del *.obj
~~~

也就是说,我们由一堆文件中编译出了一个文件:

~~~
lua.lib
~~~

## sqlite3

接下来,我们需要下载一个很厉害的软件,作者是理查德·希普。

这一回应该不会遇到网络问题了:

~~~
https://www.sqlite.org/index.html
~~~

虽然,这一回我们不会再遇到网络问题,但可能会遇到这个网站的质疑:

你到底是不是<b>人</b>?

这是因为有些中国人恶意进攻这个网站,于是理查德专门把防范机器人的机制加强了。

把解压后的目录复制过来:

~~~
ygopro
|—— lib
|——|—— lua
|——|——|—— src
|——|—— sqlite3
~~~

然后编译:

~~~
cl /MD /O2 /c ./lib/sqlite3/*.c
~~~

然后再连接与清理一下即可。

其实 sqlite3 非常强,但是 ygopro 并没有对它擅加利用,这一点也体现在,你看这次的编译非常简单吧。

编译简单是因为没有设置那些解放 sqlite3 力量的宏。

## freetype

下载:

~~~
http://www.freetype.org
~~~

目录结构:

~~~
ygopro
|—— lib
|——|—— lua
|——|——|—— src
|——|—— sqlite3
|——|—— freetype
|——|——|—— src
|——|——|—— include
|——|——|—— builds
~~~

编译:

~~~
cl /MD /O2 /c /D FT2_BUILD_LIBRARY -I ./lib/freetype/include
~~~

可以发现,上面添加了头文件所在的文件夹。

但奇怪的是,怎么没看到c文件?

因为这一次要编译的文件太多了:

~~~
str["freetype_文件表"] = {

"src/autofit/autofit.c"
, "src/base/ftbase.c"
, "src/base/ftbbox.c"
, "src/base/ftbdf.c"
, "src/base/ftbitmap.c"
, "src/base/ftcid.c"
, "src/base/ftfstype.c"
, "src/base/ftgasp.c"
, "src/base/ftglyph.c"
, "src/base/ftgxval.c"
, "src/base/ftinit.c"
, "src/base/ftmm.c"
, "src/base/ftotval.c"
, "src/base/ftpatent.c"
, "src/base/ftpfr.c"
, "src/base/ftstroke.c"
, "src/base/ftsynth.c"
, "src/base/fttype1.c"
, "src/base/ftwinfnt.c"
, "src/bdf/bdf.c"
, "src/cache/ftcache.c"
, "src/cff/cff.c"
, "src/cid/type1cid.c"
, "src/gzip/ftgzip.c"
, "src/lzw/ftlzw.c"
, "src/pcf/pcf.c"
, "src/pfr/pfr.c"
, "src/psaux/psaux.c"
, "src/pshinter/pshinter.c"
, "src/psnames/psmodule.c"
, "src/raster/raster.c"
, "src/sfnt/sfnt.c"
, "src/sdf/sdf.c"
, "src/smooth/smooth.c"
, "src/truetype/truetype.c"
, "src/type1/type1.c"
, "src/type42/type42.c"
, "src/winfonts/winfnt.c"
, "src/svg/ftsvg.c"
, "builds/windows/ftsystem.c"
, "builds/windows/ftdebug.c"
}
~~~