不顯示調用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.pswp.cn/news/385970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385970.shtml
英文地址,請注明出處:http://en.pswp.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…

python生成泊松分布隨機數_泊松分布隨機數

一、功能產生泊松分布的隨機數。二、方法簡介泊松分布的概率密度函數為\[f(x)\frac{\lambda ^{x}e^{-\lambda }}{x!} \qquad x\in \left \{ 0,1,...,\lambda \right \}\]用\(P(\lambda)\)表示。泊松分布的均值為\(\lambda\),方差為\(\lambda\)。定理 若\(\lambda &g…

mysql數據庫優化面試

前言 現在Java程序員面試都是因為沒有豐富的工作經驗和自己過硬的技術,所有都不知道一般互聯網應該會問什么技術問題,加上自己可能去面試的時候沒有準備的太充分,一面試剛跟面試官扯幾個面試題就不知道自己在哪里了,被懟的體無完…

leetcode中文版python_Python版LeetCode1.兩數之和

啦啦啦,歡迎開啟LeetCode刷題的旅程,這將是一段漫長而又艱辛的旅程。這道Two Sum的題目作為LeetCode的開篇之題,乃是經典中的經典,正所謂‘平生不識TwoSum,刷盡LeetCode也枉然’,就像英語單詞書的第一個單詞…

mysql數據庫備份方式,跳槽大廠必看!

NO1:說說zookeeper是什么? ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現(Chubby是不開源的),它是集群的管理者,監視著集群中各個節點…

python淺藍色對應的代碼_淺藍色Python模塊不在m上工作

我正在嘗試通過macosx10.7.2上的Python連接到wiimote。在為此我試著用淺藍色。運行時:import lightbluePython會給我這個錯誤。在>>> import lightblueTraceback (most recent call last):File "", line 1, in File "/Library/Frameworks/P…

mysql數據庫安裝教程32位,看這一篇就夠了!

字節跳動 ?試前?????結 ?試前 頭條的?試是三家?最專業的,每次?試前有專?的HR和你約時間,確定OK后再進??試。每次都是通過視頻?試,因為都是之前都是電話?或現場?,所以視頻?試還是有點不?然。也有?覺得視頻?試…

java cron工具類_Java工具類之:包裝類

我們都知道,JDK 其實給我們提供了很多很多 Java 開發者已經寫好的現成的類,他們其實都可以理解成工具類,比如我們常見的集合類,日期相關的類,數學相關的類等等,有了這些工具類,你會發現它能很大…