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
|
import api.Sprite
from api.Sprite import CSprite
#Piece class hereda de CSprite
class Piece(CSprite):
STATE_STALE = 0
STATE_DRAG = 1
STATE_ADJUST = 2
STATE_RETURN = 3
STATE_OK = 4
mState = STATE_NONE
MIN_DISTANCE = 40
TIME_RETURN = 15
TIME_ADJUST = 7.5
RADIUS_COLLISION = 10
def init(self, aXOrigin, aYOrigin, aXDest, aYDest):
setState(STATE_STALE)
mXOrigin = aXOrigin
mYOrigin = aYOrigin
mXDest = aXDest
mYDest = aYdest
setMaxVel(10, 10)
#image = ....
def update(self):
if (aState == STATE_STALE):
if (mouse se cliquea encima del objeto):
self.setState(STATE_DRAG)
return
if (aState = STATE_DRAG):
x = mouse x
y = mouse y
if (se suelta el mouse):
if CMath.dist(x, y, mXDest, mYDest) < MIN_DISTANCE):
self.setState(STATE_ADJUST)
else:
self.setState(STATE_RETURN)
if (aState == STATE_ADJUST):
if (CMath.dist(x, y, mXDest, mYDest) < RADIUS_COLLISION):
self.setState(STATE_OK)
if (aState == STATE_RETURN):
if (CMath.dist(x, y, mXOrigin, mYOrigin) < RADIUS_COLLISION):
play(Sonido mal)
self.setState(STATE_STALE)
if (aState == STATE_OK):
return
def render(self):
pass
def destroy(self):
pass
#eliminar la imagen creada
def setState(aState):
if (aState == STATE_STALE):
x = mXOrigin
y = mYOrigin
velX = 0
velY = 0
if (aState = STATE_DRAG):
velX = 0
velY = 0
if (aState == STATE_ADJUST):
velX = (mXDest - x) / TIME_ADJUST
velY = (mXDest - y) / TIME_ADJUST
if (aState == STATE_RETURN):
velX = (mXOrigin - x) / TIME_RETURN
velY = (mXOrigin - y) / TIME_RETURN
if (aState == STATE_OK):
x = mXDest
y = mYDest
xVel = 0
yVel = 0
#play(Sonido OK)
mState = aState
def getState(self):
return mState
|