import inbox, messaging, appuifw, e32, contacts
current_word = None
guessed = None
num_guesses = 0
def new_game():
global current_word, guessed, num_guesses
word = appuifw.query(u"Word to guess", "text")
if word:
current_word = word.lower()
guessed = list("_" * len(current_word))
num_guesses = 0
print "New game started. Waiting for messages..."
def game_status():
if current_word:
appuifw.note(u"Word to guess: %s\n" % current_word +\
"Current guess: %s\n" % "".join(guessed) +\
"Number of gusses: %d" % num_guesses)
else:
appuifw.note(u"Game has not been started")
def quit():
print "HANGMAN SERVER EXITS"
app_lock.signal()
def find_number(sender):
cdb = contacts.open()
matches = cdb.find(sender)
if matches:
num = matches[0].find("mobile_number")
if num:
return num[0].value
else:
return None
return sender
def message_received(msg_id):
global guessed, num_guesses
box = inbox.Inbox()
msg = box.content(msg_id).lower()
sender = box.address(msg_id)
box.delete(msg_id)
print "Message from %s: %s" % (sender, msg)
if current_word == None:
return
elif msg.startswith("guess") and len(msg) >= 7:
guess = msg[6]
for i in range(len(current_word)):
if current_word[i] == guess:
guessed[i] = guess
num_guesses += 1
elif msg.startswith("word"):
if msg[5:] == current_word:
appuifw.note(u"%s guessed the word!" % sender)
guessed = list(current_word)
num = find_number(sender)
if num:
messaging.sms_send(num, u"Status after %d guesses: %s" %\
(num_guesses, "".join(guessed)))
box = inbox.Inbox()
box.bind(message_received)
appuifw.app.exit_key_handler = quit
appuifw.app.title = u"Hangman Server"
appuifw.app.menu = [(u"New Game", new_game),
(u"Game Status", game_status)]
print "HANGMAN SERVER STARTED"
print "Select 'Options -> New Game' to initialize a new game"
app_lock = e32.Ao_lock()
app_lock.wait()