Research portable Memory game | Исследовать портируемую игру Память
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

6 ay önce
5 ay önce
6 ay önce
6 ay önce
6 ay önce
5 ay önce
6 ay önce
5 ay önce
6 ay önce
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import copy
  2. class ctx_Controller:
  3. def __init__(self, c):
  4. self.callbacks = []
  5. self.context = c
  6. self.functions = []
  7. self.isProcessingQueue = False
  8. self.queue = []
  9. def executeFunctions(self):
  10. c = self.queue.pop(0)
  11. for f in self.functions:
  12. ctx = f(c)
  13. if ctx.recentField != "none":
  14. self.queue.append(ctx)
  15. self.context = c
  16. self.reportContext()
  17. def processQueue(self):
  18. # Decline recursion.
  19. if self.isProcessingQueue:
  20. return
  21. self.isProcessingQueue = True
  22. while len(self.queue) > 0:
  23. self.executeFunctions()
  24. self.isProcessingQueue = False
  25. def registerCallback(self, cb):
  26. self.callbacks.append(cb)
  27. def registerFieldCallback(self, fieldName, cb):
  28. def execCB(c):
  29. if c.recentField == fieldName:
  30. cb(c)
  31. self.callbacks.append(execCB)
  32. def registerFunction(self, f):
  33. self.functions.append(f)
  34. def registerFunctions(self, funcs):
  35. for f in funcs:
  36. self.functions.append(f)
  37. def reportContext(self):
  38. for cb in self.callbacks:
  39. cb(self.context)
  40. def set(self, fieldName, value):
  41. c = copy.deepcopy(self.context)
  42. c.setField(fieldName, value)
  43. c.recentField = fieldName
  44. self.queue.append(c)
  45. self.processQueue()