不显示调用super_让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第11篇

4f0715d4f3a972c94e8cb5483c42093d.png

欢迎回到我们的iPhone开发教程系列,让我们继续前进吧。

重新来过

别害怕,哥不是让你抛弃之前所有的源代码,从零开始重新构建这个项目!

这里说的是游戏界面里面的“Start over”按钮。

在我们的to-do清单里面曾经提到过,这个按钮负责重置玩家的得分,同时让游戏回合数重置为首回合。

如果你要和其他人一起来玩这款游戏,这个按钮就会非常有用。比如你先来玩10个回合,记录下总的得分,然后用“重新来过”按钮重置游戏得分。接着你的朋友再来玩10个回合,并记录下总的得分。最后比较下你们两的得分就知道谁更厉害。

小练习:

现在可以自己尝试着实现一下“重新来过”这个按钮的功能。在之前的学习中,我们已经知道如何让视图控制器对按钮的触碰做出响应,当然现在你肯定也直到如何来更改score和round变量的数值了。

怎么样?是否顺利完成呢?如果没有,那么就老老实实继续看看下面的指导吧。

首先要在ViewController.swift中添加一个新的方法。至于具体的位置,我建议你放在startNewRound()这个方法的代码下面。

func startNewGame(){
score = 0
round = 0
startNewRound()
}

这个方法的作用很简单,就是重置玩家得分和游戏回合数,并开启一个新的回合。

注意到这里的游戏回合数重置为0,而不是1,这是因为在startNewRound()方法里面会对round的数值加1.

如果我们将round设置为1,那么startNewRound()方法又会添加1个1,那么第一个回合时显示的标签数值就是2。

可能我这里有点啰嗦了,实际上你可以自己修改下代码就知道了。(这就是为什么我们不用日常生活的语言来写代码,虽然符合人类的表达习惯,但不如编程语言简洁,逻辑性也不够严密)。

除此之外,我们还需要在ViewController.swift中添加一个动作方法来处理对“重新来过”按钮的触碰事件。

@IBAction func startOver(){startNewGame()
}

方法的位置不是很重要,不过一般是放在其它动作方法附近。

当玩家触碰“重新来过”的按钮后,startOver()动作方法会调用startNewGame()方法重新启动新的游戏。同时,我们需要调用updateLabels()方法来更新相关的score,round和target标签的数值。

当然,为了让一切合乎逻辑,我们需要将viewDidLoad()方法中对startNewRound()方法的调用更改为startNewGame()。因为在应用启动时score和round已经是0,所以这样做其实不会对应用的实际运行产生任何影响,只是为了让源代码更加清晰易读。

你看,只要你在写代码的时候给方法或者变量的定义比较符合语言习惯,即便是一个完全不懂编码的人也大致能看懂。不过有些程序猿喜欢偷懒,让你完全看不懂是什么意思。但很有些人喜欢这么干,还叫嚣看不懂是你自己太嫩太菜鸟,图洋图森破,其实就是装B,显得自己逼格高。

更改viewDidLoad()方法的代码如下:

override func viewDidLoad() {
super.viewDidLoad()
startNewGame()}

最后,我们还需要将“重新来过”按钮和动作方法关联在一起。

在Xcode中切换到storyboard界面,按住Ctrl键从“重新来过”按钮拖出一条线到View Controller。松开鼠标,然后从弹出菜单中选择startOver就好了。

这样我们就把按钮的Touch Up Inside 事件和动作方法关联在一起了。

好了,现在可以点击Run运行下游戏看看效果。

当你触碰“重新来过”按钮时,游戏就会重新开始。

提示:

如果你忘了storyboard界面文件中的控件具体和哪个动作方法关联在一起,可以选中storyboard中的View Controller,然后在Xcode右侧面板的Connections Inspector中查看。其中会显示所有和视图控制器相关的关联。

98aabd1b16bc24e3810c2cbea811f30b.png

好了,今天的学习暂时到此结束,下一篇我们将学习另一个非常重要的概念。同时将现在的单一界面应用扩展为多界面应用。让我们共同期待吧。

最后送福利一张。

f3638cb4171abab27f2af93987e715c6.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文搞懂JVM架构:跳槽面试大厂被拒

正文 在实际的工作项目中, 缓存成为高并发、高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征: 在分层系统中处于内存/CPU具有访问性能良好,缓存数据饱和,有良好…

全局变量_Python函数中的全局变量与局部变量

# a,b变量是全局变量,在整个py文件中都可以访问a 11b 12# 定义一个函数def first():# 这个变量是函数内部定义的变量,属于局部变量,只能在函数中使用c "Hello"# 大括号{} 是format()函数的用法,格式化print("c {}".format(c))# 如果局部变量定义的名称…

一文详解:字节面试官必问的Mysql锁机制

一面 1 自我介绍和项目 2 Java的内存分区 3 Java对象的回收方式,回收算法。 4 CMS和G1了解么,CMS解决什么问题,说一下回收的过程。 5 CMS回收停顿了几次,为什么要停顿两次。 6 Java栈什么时候会发生内存溢出,Jav…

install npm 到某个文件下执行_你可能不知道的 npm 依赖管理那些事

