---
# System prepended metadata

title: 北軟104 problemA 自訂符號井字遊戲
tags: [北軟104]

---

# 北軟104 problemA 自訂符號井字遊戲
###### tags: `北軟104`

## 題目

試設計一個程式， 可用來實現井字遊戲，且甲、乙雙方的符號可自訂。

1. 甲方和乙方的符號雖然可以自訂，但是，限制其符號為 26 個英文字母(A,…,Z)之一，且大小寫均可。
2. 遊戲開始時，由甲方在九宮格的 9 個區域之一先下，接著是乙方，然後又回到甲方，依此類推。在第一次按下時，程式會先檢查甲方和乙方所定義的符號是否有效，若否，則出現”輸入的符號無效”提示訊息(如圖 1(a))，若是，則繼續。每下一次，該區域會出現相對應的符號，且該區域不可再下。當甲方或乙方之三個符號連成一線，則出現相對應的”甲方獲勝”或”乙方獲勝”(如圖 1(b))訊息。此時，遊戲即結束，雙方不可再下。
3. 當 9 個區域都下完，沒有一方之三個符號連成一線，則出現”和局”訊息。(如圖 2) 

![](https://i.imgur.com/uuN7kMN.png)

![](https://i.imgur.com/MVm4T8E.png)

評分項目:
1. 可以正確地判斷甲方與乙方的符號是否有效，且能出現”輸入的符號無效”提示訊息。(5 分)
2. 可以正確地實現井字遊戲，且能出現獲勝一方的訊息。(15 分)
3. 可以正確地判斷和局且出現和局訊息。(5 分) 

## 想法

對按鈕加上MouseDown來放文字，用一個bool來儲存現在是誰下，假設true是甲下，那乙就是false。

初始化甲方符號為空白，乙方符號為空白，判斷是否為雙方第一次下棋的方式為確定甲方符號和乙方符號是不是空白，接下來我們可以用ACSII Code的特性來判斷符號是否為字母大小寫。

接下來，每一次下棋都做一次check，判斷直行與橫行是否為重複的字母。
判斷要記得空白不算一個字元，假設有一行全空，那並不是勝利。
所以處理這種例外最好的方法就是，假設確認的那一行有空白，那就是跳出確認，因為假設有一行是空白，就絕對不會有勝利的結果。