raspberry pi zero based drum machine
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

sBall.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import FSM
  2. import utils as u
  3. import menus as m
  4. import random
  5. #====================================
  6. State = type("State", (object,), {})
  7. #====================================
  8. class State(object):
  9. def __init__(self, FSM):
  10. self.FSM = FSM
  11. def Enter(self):
  12. pass
  13. def Execute(self):
  14. pass
  15. def Exit(self):
  16. pass
  17. class Ball(State):
  18. def __init__(self,FSM):
  19. super(Ball, self).__init__(FSM)
  20. def Enter(self):
  21. self.ball_size = 10
  22. self.ballx = self.ball_size
  23. self.bally = self.ball_size
  24. self.ball_speed = 8
  25. self.ball_x_dir = 1
  26. self.ball_y_dir = 1
  27. self.ball2x = self.ball_size + 180
  28. self.ball2y = self.ball_size + 70
  29. self.ball2_x_dir = -1
  30. self.ball2_y_dir = -1
  31. self.xmult = 1.0
  32. o = self.FSM.owner
  33. o.header_text = "Balls"
  34. o.pub.register("beat", self)
  35. if o.keyState[16] > 0 or o.keyState[17] > 0:
  36. pass
  37. else:
  38. u.draw_header(o)
  39. o.update_display(0)
  40. super(Ball, self).Enter()
  41. def Execute(self):
  42. o = self.FSM.owner
  43. m.menu1_actions(self, o)
  44. if o.keyState[16] == 1:
  45. m.draw_menu1(o)
  46. o.update_display(0)
  47. if o.keyState[16] > 0 or o.keyState[17] > 0:
  48. pass
  49. else:
  50. #now = datetime.now()
  51. #current_time = time.strftime("%-I:%M %p")
  52. if self.ballx < (0 + self.ball_size):
  53. self.ball_x_dir = 1
  54. if self.ballx > (o.width - self.ball_size):
  55. self.ball_x_dir = -1
  56. if self.bally < (0 + self.ball_size):
  57. self.ball_y_dir = 1
  58. if self.bally > (o.height - self.ball_size):
  59. self.ball_y_dir = -1
  60. # if self.ballx > (o.width - self.ball_size) or self.ballx < (0 + self.ball_size):
  61. # self.ball_x_dir *= -1
  62. # if self.bally > (o.height - self.ball_size) or self.bally < (0 + self.ball_size):
  63. # self.ball_y_dir *= -1
  64. self.ballx += self.ball_speed * self.ball_x_dir
  65. self.bally += self.ball_speed * self.ball_y_dir
  66. if self.ball2x < (0 + self.ball_size):
  67. self.ball2_x_dir = 1
  68. self.xmult = random.uniform(.6, 1.2)
  69. if self.ball2x > (o.width - self.ball_size):
  70. self.ball2_x_dir = -1
  71. self.xmult = random.uniform(.6, 1.2)
  72. if self.ball2y < (0 + self.ball_size):
  73. self.ball2_y_dir = 1
  74. if self.ball2y > (o.height - self.ball_size):
  75. self.ball2_y_dir = -1
  76. # if self.ball2x > (o.width - self.ball_size) or self.ball2x < (0 + self.ball_size):
  77. # self.ball2_x_dir *= -1
  78. # self.xmult = random.uniform(.8, 1.2)
  79. # if self.ball2y > (o.height - self.ball_size) or self.ball2y < (0 + self.ball_size):
  80. # self.ball2_y_dir *= -1
  81. self.ball2x += (self.ball_speed * self.ball2_x_dir) * self.xmult
  82. self.ball2y += (self.ball_speed * self.ball2_y_dir)
  83. o.draw.rectangle((0, 0, o.width, o.height), outline=0, fill=o.blue)
  84. o.draw.ellipse((self.ballx - self.ball_size, self.bally - self.ball_size, self.ballx + self.ball_size, self.bally + self.ball_size), fill = o.light_grey, outline =o.light_grey)
  85. o.draw.ellipse((self.ball2x - self.ball_size, self.ball2y - self.ball_size, self.ball2x + self.ball_size, self.ball2y + self.ball_size), fill = o.light_grey, outline =o.light_grey)
  86. #o.center_block(current_time, o.h3, [0,0,o.width,o.height], o.pink)
  87. o.update_display(0)
  88. def ReceiveMessage(self, message):
  89. o = self.FSM.owner
  90. u.play_seq(o, message)
  91. def Exit(self):
  92. self.FSM.owner.pub.unregister("beat", self)