创建第一款游戏,完成后的外观如下:

游戏的规则
拖动滑块使它更接近顶部的目标值,这个值每次都在1-100中随机
你觉得合适了,就点击按钮,将有个弹窗为你显示结果
分数和局数都会被记录
一、创建开发项目清单
作为一个开发新手,不是马上开始写代码,而是将项目的设计进行分解,可以更好地将其拆分为可管理的部分:
-
在屏幕顶部有一个导航条,显示了游戏名字
-
在屏幕上有个按钮,显示文字为“Hit me”,考虑把它变成中文
-
按下“Hit me” 按钮,出现弹窗,弹窗里会显示一些指定的文字和数字
-
弹窗有个关闭按钮,点击后游戏开始新的一局,且本局分数和局数会记录累加
-
在屏幕上会有一些文本显示文字,还会有能根据相应规则变化的数字
-
在屏幕上有一个滑动条和滑块,其值的范围介于1到100之间
-
需要知道滑块每一次的具体值,好用来和目标值进行比较
-
需要计算目标值和滑块值的差得出玩家分数,应该有分数计算规则
-
有一个“重新开始”的按钮,带有图标和文字,按下会引起一些变化
-
有一个“游戏说明”的按钮,显示同上,按下会出现文本内容
-
它是一款横屏游戏,并且有背景图片,还有一些颜色美化
二、运行Xcode开干
1、修改显示文字
2、改变文字粗细和颜色
3、什么是对象,什么是属性,什么是方法
-
更改文字
在“Canvas“里,单击“Hello World!”,左边代码里这行文字也会被高亮:

这两个地方随便在哪边改,都会同步,代码里改不用试了,和在Word里改差不多,这里来试试在“Canvas“里,为什么要在这里改,明明左边更方便啊。。。。。照做,按住空格键边上的“command”对着文字左键单击,会弹出菜单:

单击Show SwiftUI Inspector...进入下级菜单,不用按住command键了,单纯的单击:

改成中文“本局目标值:”,改完随便在框外空白位置点一下,菜单就消失了,字也改好了,可以试试在左边的代码编辑区里加上冒号,两边都会同步更新,点击“运行(command+R)"可以看到模拟器效果:

-
文字变粗
同样的,在“Canvas“里,按住command键单击文字,弹出来的菜单,老地方(Show SwiftUI Inspector...)进入

然后关闭再运行一下,看看效果,字体比刚才变粗了一些。
看看代码编辑区里的这段代码:
.fontWeight()
这是对上面的文本对象调用了方法,在Swift里,“ . ”这个点点表示,对Text的文本内容使用fontWeight这个方法使其变成semibold这种半粗体。
嗯,类似于打游戏,召唤了.fontWeight()精灵对怪物Text()使用了名为semibold的魔法攻击。
来嘛,代码区再改一次,把括号里的全删了,会出现错误提示,但不要怕,这只是技术性调整

代码改了之后,Canvas那边有时候是自动更新,有时候需要点右上角的Resume刷新,点运行在模拟器里看看效果,不出意外,字变得黑又粗。
-
文字变色
不多说,在代码里添加同样格式的变色代码,Xcode会有提示,你记住开始几个字母就行了

英文的颜色单词一般都知道几个,随便换,这里换的绿色。如果代码麻烦,就在Canvas里改,同样的菜单,选择Color下拉选择就行了,最后运行一下,真的绿了。
对象
对象是程序代表现实事物或抽象概念的方式。滴滴打车里的乘客和司机都是对象,车辆也是对象,在上面的代码中,就有很多的对象:
struct ContenView: View {
在Swift中,看到" : " ,应该把它理解为“是”,所以上面那段代码表示--- ContenView是View---定义了一个名为ContenView的对象为View,好JB绕口。。。。。先不管
有了对象,就应该让对象“知道”并“做事”。
属性和方法
对象至少由下面两种之一构成:
1、属性:没有数据,计算机程序无法使用。属性就是对象用来存储数据的位置。比如滴滴打车的乘客对象就会有用户名、当前位置、目的地等属性,车辆对象就会有汽车品牌、型号、车牌等属性。属性就是要让对象“知道的内容”。
2、方法:这些是通常是对对象中的数据执行操作的代码组。比如滴滴打车中,计算距离和价格、更新实时位置、预计到达时间等,要调用方法,首先要指定要调用其方法的对象的名称,然后指定句点(.),然后是方法的名称。方法就是对象“要做的事情”。
Text("本局目标值:")
.fontWeight(.black)
.foregroundColor(.green)
上面来看,Text这个对象的属性是括号里的内容(“本局目标值:”),方法是 .fontWeight(.black) 和 .foregroundColor(.green) ,然后在View中绘制到屏幕。
一个接一个地将两个或多个方法应用于一个对象的过程称为方法链接。
至此,已经完成了一些面向对象的编程:
已经创建了一个对象-或正如程序员将其实例化的那样 -一个Text对象“本局目标值:”
调用了Text对象的方法来执行任务:fontWeight()将其文本加粗,并color()更改其颜色。
END 2020.04.20
