Python RGB Matrix games and animations https://www.xythobuz.de/ledmatrix_v2.html
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

camp_pico.py 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. #!/usr/bin/env python3
  2. # ----------------------------------------------------------------------------
  3. # "THE BEER-WARE LICENSE" (Revision 42):
  4. # <xythobuz@xythobuz.de> wrote this file. As long as you retain this notice
  5. # you can do whatever you want with this stuff. If we meet some day, and you
  6. # think this stuff is worth it, you can buy me a beer in return. Thomas Buck
  7. # ----------------------------------------------------------------------------
  8. camp_pink = (251, 72, 196)
  9. camp_green = (63, 255, 33)
  10. # QR code image for "http://ubabot.frubar.net"
  11. # size:25x25
  12. qr_data = [
  13. [
  14. (255, 255, 255),
  15. (255, 255, 255),
  16. (255, 255, 255),
  17. (255, 255, 255),
  18. (255, 255, 255),
  19. (255, 255, 255),
  20. (255, 255, 255),
  21. (0, 0, 0),
  22. (255, 255, 255),
  23. (255, 255, 255),
  24. (0, 0, 0),
  25. (255, 255, 255),
  26. (0, 0, 0),
  27. (255, 255, 255),
  28. (255, 255, 255),
  29. (255, 255, 255),
  30. (255, 255, 255),
  31. (0, 0, 0),
  32. (255, 255, 255),
  33. (255, 255, 255),
  34. (255, 255, 255),
  35. (255, 255, 255),
  36. (255, 255, 255),
  37. (255, 255, 255),
  38. (255, 255, 255),
  39. ],
  40. [
  41. (255, 255, 255),
  42. (0, 0, 0),
  43. (0, 0, 0),
  44. (0, 0, 0),
  45. (0, 0, 0),
  46. (0, 0, 0),
  47. (255, 255, 255),
  48. (0, 0, 0),
  49. (0, 0, 0),
  50. (0, 0, 0),
  51. (0, 0, 0),
  52. (0, 0, 0),
  53. (0, 0, 0),
  54. (0, 0, 0),
  55. (255, 255, 255),
  56. (0, 0, 0),
  57. (255, 255, 255),
  58. (0, 0, 0),
  59. (255, 255, 255),
  60. (0, 0, 0),
  61. (0, 0, 0),
  62. (0, 0, 0),
  63. (0, 0, 0),
  64. (0, 0, 0),
  65. (255, 255, 255),
  66. ],
  67. [
  68. (255, 255, 255),
  69. (0, 0, 0),
  70. (255, 255, 255),
  71. (255, 255, 255),
  72. (255, 255, 255),
  73. (0, 0, 0),
  74. (255, 255, 255),
  75. (0, 0, 0),
  76. (0, 0, 0),
  77. (255, 255, 255),
  78. (255, 255, 255),
  79. (255, 255, 255),
  80. (255, 255, 255),
  81. (0, 0, 0),
  82. (0, 0, 0),
  83. (255, 255, 255),
  84. (0, 0, 0),
  85. (0, 0, 0),
  86. (255, 255, 255),
  87. (0, 0, 0),
  88. (255, 255, 255),
  89. (255, 255, 255),
  90. (255, 255, 255),
  91. (0, 0, 0),
  92. (255, 255, 255),
  93. ],
  94. [
  95. (255, 255, 255),
  96. (0, 0, 0),
  97. (255, 255, 255),
  98. (255, 255, 255),
  99. (255, 255, 255),
  100. (0, 0, 0),
  101. (255, 255, 255),
  102. (0, 0, 0),
  103. (255, 255, 255),
  104. (0, 0, 0),
  105. (255, 255, 255),
  106. (255, 255, 255),
  107. (255, 255, 255),
  108. (255, 255, 255),
  109. (255, 255, 255),
  110. (255, 255, 255),
  111. (0, 0, 0),
  112. (0, 0, 0),
  113. (255, 255, 255),
  114. (0, 0, 0),
  115. (255, 255, 255),
  116. (255, 255, 255),
  117. (255, 255, 255),
  118. (0, 0, 0),
  119. (255, 255, 255),
  120. ],
  121. [
  122. (255, 255, 255),
  123. (0, 0, 0),
  124. (255, 255, 255),
  125. (255, 255, 255),
  126. (255, 255, 255),
  127. (0, 0, 0),
  128. (255, 255, 255),
  129. (0, 0, 0),
  130. (255, 255, 255),
  131. (0, 0, 0),
  132. (255, 255, 255),
  133. (0, 0, 0),
  134. (0, 0, 0),
  135. (255, 255, 255),
  136. (255, 255, 255),
  137. (255, 255, 255),
  138. (255, 255, 255),
  139. (0, 0, 0),
  140. (255, 255, 255),
  141. (0, 0, 0),
  142. (255, 255, 255),
  143. (255, 255, 255),
  144. (255, 255, 255),
  145. (0, 0, 0),
  146. (255, 255, 255),
  147. ],
  148. [
  149. (255, 255, 255),
  150. (0, 0, 0),
  151. (0, 0, 0),
  152. (0, 0, 0),
  153. (0, 0, 0),
  154. (0, 0, 0),
  155. (255, 255, 255),
  156. (0, 0, 0),
  157. (255, 255, 255),
  158. (255, 255, 255),
  159. (255, 255, 255),
  160. (255, 255, 255),
  161. (0, 0, 0),
  162. (255, 255, 255),
  163. (255, 255, 255),
  164. (0, 0, 0),
  165. (0, 0, 0),
  166. (0, 0, 0),
  167. (255, 255, 255),
  168. (0, 0, 0),
  169. (0, 0, 0),
  170. (0, 0, 0),
  171. (0, 0, 0),
  172. (0, 0, 0),
  173. (255, 255, 255),
  174. ],
  175. [
  176. (255, 255, 255),
  177. (255, 255, 255),
  178. (255, 255, 255),
  179. (255, 255, 255),
  180. (255, 255, 255),
  181. (255, 255, 255),
  182. (255, 255, 255),
  183. (0, 0, 0),
  184. (255, 255, 255),
  185. (0, 0, 0),
  186. (255, 255, 255),
  187. (0, 0, 0),
  188. (255, 255, 255),
  189. (0, 0, 0),
  190. (255, 255, 255),
  191. (0, 0, 0),
  192. (255, 255, 255),
  193. (0, 0, 0),
  194. (255, 255, 255),
  195. (255, 255, 255),
  196. (255, 255, 255),
  197. (255, 255, 255),
  198. (255, 255, 255),
  199. (255, 255, 255),
  200. (255, 255, 255),
  201. ],
  202. [
  203. (0, 0, 0),
  204. (0, 0, 0),
  205. (0, 0, 0),
  206. (0, 0, 0),
  207. (0, 0, 0),
  208. (0, 0, 0),
  209. (0, 0, 0),
  210. (0, 0, 0),
  211. (255, 255, 255),
  212. (0, 0, 0),
  213. (255, 255, 255),
  214. (0, 0, 0),
  215. (255, 255, 255),
  216. (0, 0, 0),
  217. (255, 255, 255),
  218. (0, 0, 0),
  219. (255, 255, 255),
  220. (0, 0, 0),
  221. (0, 0, 0),
  222. (0, 0, 0),
  223. (0, 0, 0),
  224. (0, 0, 0),
  225. (0, 0, 0),
  226. (0, 0, 0),
  227. (0, 0, 0),
  228. ],
  229. [
  230. (255, 255, 255),
  231. (0, 0, 0),
  232. (0, 0, 0),
  233. (0, 0, 0),
  234. (255, 255, 255),
  235. (0, 0, 0),
  236. (255, 255, 255),
  237. (255, 255, 255),
  238. (255, 255, 255),
  239. (255, 255, 255),
  240. (0, 0, 0),
  241. (0, 0, 0),
  242. (255, 255, 255),
  243. (0, 0, 0),
  244. (0, 0, 0),
  245. (0, 0, 0),
  246. (255, 255, 255),
  247. (255, 255, 255),
  248. (255, 255, 255),
  249. (255, 255, 255),
  250. (255, 255, 255),
  251. (255, 255, 255),
  252. (0, 0, 0),
  253. (0, 0, 0),
  254. (255, 255, 255),
  255. ],
  256. [
  257. (255, 255, 255),
  258. (255, 255, 255),
  259. (0, 0, 0),
  260. (0, 0, 0),
  261. (0, 0, 0),
  262. (255, 255, 255),
  263. (0, 0, 0),
  264. (255, 255, 255),
  265. (255, 255, 255),
  266. (255, 255, 255),
  267. (0, 0, 0),
  268. (255, 255, 255),
  269. (255, 255, 255),
  270. (255, 255, 255),
  271. (0, 0, 0),
  272. (255, 255, 255),
  273. (255, 255, 255),
  274. (0, 0, 0),
  275. (0, 0, 0),
  276. (0, 0, 0),
  277. (255, 255, 255),
  278. (255, 255, 255),
  279. (0, 0, 0),
  280. (255, 255, 255),
  281. (0, 0, 0),
  282. ],
  283. [
  284. (0, 0, 0),
  285. (0, 0, 0),
  286. (0, 0, 0),
  287. (255, 255, 255),
  288. (0, 0, 0),
  289. (255, 255, 255),
  290. (255, 255, 255),
  291. (0, 0, 0),
  292. (255, 255, 255),
  293. (0, 0, 0),
  294. (255, 255, 255),
  295. (255, 255, 255),
  296. (0, 0, 0),
  297. (255, 255, 255),
  298. (0, 0, 0),
  299. (255, 255, 255),
  300. (255, 255, 255),
  301. (255, 255, 255),
  302. (0, 0, 0),
  303. (0, 0, 0),
  304. (255, 255, 255),
  305. (255, 255, 255),
  306. (255, 255, 255),
  307. (0, 0, 0),
  308. (0, 0, 0),
  309. ],
  310. [
  311. (255, 255, 255),
  312. (255, 255, 255),
  313. (0, 0, 0),
  314. (0, 0, 0),
  315. (0, 0, 0),
  316. (255, 255, 255),
  317. (0, 0, 0),
  318. (0, 0, 0),
  319. (0, 0, 0),
  320. (0, 0, 0),
  321. (255, 255, 255),
  322. (255, 255, 255),
  323. (0, 0, 0),
  324. (0, 0, 0),
  325. (0, 0, 0),
  326. (0, 0, 0),
  327. (0, 0, 0),
  328. (0, 0, 0),
  329. (0, 0, 0),
  330. (0, 0, 0),
  331. (0, 0, 0),
  332. (0, 0, 0),
  333. (255, 255, 255),
  334. (255, 255, 255),
  335. (0, 0, 0),
  336. ],
  337. [
  338. (255, 255, 255),
  339. (0, 0, 0),
  340. (255, 255, 255),
  341. (0, 0, 0),
  342. (0, 0, 0),
  343. (0, 0, 0),
  344. (255, 255, 255),
  345. (0, 0, 0),
  346. (0, 0, 0),
  347. (0, 0, 0),
  348. (0, 0, 0),
  349. (255, 255, 255),
  350. (0, 0, 0),
  351. (0, 0, 0),
  352. (255, 255, 255),
  353. (0, 0, 0),
  354. (0, 0, 0),
  355. (255, 255, 255),
  356. (255, 255, 255),
  357. (255, 255, 255),
  358. (0, 0, 0),
  359. (255, 255, 255),
  360. (255, 255, 255),
  361. (255, 255, 255),
  362. (255, 255, 255),
  363. ],
  364. [
  365. (255, 255, 255),
  366. (255, 255, 255),
  367. (0, 0, 0),
  368. (0, 0, 0),
  369. (255, 255, 255),
  370. (255, 255, 255),
  371. (0, 0, 0),
  372. (255, 255, 255),
  373. (0, 0, 0),
  374. (255, 255, 255),
  375. (0, 0, 0),
  376. (0, 0, 0),
  377. (255, 255, 255),
  378. (0, 0, 0),
  379. (255, 255, 255),
  380. (255, 255, 255),
  381. (255, 255, 255),
  382. (0, 0, 0),
  383. (0, 0, 0),
  384. (0, 0, 0),
  385. (255, 255, 255),
  386. (0, 0, 0),
  387. (0, 0, 0),
  388. (255, 255, 255),
  389. (0, 0, 0),
  390. ],
  391. [
  392. (0, 0, 0),
  393. (0, 0, 0),
  394. (255, 255, 255),
  395. (255, 255, 255),
  396. (255, 255, 255),
  397. (0, 0, 0),
  398. (255, 255, 255),
  399. (255, 255, 255),
  400. (0, 0, 0),
  401. (0, 0, 0),
  402. (0, 0, 0),
  403. (255, 255, 255),
  404. (255, 255, 255),
  405. (255, 255, 255),
  406. (255, 255, 255),
  407. (255, 255, 255),
  408. (255, 255, 255),
  409. (255, 255, 255),
  410. (0, 0, 0),
  411. (255, 255, 255),
  412. (0, 0, 0),
  413. (255, 255, 255),
  414. (255, 255, 255),
  415. (0, 0, 0),
  416. (0, 0, 0),
  417. ],
  418. [
  419. (0, 0, 0),
  420. (0, 0, 0),
  421. (0, 0, 0),
  422. (0, 0, 0),
  423. (255, 255, 255),
  424. (0, 0, 0),
  425. (0, 0, 0),
  426. (0, 0, 0),
  427. (255, 255, 255),
  428. (255, 255, 255),
  429. (0, 0, 0),
  430. (255, 255, 255),
  431. (0, 0, 0),
  432. (0, 0, 0),
  433. (0, 0, 0),
  434. (0, 0, 0),
  435. (0, 0, 0),
  436. (255, 255, 255),
  437. (255, 255, 255),
  438. (255, 255, 255),
  439. (0, 0, 0),
  440. (255, 255, 255),
  441. (255, 255, 255),
  442. (255, 255, 255),
  443. (0, 0, 0),
  444. ],
  445. [
  446. (255, 255, 255),
  447. (255, 255, 255),
  448. (0, 0, 0),
  449. (0, 0, 0),
  450. (0, 0, 0),
  451. (0, 0, 0),
  452. (255, 255, 255),
  453. (0, 0, 0),
  454. (0, 0, 0),
  455. (255, 255, 255),
  456. (255, 255, 255),
  457. (0, 0, 0),
  458. (255, 255, 255),
  459. (0, 0, 0),
  460. (0, 0, 0),
  461. (255, 255, 255),
  462. (255, 255, 255),
  463. (255, 255, 255),
  464. (255, 255, 255),
  465. (255, 255, 255),
  466. (255, 255, 255),
  467. (255, 255, 255),
  468. (255, 255, 255),
  469. (0, 0, 0),
  470. (0, 0, 0),
  471. ],
  472. [
  473. (0, 0, 0),
  474. (0, 0, 0),
  475. (0, 0, 0),
  476. (0, 0, 0),
  477. (0, 0, 0),
  478. (0, 0, 0),
  479. (0, 0, 0),
  480. (0, 0, 0),
  481. (255, 255, 255),
  482. (255, 255, 255),
  483. (255, 255, 255),
  484. (0, 0, 0),
  485. (0, 0, 0),
  486. (0, 0, 0),
  487. (255, 255, 255),
  488. (0, 0, 0),
  489. (255, 255, 255),
  490. (0, 0, 0),
  491. (0, 0, 0),
  492. (0, 0, 0),
  493. (255, 255, 255),
  494. (0, 0, 0),
  495. (255, 255, 255),
  496. (0, 0, 0),
  497. (0, 0, 0),
  498. ],
  499. [
  500. (255, 255, 255),
  501. (255, 255, 255),
  502. (255, 255, 255),
  503. (255, 255, 255),
  504. (255, 255, 255),
  505. (255, 255, 255),
  506. (255, 255, 255),
  507. (0, 0, 0),
  508. (255, 255, 255),
  509. (0, 0, 0),
  510. (255, 255, 255),
  511. (0, 0, 0),
  512. (0, 0, 0),
  513. (255, 255, 255),
  514. (255, 255, 255),
  515. (0, 0, 0),
  516. (255, 255, 255),
  517. (0, 0, 0),
  518. (255, 255, 255),
  519. (0, 0, 0),
  520. (255, 255, 255),
  521. (255, 255, 255),
  522. (0, 0, 0),
  523. (0, 0, 0),
  524. (0, 0, 0),
  525. ],
  526. [
  527. (255, 255, 255),
  528. (0, 0, 0),
  529. (0, 0, 0),
  530. (0, 0, 0),
  531. (0, 0, 0),
  532. (0, 0, 0),
  533. (255, 255, 255),
  534. (0, 0, 0),
  535. (0, 0, 0),
  536. (0, 0, 0),
  537. (255, 255, 255),
  538. (0, 0, 0),
  539. (255, 255, 255),
  540. (0, 0, 0),
  541. (0, 0, 0),
  542. (255, 255, 255),
  543. (255, 255, 255),
  544. (0, 0, 0),
  545. (0, 0, 0),
  546. (0, 0, 0),
  547. (255, 255, 255),
  548. (255, 255, 255),
  549. (255, 255, 255),
  550. (255, 255, 255),
  551. (0, 0, 0),
  552. ],
  553. [
  554. (255, 255, 255),
  555. (0, 0, 0),
  556. (255, 255, 255),
  557. (255, 255, 255),
  558. (255, 255, 255),
  559. (0, 0, 0),
  560. (255, 255, 255),
  561. (0, 0, 0),
  562. (255, 255, 255),
  563. (255, 255, 255),
  564. (255, 255, 255),
  565. (255, 255, 255),
  566. (255, 255, 255),
  567. (0, 0, 0),
  568. (0, 0, 0),
  569. (0, 0, 0),
  570. (255, 255, 255),
  571. (255, 255, 255),
  572. (255, 255, 255),
  573. (255, 255, 255),
  574. (255, 255, 255),
  575. (0, 0, 0),
  576. (255, 255, 255),
  577. (0, 0, 0),
  578. (0, 0, 0),
  579. ],
  580. [
  581. (255, 255, 255),
  582. (0, 0, 0),
  583. (255, 255, 255),
  584. (255, 255, 255),
  585. (255, 255, 255),
  586. (0, 0, 0),
  587. (255, 255, 255),
  588. (0, 0, 0),
  589. (0, 0, 0),
  590. (255, 255, 255),
  591. (255, 255, 255),
  592. (0, 0, 0),
  593. (255, 255, 255),
  594. (255, 255, 255),
  595. (255, 255, 255),
  596. (0, 0, 0),
  597. (0, 0, 0),
  598. (255, 255, 255),
  599. (255, 255, 255),
  600. (0, 0, 0),
  601. (0, 0, 0),
  602. (255, 255, 255),
  603. (255, 255, 255),
  604. (255, 255, 255),
  605. (255, 255, 255),
  606. ],
  607. [
  608. (255, 255, 255),
  609. (0, 0, 0),
  610. (255, 255, 255),
  611. (255, 255, 255),
  612. (255, 255, 255),
  613. (0, 0, 0),
  614. (255, 255, 255),
  615. (0, 0, 0),
  616. (0, 0, 0),
  617. (255, 255, 255),
  618. (255, 255, 255),
  619. (255, 255, 255),
  620. (0, 0, 0),
  621. (0, 0, 0),
  622. (255, 255, 255),
  623. (0, 0, 0),
  624. (255, 255, 255),
  625. (255, 255, 255),
  626. (255, 255, 255),
  627. (255, 255, 255),
  628. (0, 0, 0),
  629. (0, 0, 0),
  630. (0, 0, 0),
  631. (255, 255, 255),
  632. (0, 0, 0),
  633. ],
  634. [
  635. (255, 255, 255),
  636. (0, 0, 0),
  637. (0, 0, 0),
  638. (0, 0, 0),
  639. (0, 0, 0),
  640. (0, 0, 0),
  641. (255, 255, 255),
  642. (0, 0, 0),
  643. (0, 0, 0),
  644. (0, 0, 0),
  645. (0, 0, 0),
  646. (255, 255, 255),
  647. (255, 255, 255),
  648. (0, 0, 0),
  649. (255, 255, 255),
  650. (0, 0, 0),
  651. (0, 0, 0),
  652. (0, 0, 0),
  653. (255, 255, 255),
  654. (255, 255, 255),
  655. (255, 255, 255),
  656. (255, 255, 255),
  657. (255, 255, 255),
  658. (255, 255, 255),
  659. (0, 0, 0),
  660. ],
  661. [
  662. (255, 255, 255),
  663. (255, 255, 255),
  664. (255, 255, 255),
  665. (255, 255, 255),
  666. (255, 255, 255),
  667. (255, 255, 255),
  668. (255, 255, 255),
  669. (0, 0, 0),
  670. (255, 255, 255),
  671. (0, 0, 0),
  672. (0, 0, 0),
  673. (0, 0, 0),
  674. (0, 0, 0),
  675. (0, 0, 0),
  676. (0, 0, 0),
  677. (255, 255, 255),
  678. (0, 0, 0),
  679. (255, 255, 255),
  680. (0, 0, 0),
  681. (0, 0, 0),
  682. (0, 0, 0),
  683. (0, 0, 0),
  684. (255, 255, 255),
  685. (255, 255, 255),
  686. (255, 255, 255),
  687. ],
  688. ]
  689. if True:#__name__ == "__main__":
  690. from solid import Solid
  691. from life import GameOfLife
  692. from net import CheckHTTP
  693. from qr import QRScreen
  694. from scroll import ScrollText
  695. from splash import SplashScreen
  696. from manager import Manager
  697. url = "http://ubabot.frubar.net"
  698. import util
  699. t = util.getTarget()
  700. # Loading fonts and graphics takes a while.
  701. # So show a splash screen while the user waits.
  702. splash = SplashScreen(t)
  703. t.loop_start()
  704. splash.draw()
  705. t.loop_end()
  706. # UbaBot is online
  707. success = Manager(t)
  708. success.add(ScrollText(t, "Visit UbaBot Cocktail machine at FruBar village for drinks!", "bitmap8", 1, 10, camp_pink))
  709. success.add(Solid(t, 1.0))
  710. success.add(QRScreen(t, qr_data, 30.0, "Drinks", "bitmap6", (255, 255, 255), (0, 0, 0)))
  711. success.add(Solid(t, 1.0))
  712. # UbaBot is offline
  713. fail = Manager(t)
  714. fail.add(ScrollText(t, "The UbaBot Cocktail machine is closed. Please come back later!", "bitmap8", 1, 10, camp_pink))
  715. fail.add(Solid(t, 1.0))
  716. fail.add(GameOfLife(t, 20, (0, 255, 0), (0, 0, 0), None, 2.0))
  717. fail.add(Solid(t, 1.0))
  718. # UbaBot status checker
  719. d = CheckHTTP(url)
  720. d.success(success)
  721. d.fail(fail)
  722. # Main "Menu"
  723. m = Manager(t)
  724. m.add(ScrollText(t, "#CCCAMP23", "bitmap8", 1, 10, camp_green))
  725. m.add(Solid(t, 1.0))
  726. m.add(d) # HTTP Check, either "success" or "fail"
  727. m.add(Solid(t, 1.0))
  728. m.restart()
  729. t.loop(m.draw)