唐老狮C#学习笔记:概述
思来想去,还是打算重新学习游戏开发的相关内容。主要是之前学习太过于随意,既没有记笔记又没有经常练习,所以我现在的代码水平就是个半吊子,即所谓的既会又不会,一知半解。希望能坚持学习下去。
前言
本系列笔记主要是记录自己学习的B站教程视频【唐老狮】Unity系列之C#四部曲—C#入门的学习笔记。
一、常用主流语言的应用领域
- C:嵌入式硬件开发
- C++:游戏客户端、服务器、软件
- C#:游戏客户端、服务器、软件、网站
- Java:安卓、服务器、软件、网站
- Javascrip:H5游戏、网站、服务器
- PHP: 网站、服务器
- Python:网站、服务器、辅助开发
- SQL:数据库
- Go:服务器
- Objective-C:苹果(mac、ios)相关
- Swift:苹果(mac、ios)相关
二、为何要学习C#语言
- 游戏市场以手游为主
- 游戏前端引擎开发市场
- Unity处于霸主地位(之前安装费事件之后,一些人开始转其他引擎了,有待商榷,不过目前国内市场Unity确实占据了大部分江山)
- C#是Unity引擎使用的开发语言
- C#相对来说是一门比较易学的语言
- 游戏开发人才需求市场对Unity程序员需求大
三、练习题
6个杯子排成一排,右边3杯有水,左边3杯没有水。只移动一个杯子,让有水的和没水的杯子完全间隔,该怎么移动?
我的思考:
我其实不太理解有水的和没水的杯子完全间隔是什么意思。我以为是初始位置是:无水、无水、无水、有水、有水、有水,然后移动一个杯子让移动后的位置是无、无、无、空位置、有有有。感觉我的脑子和言语理解的能力也太差了。实际答案:
要让杯子完全间隔的意思是让有水的和没水的交替排列即没水、有水、没水、有水、没水、有水或者有水、没水、有水、没水、有水,这就是目标位置。而题目其实是很开放的,所谓的移动一个杯子容易让人陷入思维定式,我们根据题目的描述可能都会想到移动杯子排列的位置,认为这个题目必须将一个杯子的位置移动到另一个位置才行,这样想我们绞尽脑汁都想不出答案。
而这个移动一个杯子这个条件除了能移动杯子的位置以外,还可以是通过移动一个杯子将杯子里的水倒入到另一个杯子中,再放回原位而不用移动位置,这样一想,问题一下子就豁然开朗了。
只需将第四个杯子里的水倒入到第二个杯子中即可达成目标位置的状态。其实就是把第二个杯子和第三个杯子交换了,不是通过位置的交换,而是通过有无水状态的交换。
一个粗细均匀的长直管子,两端开口,里面有4个白球和4个黑球,球的直径、两端开口的直径等于管子的内径,现在白球和黑球的排列时wwwwbbbb,要求不取出任何一个球,使得排列变为bbwwwwbb,应如何操作?
我的思考:
这题说实话我没有想到任何办法。我还是太笨了。实际答案:
其实还是和对题目的理解有关。正如名句所言,通向罗马的路有成千上万条,对于一些问题的解答也同样如此,我们不应该以思维定式去看待这个问题,以我们自己认为的一些条条框框来限制住解题的方案。这个问题其实可以使用一根软管连接到长直管子的两端,然后再将球通过软管移动到另一端来实现。其实还有更加简单的方案,就是使用传送装置,在管子两头添加可以空间传送的传送门,当然目前肯定无法实现,但是未来的未来是说不定的。
总结:对于以上两个练习。首先在分析问题时,先把初始状态和目标状态给分析出来,然后根据初始状态和目标状态的不同去寻找答案。寻找答案的过程要摆脱思维定式,多去头脑风暴,去想想更多的可能性。