🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# TuringGame2020 平台使用方法 ## **一、准备工作** 0. 请使用Windows系统,不要尝试使用Wine或CrossOver等兼容层程序运行本平台的程序 Mac用户可以使用Boot Camp安装Windows系统或使用Parallels Desktop(需付费)虚拟机运行Windows系统;Linux用户请自行解决 1. 前往Visual Studio官方网站下载Community 2019版本的Visual Studio软件 官方网站:https://visualstudio.microsoft.com/zh-hans/ 直接下载:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=16# > Q:我可以使用其他IDE吗? > A:强烈不建议,如果你非得使用其他IDE请自行理解并复现我们提供的用于VS的解决方案,我们不提供任何技术支持 2. 运行下载得到的Visual Studio Installer,等待程序完成依赖文件下载后进入安装界面 ![](https://img.kancloud.cn/b3/f0/b3f0a0b3c8cce3d70aa4c789960ae5ba_1920x1016.png) 勾选`桌面应用和移动应用`大类中的`.NET 桌面开发`,其他选项保持默认即可,点击右下角安装按钮等待安装结束 ## **二、第一滴血** 1. 解压我们提供的压缩包文件,会得到两个文件夹 ![](https://img.kancloud.cn/e5/9a/e59af73286e0d4d7c5853846ad5b0e62_124x64.png) 2. 打开`Game`文件夹,运行`Turing2020.exe`,会进入游戏界面 ![](https://img.kancloud.cn/c0/87/c087f7f9948a503a242cab110548af5c_215x129.png) 我们已经提前为国家一和国家二编写了简单的控制代码,其操作如下: * 国家一:购买一个近战型士兵,(当其不在移动状态时)将其向着国家二的方向移动并将移动操作的返回值打印在控制台内 * 国家二:购买一个远程型士兵,并使用键盘控制该士兵(WASD移动,J攻击上面国家一所购的士兵,K攻击国家一的基地,L攻击泉水) 3. 点击`开始游戏`,你会看到我们预置的代码已经开始作用了,尝试使用键盘控制国家二的士兵发起对国家一的进攻! ![](https://img.kancloud.cn/52/57/52572827e9827f66c02017f07997d914_1232x696.png) ## **三、你好,世界** 1. 打开`Player`文件夹,打开`Player1`文件夹中的`Player1.sln`,如果弹出了选择打开程序,请使用`Visual Studio 2019`打开 ![](https://img.kancloud.cn/72/1f/721ff380e443515d1b2dfd7803837bdd_687x250.png) >如果打开报错,很有可能是因为你没有使用Visual Studio 2019打开或没有装好Visual Studio;对于前者,请在`Player1.sln`上`右键-打开方式-使用Microsoft Visual Studio 2019`打开;对于后者,请在开始菜单中找到`Visual Studio Installer`然后参考`一、准备工作`小节正确安装Visual Studio 2. 在右侧的`解决方案资源管理器`窗口中展开`Player1`,打开`Player1.cs`文件;这个文件就是你操作国家一的主战场 ![](https://img.kancloud.cn/ee/58/ee58ee5f2794a469d7270865be14efca_363x303.png) 其中有两个关键方法: ![](https://img.kancloud.cn/f1/e6/f1e6e8d36241c188bf881b4b7aae2d7e_1045x249.png) * `Awake()` 根据边上的注释和方法名称你会知道,这个方法会在游戏的开始时被调用,用于初始化你的控制类。你可以在这个方法内完成一些准备工作,例如为变量申明空间、赋予初值等 * `Update()` 这个方法会在游戏的运行过程中每0.02s被调用一次,你将在这里通过接口方法获取场上的信息,做出自己的判断并操控士兵完成动作 类似的,对于其他三个国家的操作也会在相应国家对应的这两个方法中完成;顺便说一句,你需要分别完成四份代码并全部提交,比赛时会根据你被分配到的国家编号执行对应的代码 <br/> 接下来,让我们输出一个“Hello World”:在`Awake()`方法的第一行写上`Log("Hello World");` **等等,请不要复制这段代码到你的VS中**,请尝试手动输入 ![](https://img.kancloud.cn/62/d7/62d7495f88ad7e3b741648f2c25a0772_583x93.png) 输入`Lo`之后,VS已经给出了目标方法的调用提示,按下`Tab`或回车键即可自动补全该语句 完成之后,按下`Ctrl + S`保存你的代码,然后点击上方的`生成-生成解决方案`按钮,VS会自动编译并将代码复制到游戏目录内 ![](https://img.kancloud.cn/67/1b/671bccf5933fc9497c8c9099f1f1c95f_359x77.png) ![](https://img.kancloud.cn/9a/e0/9ae0d8957e8c81d5430226d03d80f06a_658x247.png) > 注意:如果平台存在更新,输出控制台也会提示,请留意提醒文本 返回上级目录,重新运行`Game`文件夹中的`Turing2020.exe`,你会看到在控制台中输出了`Hello World`语句 <br/> #### 贴士:从C++到C++++ 平台需要使用的代码为C#;如果你接触过C++,你会很容易上手C#,我们提供了一些Tips在这: >* 对于每个国家的控制都会被具体为一个类来解决;如果你不了解C++的类,你可以查询相关资料稍作了解。选手编写的类会在游戏运行时被实例化为一个对象,并通过该对象完成对游戏内物体的操控 >* 在Awake()和Update()中申明的变量都只是局部变量,无法在游戏运行的周期中被其他位置或是时段的方法获取,如果你需要申明一些能够贯穿整个游戏运行周期的变量,请在`class Playerx : SuperPlayer`内申明即可(不要在方法体内申明),例如下图中的`country` `spring`和`r1` ![](https://img.kancloud.cn/c2/8f/c28ff39cbee2e45d2f9991d9b6ad820b_570x133.png) >* C#内的申明都需要手动申明空间(除了int、float、double等基本类型),例如在申明一个自定义结构体Node(Struct Node)类型的变量时需要这样写:`Node node = new Node()` >* C#不需要手动释放不需要的内存空间,因此你无需也无法编写`delete`相关的代码 >* C#在申明二维数组时,需要先对二维数组使用申明`Node[,] nodes = new Node[5,100]`,然后还需要使用嵌套for循环依次对数组内的每个元素申明空间(或直接引用已有变量)`for(int i=0;i<5;i++) for(int j=0;j<100;j++) nodes[i,j]=new Node()`,之后才能对该数组内的元素直接访问或是修改 >* C#内二维数组的访问格式是这样的:`Array[0,0]`,而非C++中的`Array[0][0]` >* C#不提供指针功能,取而代之的是C#的引用;不为值类型的参数在传递时默认以引用的方式传递;详情请自行学习关于C#引用的知识