点击上方蓝字关注我们npm 是 Node.js 默认的、以 JavaScript 编写的包管理工具,如今,它已经成为世界上最大的包管理工具,是每个前端开发者必备的工具。不知你是否遇到过下面问题:哎?我本地明明是好的,线上的…

万字总结!腾讯、字节跳动面经已发

二、常见的并发问题 1、脏读 一个事务读取了另一个事务未提交的数据 2、不可重复读 一个事务对同一数据的读取结果前后不一致。两次读取中间被其他事务修改了 3、幻读 幻读是指事务读取某个范围的数据时,因为其他事务的操作导致前后两次读取的结果不一致。幻读…

ncbi查找目的基因序列_NCBI大搜索之目的基因寻踪

NCBI大搜索之目的基因寻踪最近经常碰到查找目的基因的问题,那今天就讲一下如何利用NCBI数据库查找目的基因!NCBI(National Center For Biotechnology Information),美国国家生物技术信息中心,分子生物学,生物化学及遗传学领域常用…

万字长文!2020-2021京东Java面试真题解析

我整理的spring学习笔记: 像spring这种知识点我们不能盲目的学习,首先我们得有一套学习路线,我总结了一套spring的学习思维导图,今天通过我整理的Spring学习路线.xmind给大家分析spring需要掌握的一些核心知识点。 spring的特点&…

echarts label固定位置_ECharts+百度地图网络拓扑应用

前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图、ECharts和HT for Web三者结合起来也做一个类似空气质量报告的报表拓扑图应用,于是有了下面的Demo&#xff1a…

三年Java开发,你连基础的JVM运行时内存布局都忘了

面:为什么要使用双亲委派机制去加载类? 答:避免多份同样字节码的加载,浪费内存。 类的加载方式 隐式加载:new显示加载:loadClass、forName等 类的装载过程如下图: 面:loadClass和…

vue实现可编辑的文字_苹果还自带文字转语音,只要一键按下便可实现,今天分享给大家...

如果想将文字转成语音,那大家平时都是怎么操作?下面小编就为大家介绍手机,电脑上都可以使用的方法,让我们一起来看看吧!一、手机端操作1、苹果手机其实苹果手机就自带了文字转语音功能,只要打开手机&#x…

三面美团Java岗,面试竟然被这31道Java基础题难倒了

01 分布式限流:NginxZooKeeper 1.1 分布式限流之Nginx 请解释一下什么是 Nginx? 请列举 x Nginx 的一些特性。 请列举 x Nginx 和 和 Apache 之间的不同点 请解释 x Nginx 如何处理 P HTTP 请求。 在 x Nginx 中,如何使用未定义的服务器名称来阻止…

海龟绘图小动物_震惊!被塑料绳勒成两半的海龟

海洋,其实离人类很近,我们在追逐沙滩和日落,享受美味的海鲜的时候,可曾想到我们平时的一些很随意的行为,会给一些海洋生物带来无法恢复的伤害,甚至夺取它们的生命。或许人们的冷漠无知尚未得到惩罚&#xf…

上海大厂Java面试经历:初步理解类加载运行机制和类加载过程

volatile相关经典面试题 谈谈volatile的特性volatile的内存语义说说并发编程的3大特性什么是内存可见性,什么是指令重排序?volatile是如何解决java并发中可见性的问题volatile如何防止指令重排volatile可以解决原子性嘛?为什么?v…

mysql数据库优化面试

前言 现在Java程序员面试都是因为没有丰富的工作经验和自己过硬的技术,所有都不知道一般互联网应该会问什么技术问题,加上自己可能去面试的时候没有准备的太充分,一面试刚跟面试官扯几个面试题就不知道自己在哪里了,被怼的体无完…

mysql数据库备份方式,跳槽大厂必看!

NO1:说说zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点…

mysql数据库安装教程32位,看这一篇就够了!

字节跳动 ⾯试前⼀⾯⼆⾯⼩结 ⾯试前 头条的⾯试是三家⾥最专业的,每次⾯试前有专⻔的HR和你约时间,确定OK后再进⾏⾯试。每次都是通过视频⾯试,因为都是之前都是电话⾯或现场⾯,所以视频⾯试还是有点不⾃然。也有⼈觉得视频⾯试…

java cron工具类_Java工具类之:包装类

我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工具类,你会发现它能很大…

mysql数据库安装,真香!

Spring Security观后感——手绘思维脑(供参考) 手绘的思维导图,是我自己根据自身的情况读完这套阿里出品的Spring Security王者晋级文档之后所绘的,相当于是一个知识的总结与梳理,我将其分为“核心组件”与“工作原理/认证流程”。 Spring Se…

mysql数据库实用教程答案

前言 数据库相关的面试题早已成为了一线互联网大厂面试的家常菜,如果你对数据库不太熟悉,我劝你不要轻易面试大厂。那么,为什么数据库成了大厂面试的家常菜呢?主要原因当然还是海量数据。 无论对于刚入行的小白还是有几年Java开…

在idea中新建的text文件_开发属于自己的第一款 IDEA 插件!

往期热门文章:1、《往期精选优秀博文都在这里了!》2、又一个程序员跑路删库跑路被抓了,导致服务器瘫痪 36 个小时!3、恕我直言,有了这款 IDEA 插件,你可能只需要写 30% 的代码。。。4、Java8 的 Stream API 的确牛X&am…