tetris.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * File : tetris_modal.c
  3. * This file is part of RTGUI in RT-Thread RTOS
  4. * COPYRIGHT (C) 2010, RT-Thread Development Team
  5. *
  6. * The license and distribution terms for this file may be
  7. * found in the file LICENSE in this distribution or at
  8. * http://www.rt-thread.org/license/LICENSE
  9. *
  10. * Change Logs:
  11. * Date Author Notes
  12. * 2010-08-14 Yi.Qiu first version
  13. */
  14. #include <rtthread.h>
  15. struct rt_tetris;
  16. typedef struct rt_tetris rt_tetris_t;
  17. struct rt_tetris_view;
  18. typedef struct rt_tetris_view rt_tetris_view_t;
  19. typedef rt_err_t (*on_update)(rt_tetris_view_t* thiz, rt_tetris_t* tetris);
  20. struct rt_tetris_view
  21. {
  22. rt_uint32_t width;
  23. rt_uint32_t height;
  24. on_update update;
  25. on_update update_next_brick;
  26. on_update update_level;
  27. on_update update_score_and_lines;
  28. void *private;
  29. };
  30. rt_tetris_t* rt_tetris_create(rt_uint32_t width, rt_uint32_t height);
  31. rt_err_t rt_tetris_destory(rt_tetris_t* thiz);
  32. rt_err_t rt_tetris_start(rt_tetris_t* thiz);
  33. rt_err_t rt_tetris_pause(rt_tetris_t* thiz);
  34. rt_uint32_t rt_tetris_width(rt_tetris_t* thiz);
  35. rt_uint32_t* rt_tetris_next_brick(rt_tetris_t* thiz);
  36. rt_uint32_t rt_tetris_level(rt_tetris_t* thiz);
  37. rt_uint32_t rt_tetris_lines(rt_tetris_t* thiz);
  38. rt_uint32_t rt_tetris_score(rt_tetris_t* thiz);
  39. rt_uint32_t rt_tetris_height(rt_tetris_t* thiz);
  40. rt_bool_t rt_tetris_status(rt_tetris_t* thiz);
  41. rt_err_t rt_tetris_down(rt_tetris_t* thiz);
  42. rt_err_t rt_tetris_left(rt_tetris_t* thiz);
  43. rt_err_t rt_tetris_right(rt_tetris_t* thiz);
  44. rt_err_t rt_tetris_drop(rt_tetris_t* thiz);
  45. rt_err_t rt_tetris_rotate(rt_tetris_t* thiz, rt_bool_t direction);
  46. rt_err_t rt_tetris_add_view(rt_tetris_t* thiz, rt_tetris_view_t* view);
  47. rt_err_t rt_tetris_delete_view(rt_tetris_t* thiz, rt_tetris_view_t* view);
  48. rt_err_t rt_tetris_check_collision(rt_tetris_t* thiz, rt_uint32_t block);
  49. rt_tetris_view_t* rt_tetris_view_create(void* private);
  50. rt_err_t rt_tetris_view_destroy(rt_tetris_view_t* thiz);
  51. void tetris_ui_entry(void* parameter);