Alphabear 找單字小工具_用excel玩遊戲

【Alphabear 找單字小工具】(非攻略、非破解)

警告:使用本工具可能導致遊戲樂趣喪失!

我從來沒寫過遊戲評測文,介紹遊戲也不是本站主要走向。但是我覺得透過這個alphabear找單字小工具,得以同時體現「效率」與「創意」兩大核心價值,故為文以誌之。

Alphabear是一款手機上的拼字小遊戲,除了單純拼英文單字之外,它還融合了幾個會讓你上癮的元素,例如練功升級、蒐集熊種、講究實力又略帶運氣的玩法……老實說我覺得遊戲平衡度設計的還不錯,就算卡關了,稍微把熊的等級練高就很有機會過關。不過偶有幾次遇到「只差一點點就過關了,但是有些單字就是怎麼也拼不出來」的窘境,於是我就用excel寫了這個找單字小工具。

下載點: http://bit.ly/1NMMyVY

【功能】
告訴Excel你要找包含哪些字母的單字,程式就會自動列出所有符合條件的單字。例如你場面上可以用的字母有”z”有”a”有”o”,就在輸入欄位打上”zao”,按下確定,即可從清單中挑一個喜歡的單字來用。
【說明】
1.A欄為單字資料庫,目前我隨便放了一個好像是TOEFL還是TOEIC的字庫。使用者可自行擴充。

2.輸入時可不考慮順序。”abc”和”cba”都可以找到所有含有這三個字母的單字。

3.可輸入重複的字母。輸入”a”,會找到所有含有字母a的單字。輸入”aa”則會找到所有含有兩個a以上的單字。輸入”aaa”則會找到所有含有三個a以上的單字。以此類推。

4.必須允許巨集。若您有疑慮,可自行將下列程式碼複製回去修改。

5.受限於電腦運算速度,以及受限於我粗糙的演算法,執行效率可能不盡理想。故不推薦拿來玩90秒的限時關卡。
其實我後來有對這個vba程式進行改版。功能做得更強大、也更人性化,同時也更耗電腦運算資源……不過那個版本存在老婆的電腦裡了。

【程式碼】

Sub 找字母()
'
' 找字母 Macro
'
'

Dim voc(10000) As String
Range("B1:Z9999").Clear

cl = 1

target = InputBox("找哪幾個字母")
cwton = Range("a1:" & "A" & "1").Cells.Count
searchrange = "A" & ":" & "A"

For m = 1 To Len(target)
tg = Mid(target, m, 1)
Columns(cwton + m - 1).Select

Set a = Selection.Find(What:=tg, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False, SearchFormat:=False)

If Not a Is Nothing Then
a.Activate
Cells(a.Row, cwton + m) = a.Value

x = InStr(1, Cells(a.Row, cwton + m), tg)
y = InStr(1, Cells(a.Row, cwton + m), UCase(tg))
If x > y Then Order = x Else Order = y
tempstr = Mid(Cells(a.Row, cwton + m), 1, Order - 1) & "_" & Mid(Cells(a.Row, cwton + m), Order + 1, Len(Cells(a.Row, cwton + m)) - Order)
Cells(a.Row, cwton + m) = Replace(Cells(a.Row, cwton + m).Value, Cells(a.Row, cwton + m), tempstr)

End If

For i = 1 To Sheet1.UsedRange.Rows.Count

Set a = Selection.FindNext(After:=ActiveCell)
'If Not a Is Nothing Then aa.Activate Else MsgBox ("XX")
If cl = 1 Then
FA = a.Address
If Not a Is Nothing Then
a.Activate


Cells(a.Row, cwton + m) = a.Value

x = InStr(1, Cells(a.Row, cwton + m), tg)
y = InStr(1, Cells(a.Row, cwton + m), UCase(tg))
If x > y Then Order = x Else Order = y
tempstr = Mid(Cells(a.Row, cwton + m), 1, Order - 1) & "_" & Mid(Cells(a.Row, cwton + m), Order + 1, Len(Cells(a.Row, cwton + m)) - Order)
Cells(a.Row, cwton + m) = Replace(Cells(a.Row, cwton + m).Value, Cells(a.Row, cwton + m), tempstr)

End If
Else

If a.Address = FA Then Exit For
If Not a Is Nothing Then
a.Activate
Cells(a.Row, cwton + m) = a.Value

x = InStr(1, Cells(a.Row, cwton + m), tg)
y = InStr(1, Cells(a.Row, cwton + m), UCase(tg))
If x > y Then Order = x Else Order = y
tempstr = Mid(Cells(a.Row, cwton + m), 1, Order - 1) & "_" & Mid(Cells(a.Row, cwton + m), Order + 1, Len(Cells(a.Row, cwton + m)) - Order)
Cells(a.Row, cwton + m) = Replace(Cells(a.Row, cwton + m).Value, Cells(a.Row, cwton + m), tempstr)

End If
End If


cl = cl + 1

Next
cl = 1
mc = m + 1
Next
n = 1
For i = 1 To Sheet1.UsedRange.Rows.Count

If Cells(i, mc) = "" Then

Else
Cells(n, "P") = Cells(i, 1)
n = n + 1

End If

Next

End Sub