Ki and za! Zax and zoa! Xyst and zyme! Yurta and zowie!
As I’ve written about before, I have been developing a game to help learn Scrabble words. I’m what might be considered a reluctant Android developer, being no major fan of Java, XML, and Eclipse, but I wanted an app for my phone so that I could learn and practice words for Scrabble, my board and electronic game of choice.
Other apps, such as Syrious Scramble, seem to use a dictionary other than those used for Scrabble, so I disliked the feeling of playing a word in those games and being told it was invalid, such as ain.
So I looked, in vain (and ain, eventually) for a Scrabble-compliant word app, and finding none, I decided to write one, XuMoQi, which is barely not none. That is, it is extraordinary in its plainness, overarching in being one-dimensional. (Okay, two dimensions, but only barely.)
Some random thoughts and experiences while writing the app follow.
What up, Dawg?
The word lists are huge, and I tried to optimize them for speed instead of space. I am considering rewriting them to being a modified DAWG (http://stevehanov.ca/blog/index.php?id=115), but haven’t yet figured out how to get my searching and pattern-matching to fit with those, which presume that all characters are known before doing the search.
Field-testing the app showed that it is reasonable in its speed, and I haven’t had any out of memory errors. Then again, I’ve tested in a field of one, on my relatively newish phone.
All work and no play …
Pattern-matching is done in separate threads, usually taking less time than the duration of the user inputting their words. I found this
(http://vaibhavtolia.wordpress.com/2013/10/03/79) to be a good resource on explaining the apparent overuse of, uh, resources.
Editing the EditView
Alas, the Android library doesn’t seem to have a decent (or any) EditView to fit my needs: no auto suggestion, no word completion, and submit (or send) when the enter (angled arrow) is pressed. So I wrote my own, which is on GitHub here: https://github.com/jpace/xumoqi/blob/master/src/org/incava/xumoqi/MultiLineSendEditText.java
I scaled the vertical learning curve of Gimp (it is really a curve if it’s a straight line?) and developed a few icons, rolling them by hand and applying various light effects. I started by following this http://www.gimpshop.com/tutorials/how-to-create-a-logo guide, which helped me learn the basics, then I found the Filters > Logo functionality, which scripts a set of filters in preset ways. Eventually I developed, with the Chrome effect, this masterpiece:
I charged myself nothing for my work as a graphics artist, and got my money’s worth.
I wasn’t sure how to change the Icons, and found an excellent guide here: http://bigknol.com/open-blog/2013/10/change-android-launcher-icon-using-eclipse-ide/.
As if I needed more things to dislike about Eclipse, the version I’m using, Juno Service Release 1, would not take screenshots, and with such a beautiful app as this, it was imperative to capture such artistry. But Eclipse, and perhaps this is a feature, not a bug, would not capture my screenshots, so instead of running the emulator through Eclipse, I ran it off the command line, as described here (http://www.addthis.com/blog/2013/07/22/10-tips-for-android-emulator/#.Uwp0v1ErFG4)
% cd /opt/adt-bundle/adt-bundle-linux-x86_64-20131030/sdk
% ./tools/android avd
% ./platform-tools/adb shell screencap -p | sed ‘s/\r$//’ > ~incava/android/v1.2/screen2.png
Table with equal columns
Maddening it was to get my table to display columns with an equal width. Naturally, of course, is that the width should be set to 0:
XuMoQi comes from three two-letter words commonly used in Scrabble, xu, mo, and (wait for it) qi. I pronounce it “zoo-MOE-key”, but when she saw it, my wife immediately said “zoo monkey”. So if this app ever gets a mascot, you know what it will be.
It wasn’t intuitive to figure out how to export my app such that Google would accept it, but this explains it: http://help.testflightapp.com/customer/portal/articles/1279844-how-to-create-an-apk-adt-bundle.
I believe that I have adequately described XuMoQi as primitive, primitive as in the sense of the opening of 2001: A Space Odyssey, but with fewer bones. Based on feedback, and my own experience, I plan to make it more game-like, i.e., keeping scores, rating words based on difficult, and adding a timer.
And despite that the graphics are incredibly perfect, I’ll probably find some way to make them even better.
Getting the App
In the unlikely chance that anyone wants to get this app, it is available on (in?) Google Play Store.