当你学会了越来越多的编程语言后,你就会发现,不同的语言的设计思路、用法习惯天差地别。为什么会有这么大的差别?这是一件很有趣的事情,今天我们就来聊聊。
值得一提的是,本文将会涉及很多种不同的语言,读者在看到自己熟练的语言时,会觉得非常简单,但看到自己不熟悉的语言时,看了这篇文章后,你又会觉得非常神奇。
当你学会了越来越多的编程语言后,你就会发现,不同的语言的设计思路、用法习惯天差地别。为什么会有这么大的差别?这是一件很有趣的事情,今天我们就来聊聊。
值得一提的是,本文将会涉及很多种不同的语言,读者在看到自己熟练的语言时,会觉得非常简单,但看到自己不熟悉的语言时,看了这篇文章后,你又会觉得非常神奇。
为什么要使用LiveSplit?
在《丝之歌》速通过程中,考虑到不同玩家的电脑配置不同,speedrun.com 上的丝之歌排行榜规定:速通耗时的统计应当使用排除了游戏加载时间的耗时(LRT,Load Removed Time),玩家应当将计时器全程放在视频中清晰可见的位置,否则会按照真实耗时进行统计。其中,LiveSplit 是 speedrun.com 《丝之歌》排行榜中最推荐使用的计时器软件,其中的《丝之歌》计时插件支持排除游戏加载时间的功能。
你可以前往LiveSplit官网下载最新版本的 LiveSplit。
考虑到LiveSplit是全英文的,很多国内玩家不方便使用,因此我开发了一个中文版的计时器生成器,可以用来快速生成你需要的模板(.lss)文件,把这个模板文件导入到LiveSplit就可以用了。
一切的一切,要源于《冒险岛Online》在2018年推出的一个小游戏——名侦探甘迪:
游戏开始时,一群玩家会被传送进一个房间。此时,系统会在1-9九个数字中随机选择三个数字按某个顺序排列,作为答案。
每一轮,玩家需要按顺序猜测3个数字,系统会给出反馈,告知玩家有几个数字猜对了并且位置正确(用○表示),有几个数字猜对了但位置不正确(用△表示)。
举个例子:玩家猜测1-2-3三个数字,系统给出反馈1○1△,表示有一个数字猜对了并且位置正确,有一个数字猜对了但位置不正确。可能是1猜对了且位置正确,2猜对了但位置不正确,答案中没有3,当然也有别的可能。
玩家可以根据反馈来继续推测答案。所有玩家独立完成游戏,不能看到其它玩家的选择及反馈。玩家之间互为竞争对手,目标就是用最少的次数猜出答案。
问题就来了,如何设计策略,让我们在尽可能少的次数内猜出答案呢?
这是一个十分经典的策略问题。
在编写网络应用时,服务端与客户端的协议设计是一个非常重要的环节。本文将介绍业界常见的通信协议设计思路。
我们知道,对于面向对象编程(OOP),在程序的内存中,数据一般是struct、object等封装好的类型。而在网络上进行交互,却只能使用二进制流。因此就存在这样两个问题:
注意
此AI并非“人工智能”,而是我们早期意义上的传统AI,并无学习能力,纯粹用算法实现五子棋每一步棋的应对策略。
之前说想写一些比较大型的算法,想了半天,还是觉得写五子棋的AI比较合适。一则因为自己研究过这个,有一些基础,二则尽管现在网上有很多五子棋AI算法的资料,但是确实都有些晦涩难懂。就想着借这个机会,凭自己的理解,尽量的讲通俗一些。