# 計數器實作

## 自動計數器

要建立一個計數器，最核心的地方就是要使用一個變數來記錄目前的數字，同時還要有一個變數用來決定現在是要正數還是倒數。第一個變數我們以「counter」來命令，另外一個變數則把它叫做「delta」。此時變數積木中，會有3個變數，其中那個index是原先就是預設。

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgkhee4UQOk36iW_mI%2F2018-10-01_07-13-15.png?alt=media\&token=df8af237-9f8f-428e-897b-892e1e0e37d8)

在啟動的時候，如上所想，要把這兩個變數分別設定其初始值為0以及1：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgkyxGd2X8tr6ftIfi%2F2018-10-01_07-15-19.png?alt=media\&token=291faf55-70bf-4080-b211-3f25c701c225)

由於需要歸零的功能，我們就設定「A+B」按鈕被按下的時候，把counter設定為零，如下：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNglJ8nZcU-YS7dREa5%2F2018-10-01_07-16-45.png?alt=media\&token=ba8f9f4d-96c6-4bf5-9edf-8a3146b539ab)

如果A被按下就正數，也就是delta設定為1，而B被按下時則倒數，也就是delta要設定為-1，如下所示：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgldsuz6MtUohAvb1C%2F2018-10-01_07-18-15.png?alt=media\&token=268024e9-7a46-41cf-b9ba-70dff7fbca20)

最後，控制在重複無限次的地方每隔1秒就顯示出目前的counter，同時顯示完成之後，就把counter的值加上delta，如果這時候delta是1就是正數，-1就是倒數。

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgmFG54i0a4KaW6Qe6%2F2018-10-01_07-20-49.png?alt=media\&token=62193338-6dd0-46d4-8b40-6b11c21fbef6)

如果，你想要限制計數的過程中不能讓數字變成負數的話，則可加上如下所示的限制：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgmgtLN88EcTFqsNek%2F2018-10-01_07-22-47.png?alt=media\&token=233b48a7-c2a4-47c1-9681-1c55268b7b47)

如此，如果在倒數的情況下，就永遠不會數到負數，最會一直停留在0，直到我們改為正數為止。

## 手動計數器

前一個例子是在固定的時間中自動計數，那如果想要做的是手動的計數器，按A按鈕加1，按B按鈕減1，A+B一起按的時候則是歸零，該如何做呢？

首先，在重複無限次的地方，把它變成很單純地顯示counter這個變數就可以了，如下所示：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgnpnULief6-eUycbS%2F2018-10-01_07-27-47.png?alt=media\&token=16ab2cec-571e-406b-bd36-5a516c12f7e9)

然後A按鈕被按下以及B按鈕被按下的事件，則是真正執行加1及減1的操作，當然A+B按鈕的事件也是把counter設為0，而啟動時要做的就只有將counter設為0的動作，在這個例子中，delta變數是沒有作用的：

![](https://2988174335-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8UCGGycRFYs2Gx9M%2F-LNgjTfcE4rgKRLe0avF%2F-LNgoT4q6VbVphvAqeom%2F2018-10-01_07-30-28.png?alt=media\&token=0dd46b5e-bf1a-4c02-8098-afd634776ded)
