Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2013-01-03 01:56:17 (GMT)
committer Walter Bender <walter.bender@gmail.com>2013-01-03 01:56:17 (GMT)
commit50d18e924e681fd26f846909d3a572992e5fc9c4 (patch)
tree633e8ee062ecf711519db5c37b23a815dc766d16
parent3ac9ed40552b9e167ab47c59e11755373bc87e9e (diff)
debugging accelerometer code
-rw-r--r--game.py82
1 files changed, 62 insertions, 20 deletions
diff --git a/game.py b/game.py
index e9d727b..36a6994 100644
--- a/game.py
+++ b/game.py
@@ -13,7 +13,7 @@
from gi.repository import Gtk, GdkPixbuf, GObject, Gdk
import cairo
-
+import os
from random import uniform
from gettext import gettext as _
@@ -34,16 +34,24 @@ ACCELEROMETER_DEVICE = '/sys/devices/platform/lis3lv02d/position'
def read_accelerometer(game):
- fh = open(ACCELEROMETER_DEVICE)
- string = fh.read()
- xyz = string[1:-2].split(',')
- try:
- x = float(xyz[0]) / (64 * 18)
- y = float(xyz[1]) / (64 * 18)
+ if not hasattr(read_accelerometer, 'device_path'):
+ if os.path.exists(ACCELEROMETER_DEVICE):
+ read_accelerometer.device_path = ACCELEROMETER_DEVICE
+ else:
+ read_accelerometer.device_path = None
+ if read_accelerometer.device_path is None:
+ x = int(uniform(-20, 20))
+ y = int(uniform(-20, 20))
+ z = int(uniform(-20, 20))
+ else:
+ fh = open(ACCELEROMETER_DEVICE)
+ string = fh.read()
+ xyz = string[1:-2].split(',')
+ x = int(float(xyz[0]) / 18)
+ y = int(float(xyz[1]) / 18)
+ z = int(float(xyz[2]) / 18)
fh.close()
- game.motion_cb(x, y)
- except:
- pass
+ game.motion_cb(x, y, z)
GObject.timeout_add(100, read_accelerometer, game)
@@ -146,9 +154,11 @@ class Game():
def _yellow_dot_too(self):
''' Things to reinitialize when starting up a new game. '''
- self._targets.append(
- (self._targets[0] + int(uniform(0, TEN * SIX - 1))) % TEN * SIX)
- self._label.set_label('Well done! Click on another yellow dot.')
+ i = self._targets[0]
+ while i in self._targets:
+ i = int(uniform(0, TEN * SIX))
+ self._targets.append(i)
+ self._label.set_label('Well done! Click on the other yellow dot.')
self._next = self._yellow_dots_three
self._dots[self._targets[1]].set_shape(
self._new_dot(self._colors[YELLOW]))
@@ -161,7 +171,7 @@ class Game():
while i in self._targets:
i = int(uniform(0, TEN * SIX))
self._targets.append(i)
- self._label.set_label('Great! Now rub on a yellow dot.')
+ self._label.set_label('Great! Now rub on one of the yellow dots.')
self._next = self._red_dot
self._dots[self._targets[2]].set_shape(
self._new_dot(self._colors[YELLOW]))
@@ -232,8 +242,8 @@ class Game():
self._count += 1
if self._count == 5:
self._count = 0
- self._next = None
- self._label.set_label('')
+ self._next = self._shake_it
+ self._label.set_label('OK. Shake it up!!')
else:
self._label.set_label('Keep tapping.')
i = self._targets[0]
@@ -243,14 +253,47 @@ class Game():
self._dots[i].set_shape(self._new_dot(self._colors[BLUE]))
self._dots[i].type = BLUE
+ def _shake_it(self):
+ for dot in self._dots:
+ if dot.type in [RED, YELLOW, BLUE]:
+ dot.set_layer(200)
+ self._next = self._shake_it_more
+ self._shake = 'random'
+ self._pausing = True
+ GObject.timeout_add(10000, self._clear_pause)
+ GObject.timeout_add(100, read_accelerometer, self)
+
+ def _shake_it_more(self):
+ self._label.set_label('Shake it harder!!')
+ self._next = None
+ self._shake = 'random'
+ self._pausing = True
+ GObject.timeout_add(10000, self._clear_pause)
+
def _set_label(self, string):
''' Set the label in the toolbar or the window frame. '''
self._activity.status.set_label(string)
- def motion_cb(self, x, y):
+ def motion_cb(self, x, y, z):
+ if self._shake is None:
+ return
+ elif self._shake == 'random':
+ print x, y, z
+ for dot in self._dots:
+ if dot.type in [RED, YELLOW, BLUE]:
+ r = int(uniform(-10, 10))
+ dot.move_relative((x + r, z + r))
+ if self._pausing is not True:
+ if self._next is not None:
+ GObject.timeout_add(500, self._next)
+ else:
+ self._label.set_label('')
+ self._shake = None
return
def _button_press_cb(self, win, event):
+ if self._shake is not None:
+ return True
win.grab_focus()
x, y = map(int, event.get_coords())
self._press = True
@@ -268,7 +311,8 @@ class Game():
return True
def _button_release_cb(self, win, event):
- print 'button release cb'
+ if self._shake is not None:
+ return True
self._press = False
self._release = None
if not self._timer is None:
@@ -280,11 +324,9 @@ class Game():
x, y = map(int, event.get_coords())
spr = self._sprites.find_sprite((x, y))
- print self._dots.index(spr), self._targets
if spr.type is not None:
if spr in self._dots:
for target in self._targets:
- print self._dots.index(spr), target
if self._dots.index(spr) == target:
self._release = target
if self._next is not None: