#!/bin/env python import sys import os import dbus import random import time import csnd from dict import dict from dict import word bus = dbus.SessionBus() APLAY = "/usr/bin/aplay" espeak_object = bus.get_object('org.laptop.Speech','/org/laptop/Speech') dictionary = "" pronouncedict = "" skill = "" answer = "" clearit = "" # Because I couldn't null a string # My class for key detection class _Getch: """Gets a single character from standard input. Does not echo to the screen.""" def __init__(self): try: self.impl = _GetchWindows() except ImportError: self.impl = _GetchUnix() def __call__(self): return self.impl() class _GetchUnix: def __init__(self): import tty, sys def __call__(self): import sys, tty, termios fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch class _GetchWindows: def __init__(self): import msvcrt def __call__(self): import msvcrt return msvcrt.getch() class listenspell(): def __init__(self): self.skill_level = 0 self.level_threshold = 5 self.points = 0 self.words_played = 0 self.words_correct = 0 self.init = False from dict import dict from dict import word self.dict_obj = dict() self.word_obj = word() def startspeechd(self): # Currently not in use have to manually start sugar-speechd import os pid = os.fork() if pid: return else: # we are the child os.popen("./sugar-speechd") def playsound(self,event): if event == "begin": os.popen("aplay --quiet begin.wav") elif event == "correct": os.popen("aplay --quiet correct.wav") elif event == "incorrect": os.popen("aplay --quiet incorrect.wav") def setskill_level(self,level): self.skill_level = level def getskill_level(self): return self.skill_level def getwords_played(self): return self.words_played def getwords_correct(self): return self.words_correct def getpoints(self): return self.points def ans_correct(self, wordid): self.playsound("correct") self.points = self.points + self.skill_level self.words_correct = self.words_correct + 1 def ans_incorrect(self, wordid): self.playsound("incorrect") def clearscreen(self,numlines=100): """Clear the console. numlines is an optional argument used only as a fall-back. """ import os if os.name == "posix": # Unix/Linux/MacOS/BSD/etc os.system('clear') elif os.name in ("nt", "dos", "ce"): # DOS/Windows os.system('CLS') else: # Fallback for other operating systems. print '\n' * numlines def load_wordid(self, num_words): temp_list = [] self.wordid_list = [] temp_list = self.dict_obj.getrandomwordid(length = self.skill_level,numwords = num_words) for(wordid, ) in temp_list: self.wordid_list.append(wordid) return self.wordid_list def getwordinfo(self,wordid, attribute): if self.word_obj.getwordid() != wordid: self.word_obj.__init__("wordid", wordid) self.words_played = self.words_played + 1 if attribute == "def": return self.word_obj.getdef() elif attribute == "usage": return self.word_obj.getusage() elif attribute == "word": return self.word_obj.getword() elif attribute == "phnm": return self.word_obj.getword() # For the time being else: return "Invalid attribute" def saytext(self, text): if self.init == False: bus = dbus.SessionBus() self.espeak_object = bus.get_object('org.laptop.Speech','/org/laptop/Speech') self.init = True text = str(text) self.espeak_object.SayText(text) def getkey(self): for longestinput in range(15): inkey = _Getch() import sys for i in xrange(sys.maxint): k=inkey() if k<>'':break elif k == '\r': break return k def exitgame(self): self.saytext("goodbye") sys.exit()