0%

前方高能!
这篇笔记断断续续花了近10天,思路、结构较为混沌,如果没有充分做好心理准备,建议立刻关闭窗口。
(其实就是我写完实在不愿审阅)

首先说明,异步是极为高深的高级编程技术,这篇文章只是才疏学浅的我阅读文档之后的一些思考与理解,可能有极多描述不准确乃至完全错误之处,还望批评指导。顺便吐槽,C#文档翻译得实在是太烂了,很多地方一看就是机翻的,却没有机翻警告。很多地方百思不得其解的词,切换到英语就发现其实很简单,翻译的用词完全错误,难受啊!

何为异步

与异步相对的是“同步”,代表着一句代码的执行结束是其后一句代码的执行开始,整个流程是按照固定的顺序进行的,这是一般程序的逻辑。然而,某些语句可能需要花较长时间才能得到结果——比如网络通信和文件读写——这些语句的执行并不怎么占用CPU,但会阻塞整个线程,后续的语句需要等待这些语句执行完成,造成大量的浪费。特别是如果网络环境很不好、读取的文件好几个G,那可是尤其要命,可能整个程序都会出现肉眼可见的卡顿甚至崩溃。

为了解决这种飞快的CPU与龟爬的IO之间的不平衡,传统的方案是单独开个线程让它去执行耗时的操作,让主线程继续运行与耗时操作的结果无关的代码。但是线程操作很麻烦、开销很高,线程数量也有限,不是能随便使用的,所以依然不是个完美的方法。

异步就是为了解决这个问题而存在的。当代码需要执行一个耗时的操作时,它只发出指令,并不等待结果,然后就去执行其他代码了。一段时间后,当耗时操作返回结果时,再通知CPU进行处理。

阅读全文 »

到了清明节,很奇怪的,今年并没有下雨。印象中每年的清明正应那句“清明时节雨纷纷”,这几天就该是细雨连绵,气温恰好舒适得让人头脑清晰。气象数据统计上也反映了这一点。杏花村所在的安徽池州,历年来清明前后的降雨概率高达85%。湖北离得不远,这印象是有基础的。

下不下雨倒是无关紧要,今天有其更大的意义。

新华社北京4月3日电 为表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,国务院今天发布公告,决定2020年4月4日举行全国性哀悼活动。在此期间,全国和驻外使领馆下半旗志哀,全国停止公共娱乐活动。4月4日10时起,全国人民默哀3分钟,汽车、火车、舰船鸣笛,防空警报鸣响。

清明追思

阅读全文 »

准备完了开题答辩,弄完了笔试,又咸鱼了数天、玩了数天《动物森友会》,一下子离上一篇C#杂记过了三个星期。

朔月

所以接下来要填的坑是LINQ和异步。弄完了这个,C#最大的几块拼图才得以完整,大抵能够叫是入了门。

查询表达式

所谓的LINQ,是语言集成查询Language INtegrated Query的缩写。通过引用命名空间System.Linq,可以用可读性极强的、类似SQL查询语句形式的代码对一些数据结构,甚至直接对数据库进行便捷的操作,如查询、排序、分组等,而不必编写大量逻辑复杂的循环代码。LINQ的操作十分高深,这里我仅学习一些基础、常用的LINQ功能。

以下是一个典型的LINQ查询示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args){
//数据源
string[] name = {"Alonso", "Zheng", "Smith", "Jones", "Smythe", "Small", "Ruiz", "Hsieh", "Jorgenson", "Ilyich", "Singh", "Samba", "Fatimah" };

//查询表达式
var queryResults =
from n in names
where n.StartWith("S")
select n;

//迭代查询结果
WriteLine("Name beginning with S:");
foreach(var item in queryResults){
WriteLine(item);
}

Write("Program finished. Press Enter/Return to continue:");
ReadLine();

}
阅读全文 »

对BOSS战的分析,可以从战斗机制的设计和对玩家能力的考验两个方向进行。

战斗机制

何谓战斗机制?

“机制”这个词实在太宽泛。几个月前我曾在这篇笔记里总结过一次。

根据MDA框架,机制是“数据层面上的组件与算法”;形式、戏剧和动态元素框架中,“机制”基本等同于“形式”元素,即交互模式、目标、规则、过程、资源、边界、结局等等。四元法有一元是机制,指的是“玩家与游戏互动的规则”,也是游戏与其他非互动性媒体的区别所在。

不过,我们仍然可以把“机制”换个词,用“规则”来代替。更进一步的,战斗机制即是指,在战斗时,玩家能做什么?

那么《只狼》的战斗中,玩家能做什么?

最大的特色就是“打铁”,即弹反与架势槽。这个机制把传统动作游戏里高难度、高回报、低频率的“弹反”完全逆转成为难度相对偏低、回报不算明显,但使用频率极高的一种主要操作。《只狼》的战斗目标不再是单纯的削血,而主要是以进攻和弹反使敌人的架势槽涨满,此时即可一击必杀(忍杀)。同时架势槽的自然回落速度随剩余血量的减少而变慢,架势槽和血槽成为了相辅相成的两个机制。

第二点是处理敌人的“危”攻击。敌人偶尔发动无法格挡的技能,玩家头顶会浮现出红色的“危”字,这时就需要玩家根据敌人的起手动作,紧急判断下一步的应对措施。所谓的“危”其实也蕴含着“机”,如果处理得当,可以对敌方架势槽造成较大的上升。

主要的“危”攻击有两种类别,一是突刺,无法格挡,可以精准弹反,但正确的处理是在突刺的瞬间向敌人脸上垫步发动“识破”,造成较大的架势条上涨;二是横扫,最佳的处理方法是跳到敌人头上踩踏,亦可以造成较大的架势条上涨。一些BOSS战中能用“雷电奉还”反弹雷电攻击,而少数敌人能使出的擒抱攻击只能靠闪避处理。

阅读全文 »