/
gameplay.py
133 lines (111 loc) · 3.72 KB
/
gameplay.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import urllib
import json
import random
import subprocess
from subprocess import Popen
import string
import sys
sys.dont_write_bytecode = True
from firebase import firebase
FirebaseAddres = "https://spectre-e5ff7.firebaseio.com/"
firebase = firebase.FirebaseApplication(FirebaseAddres,authentication=None)
from arduio import ArduinoIO
io = ArduinoIO()
SOUND_CMD = "aplay"
SOUND_PATH = "sound/"
def playSound(path):
print("playing : "+path)
Popen([SOUND_CMD , SOUND_PATH + path.lower()])
class Color:
def decode(self, dic):
self.r = dic["r"]
self.g = dic["g"]
self.b = dic["b"]
def __init__(self):
self.r = 255
self.g = 255
self.b = 255
def set(self, r, g, b):
self.r = r
self.g = g
self.b = b
class SpectreGameplay:
def __init__(self):
print("init Game Engine")
self.spectres = []
self.retrieveSpectre()
self.timer = 0
self.challengeCount = 0
self.currentSeq = None
#spectres.append(Spectre("Casper", "red", 1, 1))
def getCurrentSeq(self):
return self.currentSeq
def retrieveSpectre(self):
result = firebase.get('/spectres', None)[1:]
print (result)
self.spectres = []
for i in range(0, len(result)):
r = result[i]
s = Spectre(r["name"], r["force"], r["rythm"])
s.color = Color()
s.color.decode(r["color"])
self.spectres.append(s)
# resultJson = json.loads(result)
# print (resultJson)
def startNewRandomSpectre(self):
if self.challengeCount ==0:
r = self.spectres[0]
else :
r = random.choice(self.spectres[1:])
self.startNewSpectreSequence(r)
self.challengeCount = self.challengeCount + 1
def startNewSpectreSequence(self, spectre):
print( "start new spectre : " + spectre.name)
self.currentSeq = SpectreSequence(self, spectre)
self.currentSeq.OnStart()
def terminateCurrentSequence(self):
if self.currentSeq is None:
return
self.currentSeq.OnVictory()
self.currentSeq = None
def update(self, dt):
self.timer += dt
if (self.currentSeq is not None):
self.currentSeq.update(dt)
class Spectre:
def __init__(self, name, force, rythm):
self.name = name
self.rythm = rythm
self.force = force
self.Color = Color()
def __str__(self):
return self.name + " - F " + str(self.force) + " - R " + str(self.rythm)
class SpectreSequence(object):
def __init__(self, game, spectre):
self.game = game
self.spectre = spectre
self.timer = 0
self.isFinished = False
self.distance = io.getDistance()
def isFinished(self):
return self.isFinished
def OnStart(self):
playSound(self.spectre.name + "_apparition.wav")
io.setLed(0,False)
io.setLed(1,False)
io.setLed(2,False)
io.setLed(3,True)
io.setRGB(1, self.spectre.color.r,self.spectre.color.g, self.spectre.color.b, self.spectre.rythm)
def OnVictory(self):
playSound(self.spectre.name + "_disparition.wav")
io.setRGB(1,0,0,0, self.spectre.rythm)
def OnDefeat(self):
pass
def update(self, dt):
self.timer += dt
self.distance = io.getDistance()
class SSCasper(SpectreSequence):
def __init__(self, spectre):
super(spectre, self).__init__(name)
def update(self, dt):
self.timer += dt