雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304

MicroPython动手做(35)——体验小游戏

2020-6-26 07:56:27 显示全部楼层
000.jpg

小游戏 (体积较小、玩法简单的游戏)
小游戏是一个较模糊的概念,它是相对于体积庞大的单机游戏及网络游戏而言的,泛指所有体积较小、玩法简单的游戏,通常这类游戏以休闲益智类为主,有单机版有网页版,在网页上嵌入的多为FLASH格式。当下小游戏主要是指在线玩的flash版本游戏,统称小游戏,其实小游戏还包含单机游戏,小型游戏机等。一般游戏大小小于10m的游戏都统称为小游戏,一些街机类小游戏。因其游戏安装简便,耐玩性强,无依赖性而广受白领及小朋友的喜爱。

“小游戏”这个词的型含义其实很简单,它不是一些大的游戏,不必花费更多的时间和精力。小游戏是原始的游戏娱乐方式,小游戏本身是为了叫人们在工作,学习后的一种娱乐、休闲的一种方式,不是为了叫玩家为之花费金钱、花费精力,更不是叫玩家为他痴迷。小游戏也可以理解为“Flash游戏”,是以SWF为后缀的游戏的总称.这些游戏是通过Flash软件和 Flash 编程语言 Flash ActionScript 制作而成。由于Flash是矢量软件,所以小游戏放大后几乎不影响画面效果。Flash小游戏是一种新兴起的游戏形式,以游戏简单,操作方便,绿色,无需安装,文件体积小等优点渐渐被广大网友喜爱。

您需要登录后才可以评论 登录 | 立即注册

最新评论

楼层直达:

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 12:04:56 显示全部楼层
3、贪吃蛇(EVE)

开机时,由6个像素点组成的贪吃蛇出现在屏幕中央,默认向右移动,按下A或B,会逆时针或顺时针转向。

  1. //MicroPython动手做(35)——小游戏
  2. //贪吃蛇

  3. #include <MPython.h>
  4. #include <SimpleList.h>

  5. // 动态变量
  6. volatile float     mind_n_ShiWux, mind_n_ShiWuy, mind_n_FangXiange, mind_n_x, mind_n_y,
  7.                    mind_n_ShenChangc, mind_n_FenShuf, mind_n_SheToux, mind_n_SheTouy,
  8.                    mind_n_LieBiaod;
  9. SimpleList<String> mind_l_X, mind_l_Y;
  10. // 函数声明
  11. void DF_ChiDaoShiWu();
  12. void DF_PengBi();
  13. void DF_KaiJiDongHua();
  14. void DF_TanChiSheHuoDong();
  15. void DF_ChuShiHuaChangDu();
  16. void DF_AnJian();
  17. // 静态常量
  18. const uint8_t imageMatrix[][1024] = {
  19.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfe,0x7f,0xef,0x7f,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf2,0x5f,0xfe,0x4f,0xef,0x3f,0xf3,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xf1,0x4f,0xd3,0x7f,0xf3,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0x7,0xf0,0x4f,0x80,0x7f,0xc2,0x7e,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0x87,0xf8,0x7f,0x80,0x7f,0xc2,0x7e,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf4,0x6f,0xe3,0x1f,0xce,0x5f,0xd2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0x2f,0xf1,0x3f,0x9f,0xff,0xe1,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc6,0xef,0xec,0xdb,0xcd,0xdf,0xd2,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc6,0xef,0xec,0xdb,0xcd,0xdf,0xd2,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xe3,0xfc,0xbf,0x73,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x9f,0xbe,0x3f,0x38,0xf,0xfb,0x3c,0x30,0x80,0xe0,0x73,0xff,0xff,0xff,0xff,0xfb,0x9f,0xbe,0x3f,0x38,0xf,0xfb,0x3c,0x30,0x80,0xe0,0x73,0xff,0xff,0xff,0xff,0xe7,0xdf,0x9f,0x1e,0x39,0xef,0xe7,0xce,0x7b,0xde,0xf6,0x73,0xff,0xff,0xff,0xff,0xcf,0xff,0x4f,0x4e,0x39,0xdf,0xcf,0xef,0x7b,0xdf,0xf7,0x7b,0xff,0xff,0xff,0xff,0xcf,0xff,0x4f,0x65,0x38,0x1f,0xcf,0xe7,0x37,0xc1,0xf4,0xfb,0xff,0xff,0xff,0xff,0xcf,0xde,0xe7,0x63,0x39,0xdf,0xef,0xef,0xb7,0xdf,0xf6,0x7b,0xff,0xff,0xff,0xff,0xcf,0xde,0xe7,0x63,0x39,0xdf,0xef,0xef,0xb7,0xdf,0xf6,0x7b,0xff,0xff,0xff,0xff,0xe7,0xde,0xe7,0x73,0x39,0xf7,0xe7,0xcf,0x8f,0xdf,0x77,0x3f,0xff,0xff,0xff,0xff,0xf3,0xbc,0xf3,0x1f,0xf8,0x7,0xfb,0xbf,0xdf,0x80,0x43,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  20.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0x63,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x3d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xfe,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xcf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfd,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7,0xff,0xff,0xff,0xfe,0xff,0xfb,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x3,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xc3,0xe3,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xf7,0xff,0xff,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xc7,0xf1,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0x9c,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xf1,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xc3,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x3,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0x80,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0,0x3f,0xff,0xff,0xff,0xff,0xfc,0x3f,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff,0xc,0x1f,0xff,0xff,0xfc,0x3f,0xff,0xbf,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0x3f,0x1f,0xff,0xff,0xf0,0xf,0xff,0xff,0xff,0xff,0xfd,0xf7,0xff,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xe0,0x7,0xff,0xcf,0xff,0xff,0xf7,0xef,0xff,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xc3,0x87,0xff,0xef,0xff,0xff,0xe7,0xcf,0xff,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xc7,0xe3,0xff,0xf7,0xff,0xff,0xff,0xf8,0x7f,0xff,0xff,0xfe,0x3f,0xf,0xff,0xff,0x8f,0xe3,0xff,0xfd,0xff,0xff,0x3f,0xcf,0xbf,0xff,0xff,0xfe,0x1f,0x1f,0xff,0xff,0x8f,0xe3,0xff,0xfe,0x7f,0xfe,0xef,0x3f,0xbf,0xbf,0xff,0xff,0xc,0x1f,0xff,0xff,0x8f,0xe3,0xff,0xff,0x7f,0xfd,0xff,0xff,0xff,0x1f,0xff,0xff,0x0,0x3f,0xff,0xff,0xc7,0xe3,0xff,0xff,0xf8,0x7f,0xdf,0xff,0xff,0xdf,0xff,0xff,0xc0,0xff,0xff,0xff,0xc7,0xc3,0xff,0xff,0xf7,0x7f,0xbf,0xff,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x7,0xff,0xff,0xf7,0x7f,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdc,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf8,0xfd,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfe,0xe9,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  21.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0x63,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x5f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x3d,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xfe,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x7f,0xff,0xff,0xff,0xff,0xff,0x3e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x80,0x1f,0xff,0xff,0xff,0xff,0xfb,0xff,0xcf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xe,0x1f,0xff,0xff,0xff,0xff,0xf7,0xff,0xfd,0xff,0xbf,0xff,0xff,0xff,0xff,0xfe,0x3f,0x1f,0xff,0xff,0xff,0xff,0x9f,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xff,0xfe,0xff,0xfb,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xfe,0x3f,0xf,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xfe,0x1f,0x1f,0xff,0xff,0xff,0xf7,0xff,0xff,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x0,0x1f,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0x9c,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x3f,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x0,0x3f,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x3e,0x3f,0xff,0x7f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xfc,0x7e,0x3f,0xfc,0x3f,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xfc,0x7f,0x1f,0xff,0xbf,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xc0,0x7,0xff,0xff,0xfc,0x7f,0x1f,0xff,0xff,0xff,0xff,0xfd,0xf7,0xff,0xff,0xff,0x87,0x87,0xff,0xff,0xfc,0x7f,0x1f,0xff,0xcf,0xff,0xff,0xf7,0xef,0xff,0xff,0xff,0x8f,0xc7,0xff,0xff,0xfc,0x7e,0x1f,0xff,0xef,0xff,0xff,0xe7,0xcf,0xff,0xff,0xff,0x8f,0xe3,0xff,0xff,0xfc,0x3e,0x3f,0xff,0xf7,0xff,0xff,0xff,0xf8,0x7f,0xff,0xff,0x8f,0xe3,0xff,0xff,0xfe,0x0,0x3f,0xff,0xfd,0xff,0xff,0x3f,0xcf,0xbf,0xff,0xff,0x8f,0xe3,0xff,0xff,0xff,0x0,0x7f,0xff,0xfe,0x7f,0xfe,0xef,0x3f,0xbf,0xbf,0xff,0x8f,0xc3,0xff,0xff,0xff,0x81,0xff,0xff,0xff,0x7f,0xfd,0xff,0xff,0xff,0x1f,0xff,0x87,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xdf,0xff,0xff,0xdf,0xff,0xc0,0x7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xbf,0xff,0xed,0xff,0xff,0xe0,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xff,0xff,0xf7,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdc,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf8,0xfd,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfe,0xe9,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  22.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfe,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x79,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xfc,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7d,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x9f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xfb,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x1f,0xff,0xff,0xff,0xfd,0xff,0xf7,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xf,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x8f,0x87,0xff,0xff,0xff,0xf7,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xc7,0xff,0xff,0xff,0xef,0xff,0xfe,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xc7,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x39,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xc7,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xc7,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0x8f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0xf,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf6,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xff,0xff,0xfd,0xf7,0xff,0xff,0xff,0xff,0x7,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xc0,0xff,0xff,0x9f,0xff,0xff,0xef,0xdf,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0x80,0x3f,0xff,0xdf,0xff,0xff,0xcf,0x9f,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0x0,0x1f,0xff,0xef,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xfe,0x1e,0x1f,0xff,0xfb,0xff,0xff,0x7f,0x1f,0x7f,0xff,0xff,0xff,0xf1,0xff,0xff,0xfe,0x3f,0x1f,0xff,0xfc,0xff,0xfc,0xde,0x7f,0x7f,0x7f,0xff,0xff,0xf1,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xfe,0xff,0xfb,0xff,0x7f,0xfe,0x3f,0xff,0xff,0xe1,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xf0,0xff,0xbf,0xff,0xff,0xbf,0xff,0xff,0x3,0xff,0xff,0xfe,0x3f,0x8f,0xff,0xff,0xee,0xff,0x7f,0xff,0xdb,0xff,0xff,0xff,0x7,0xff,0xff,0xfe,0x3f,0x1f,0xff,0xff,0xee,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0x1f,0xff,0xff,0xfe,0x1e,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x7f,0xff,0xff,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xff,0xff,0xff,0xb9,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xf1,0xfb,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfd,0xd3,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  23.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xc1,0xfe,0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xfe,0x3c,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x83,0x7,0xff,0xff,0xff,0xff,0xef,0xff,0xf9,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0x8f,0xc7,0xff,0xff,0xff,0xff,0xbf,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe3,0xff,0xff,0xff,0xfd,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe3,0xff,0xff,0xff,0xfb,0xff,0xf7,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0x8f,0xc3,0xff,0xff,0xff,0xf7,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xb9,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xf,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0x9b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0xff,0xf7,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x0,0xff,0xfe,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x38,0x7f,0xf6,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7c,0x3f,0xf9,0x7f,0xff,0xff,0xfd,0x77,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xf8,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xf8,0xfe,0x3f,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xf8,0xfe,0x3f,0xff,0xdf,0xff,0xff,0xef,0xdf,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xf8,0xfe,0x3f,0xff,0xdf,0xff,0xff,0xcf,0x9f,0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xfc,0x7c,0x3f,0xff,0xf7,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xfc,0x38,0x7f,0xff,0xfb,0xff,0xff,0x7f,0x5f,0x3f,0xff,0xff,0xff,0xff,0x8f,0xff,0xfe,0x0,0xff,0xff,0xfc,0xff,0xfc,0xcf,0x3f,0x3f,0x3f,0xff,0xff,0xff,0x1f,0xff,0xff,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x3f,0xff,0xff,0xff,0x1f,0xff,0xff,0xc7,0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,0xdd,0xbf,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0x7f,0xef,0xdb,0xbf,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x7d,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbd,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xfc,0xfb,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xf9,0xfb,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfd,0xdb,0xfc,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  24.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xef,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xef,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0xe7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xbf,0xcf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xdf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xf8,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0x9f,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xbf,0xff,0x7f,0xbf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x3f,0xff,0xff,0xfe,0xff,0xff,0xff,0xdf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xe,0x1f,0xff,0xff,0xfe,0xff,0xff,0xef,0xdf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x1f,0xff,0xff,0xfd,0xff,0xff,0xff,0xf1,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x8f,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x1f,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xef,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xff,0xff,0xff,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0xff,0xf9,0xff,0xff,0xfc,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x0,0x7f,0xfd,0xff,0xff,0xfd,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x38,0x7f,0xfe,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7e,0x3f,0xff,0xbf,0xff,0xef,0xe9,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xfe,0x3f,0xff,0xcf,0xff,0x9d,0xe7,0xf7,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xfe,0x3f,0xff,0xfc,0x7,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xfe,0x3f,0xff,0xff,0x4f,0xff,0xff,0xfb,0xb3,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7e,0x3f,0xff,0xfe,0xcf,0xef,0xff,0xf9,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7c,0x3f,0xff,0xfd,0xef,0xff,0xfe,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x0,0x7f,0xff,0xff,0xef,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x0,0xff,0xff,0xfb,0xff,0xef,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x81,0xff,0xff,0xfe,0xff,0x6f,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xdf,0x79,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0x3f,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xb7,0x3f,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  25.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xef,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xef,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0xe7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xbf,0xcf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xdf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xf8,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0x9f,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xbf,0xff,0x7f,0xbf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xdf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xfe,0xff,0xff,0xef,0xdf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xf1,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xef,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xff,0xff,0xff,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xfc,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xfd,0xff,0xff,0xfd,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x81,0xff,0xff,0xfe,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x0,0x7f,0xff,0xff,0xbf,0xff,0xef,0xe9,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x18,0x7f,0xff,0xff,0xcf,0xff,0x9d,0xe7,0xf7,0xe7,0xff,0xff,0xff,0xff,0xff,0xfc,0x7e,0x3f,0xff,0xff,0xfc,0x7,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xfc,0x7e,0x3f,0xff,0xff,0xff,0x4f,0xff,0xff,0xfb,0xb3,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x3f,0xff,0xff,0xfe,0xcf,0xef,0xff,0xf9,0xf7,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x3f,0xff,0xff,0xfd,0xef,0xff,0xfe,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xfc,0x7e,0x3f,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xfc,0x7e,0x3f,0xff,0xff,0xfb,0xff,0xef,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xfe,0x18,0x7f,0xff,0xff,0xfe,0xff,0x6f,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xfe,0x0,0x7f,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0xfb,0xff,0xff,0xdf,0x79,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0x3f,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xb7,0x3f,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  26.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xdf,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xec,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3f,0xe7,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xdf,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xdf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0x3f,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xbf,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0x7f,0xff,0xff,0xdf,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xfd,0xff,0xff,0xff,0xf8,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xf7,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xe7,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xf9,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xf7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0xff,0xff,0xff,0xdf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xfe,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf9,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xf1,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0x8c,0xe7,0xf3,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x1,0xff,0xff,0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0x6f,0xff,0xff,0xfd,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xfe,0xef,0xf7,0xff,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x3f,0xff,0xff,0xef,0xbf,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe,0x1f,0xff,0xfd,0xf7,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x1f,0xff,0xfd,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x9f,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x9f,0xff,0xfb,0xef,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x9f,0xff,0xfb,0xff,0xff,0xf7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x9f,0xff,0xff,0xff,0xff,0xdf,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x1f,0xff,0xfd,0xff,0xff,0x3f,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe,0x1f,0xff,0xff,0xff,0x33,0x3f,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x3f,0xff,0xff,0x7f,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x7f,0xff,0xff,0x7f,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0x9f,0x97,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  27.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xbf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xd1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x9f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0x7f,0xbf,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xbf,0x7f,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xe3,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfe,0x3f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xbf,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xbf,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5f,0xff,0xff,0xff,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xfb,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xe7,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xdf,0xd7,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfe,0x33,0xdf,0xcf,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xbf,0xff,0xff,0xf7,0x6f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xf9,0xbf,0xdf,0xff,0xf2,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0xff,0xff,0x9f,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7,0xff,0xff,0xf7,0xdb,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0x9f,0xff,0xff,0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xf7,0xff,0xff,0x7e,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0xf7,0xff,0xfe,0x7f,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0xfc,0xce,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7,0xff,0xff,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,0xff,0xfe,0x7f,0x4f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  28.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0x7f,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0x47,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xff,0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0x3d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcd,0xfe,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3e,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xc7,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xfc,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0x88,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x3f,0xff,0xff,0xfe,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xe7,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0x3f,0x4f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfc,0xef,0x3f,0xbf,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x3f,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0x7f,0xff,0xff,0xdd,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x7f,0x7f,0xff,0xed,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x7d,0xff,0xf7,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xfb,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xde,0x7f,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfb,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xf9,0xfd,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfd,0xb9,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  29.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xfe,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x7b,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xfc,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x39,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x7f,0xff,0xff,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xff,0xfb,0xfd,0xdf,0x7f,0xfe,0xd7,0xff,0xff,0xff,0xef,0xff,0xfb,0xff,0x7f,0xff,0xef,0xbf,0xbb,0xb3,0xff,0x6b,0x3e,0x7f,0xff,0xff,0xbf,0xff,0xf9,0xff,0x7f,0xff,0xff,0xff,0x9d,0xfb,0xff,0x6c,0x7e,0x7f,0xff,0xff,0x7f,0xff,0xf1,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0x7f,0x1f,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xfb,0xff,0xbe,0xff,0x7f,0x9e,0xff,0xff,0xfb,0xff,0xe7,0xfb,0xff,0x7f,0xff,0xff,0xff,0xfb,0xff,0xd7,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xff,0xfa,0xfe,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xef,0xff,0xfe,0xfd,0xff,0xff,0xff,0xf9,0xd9,0xf9,0xbf,0x7f,0x7f,0xd3,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xf7,0xbf,0xfb,0xde,0xff,0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xf7,0xbf,0xfe,0x7d,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0x7b,0xff,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0x3f,0xfd,0xd7,0xff,0xff,0xbe,0x7f,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xc4,0x7f,0xff,0xfc,0x7b,0xbf,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xe2,0xff,0xff,0xfd,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xf8,0xff,0xff,0xec,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xef,0xff,0xff,0xfd,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xef,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0x5f,0xff,0xfd,0xdc,0xff,0xff,0xff,0x9f,0xff,0xff,0xcf,0xbf,0xff,0xff,0xff,0xfe,0x5f,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x71,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xf7,0xff,0xfe,0xfe,0xde,0xff,0xff,0xff,0xd0,0xff,0xff,0xff,0x17,0xff,0xff,0xff,0xf9,0xff,0xfc,0x7e,0xbe,0xff,0xff,0xfe,0x3b,0xff,0xff,0xdf,0x5f,0xff,0xff,0xff,0xfc,0xff,0xf1,0xde,0x7f,0x7f,0x7f,0xfc,0x27,0xff,0xff,0xfd,0xf7,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xff,0xff,0x7f,0xff,0x6f,0xff,0xfd,0xdf,0xf0,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xbf,0x7f,0xff,0x3f,0xff,0xff,0xef,0xfb,0xff,0xff,0xff,0xff,0xed,0xfe,0xdf,0xff,0xdf,0x7f,0xff,0xff,0xff,0xfe,0xff,0xf7,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xbf,0xdf,0xff,0xff,0xfe,0xff,0xff,0xdf,0xdf,0xff,0xfb,0x3f,0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xfb,0xff,0xff,0xff,0x7f,0xff,0xab,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xf7,0xff,0xfb,0xbf,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xcf,0xff,0xff,0xff,0xbf,0xff,0xfb,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf9,0xf3,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xef,0xfe,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  30.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xfe,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x7b,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xfc,0xfb,0xff,0xff,0xff,0x3f,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x39,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xf9,0xdf,0xff,0xfc,0x7f,0xff,0xff,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xff,0xfa,0xfd,0x5b,0x6f,0xf6,0x80,0x7f,0xff,0xff,0xef,0xff,0xfb,0xff,0x7f,0xff,0xe7,0xbd,0xbb,0xb3,0xff,0x60,0x3e,0x7f,0xff,0xff,0xbf,0xff,0xf9,0xff,0x7f,0xff,0xfe,0xf8,0x9d,0xbb,0xff,0x48,0x7e,0x7f,0xff,0xff,0x7f,0xff,0xf1,0xff,0xff,0xff,0xf7,0xc2,0xfd,0xdf,0xff,0x49,0x1f,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf3,0xff,0xbe,0x27,0x4d,0x9e,0xff,0xff,0xfb,0xff,0xe7,0xfb,0xff,0x7f,0xff,0xff,0xf3,0xf9,0xde,0x47,0x4b,0x7c,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xff,0xf8,0x90,0x7f,0xbf,0x1f,0x51,0xfd,0xff,0xff,0xef,0xff,0xfe,0xfd,0xff,0xff,0xff,0xf9,0xd1,0x79,0xbe,0x3f,0x6f,0xd3,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xf7,0xbe,0xfb,0xde,0x7f,0xff,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xbf,0x7d,0x7d,0xff,0xff,0xff,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xfe,0x7b,0xff,0xfb,0x1e,0x7f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0x3f,0xf9,0xd7,0xff,0xf5,0x9e,0x7f,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xc4,0x7f,0xf9,0xbc,0x63,0x1d,0xd7,0xff,0xfe,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xe2,0xff,0xff,0xfd,0xef,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xf8,0xff,0xff,0xec,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0x7f,0xcc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xeb,0xff,0xff,0x7f,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xe3,0xff,0xff,0x23,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xef,0x5f,0xff,0xfd,0xdc,0xff,0xff,0xff,0x9f,0xff,0xff,0xcf,0xbf,0xff,0xff,0xff,0xce,0x5f,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x71,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xf7,0xff,0xfe,0xfe,0xde,0xff,0xff,0xff,0xd0,0xff,0xff,0xcf,0x17,0xff,0xff,0xff,0xf9,0xff,0xfc,0x7e,0xbe,0xff,0xff,0xfe,0xb,0xff,0xff,0xdf,0x5f,0xff,0xff,0xff,0xfc,0xff,0xf1,0xde,0x7f,0x7f,0x7f,0xf8,0x7,0xff,0xff,0xfd,0xf7,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xff,0xff,0x7f,0xfd,0x4f,0xff,0xfd,0xdf,0xf0,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xbf,0x7f,0xff,0x2f,0xff,0xff,0xef,0xfb,0xff,0xff,0xff,0xff,0xed,0xfe,0xdf,0xff,0xdf,0x7f,0xff,0x5f,0xff,0xfe,0xff,0xf7,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff,0xff,0xdc,0xff,0xff,0xbc,0x7f,0xff,0xff,0xff,0xff,0xbf,0xdf,0xff,0xff,0xfe,0xff,0xff,0xdc,0x5f,0xff,0xc3,0x3f,0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xfb,0xff,0xfe,0x7f,0x7f,0xff,0xab,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xf7,0xff,0xf8,0xbf,0x9f,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xcf,0xff,0xff,0xff,0xbf,0xff,0xfb,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf9,0xf3,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xef,0xfe,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  31.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xfe,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x7b,0xff,0xff,0xff,0x8f,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xfc,0xfb,0xff,0xff,0xff,0x17,0xff,0xfe,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0x39,0xfd,0xfd,0xff,0xff,0xfc,0xff,0xff,0xd9,0x4f,0xfe,0x7c,0x7f,0xff,0xff,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xff,0xfa,0xfd,0x13,0x67,0xd2,0x80,0x7f,0xff,0xff,0xef,0xff,0xfb,0xff,0x7f,0xff,0xe7,0xbd,0x1b,0x81,0xff,0x60,0x3e,0x7f,0xff,0xff,0xbf,0xff,0xf9,0xff,0x7f,0xff,0xfa,0x50,0x99,0x9b,0xff,0x48,0x7e,0x7f,0xff,0xff,0x7f,0xff,0xf1,0xff,0xff,0xff,0xf5,0x2,0xfd,0x9f,0xff,0x49,0x1f,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf1,0xf9,0xbe,0x7,0x49,0x1e,0xff,0xff,0xfb,0xff,0xe7,0xfb,0xff,0x7f,0xff,0xff,0xf3,0xf9,0xde,0x7,0x4b,0x3c,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xff,0xe0,0x80,0x79,0x9f,0x1f,0x51,0x35,0xff,0xff,0xef,0xff,0xfe,0xfd,0xff,0xff,0xff,0xf9,0x90,0x79,0xbe,0x3f,0x4f,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xf7,0xbe,0xfb,0xde,0x7f,0xff,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xbf,0x7c,0x39,0xff,0xff,0x9e,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xfe,0x7b,0xff,0xfb,0x1e,0x7f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0x3f,0xf9,0xd7,0xff,0xd5,0x9e,0x7f,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xc4,0x7f,0xf9,0x9c,0x63,0x5,0x13,0xff,0xfe,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xe2,0xfe,0xff,0xfc,0xf,0xfd,0x8d,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x19,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0x38,0xff,0xff,0xec,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0x7f,0xc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xe3,0xff,0xff,0x1f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xe3,0xff,0xff,0x0,0x77,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xc3,0x5f,0xff,0xc0,0x8c,0xff,0xff,0xff,0x9f,0xff,0xff,0xcf,0xbf,0xff,0xff,0xff,0xcc,0x5f,0xff,0xf7,0xcc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x71,0xff,0xff,0xff,0xf3,0x3f,0xff,0xb7,0xc7,0xff,0xff,0xff,0xf7,0xff,0xfe,0xfe,0xde,0xff,0xff,0xff,0xd0,0xff,0xff,0xc7,0x7,0xff,0xff,0xff,0xf9,0xff,0xfc,0x7e,0xbe,0xff,0xff,0xfe,0xb,0xff,0xff,0x8f,0x45,0xff,0xff,0xff,0xfc,0xff,0xf1,0xde,0x7f,0x7f,0x7f,0xf8,0x7,0xff,0xff,0xfd,0xe0,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xff,0xff,0x7f,0xfd,0x4f,0xff,0xfd,0xde,0xe0,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xbf,0x7f,0xff,0x2f,0xff,0xfd,0xef,0xf9,0xff,0xff,0xff,0xff,0xed,0xfe,0xdf,0xff,0xdf,0x7f,0xff,0x5f,0xff,0xfc,0xd3,0xe5,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff,0xff,0xdc,0xff,0xfe,0x30,0x41,0xff,0xff,0xff,0xff,0xbf,0xdf,0xff,0xff,0xfe,0xff,0xff,0xdc,0x5f,0xff,0x41,0xf,0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xfb,0xff,0xfe,0x7f,0x77,0xff,0xa3,0xfd,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xf7,0xff,0xf8,0xbf,0x93,0xff,0x47,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0x9f,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xdf,0xff,0xcf,0xff,0xff,0xff,0xbf,0xff,0xfb,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xf9,0xf3,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xef,0xfe,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  32.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xfe,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x7b,0xff,0xff,0xff,0x8f,0xff,0xfd,0xff,0xef,0xe7,0xff,0xff,0xff,0xff,0xc3,0xfc,0xfb,0xff,0xff,0xff,0x7,0xff,0xfa,0xff,0xef,0xe7,0xff,0xff,0xff,0xff,0x39,0xfd,0xfd,0xff,0xff,0xfc,0x67,0xfb,0x59,0x4b,0xce,0x0,0x7f,0xff,0xff,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xfe,0x92,0x39,0x10,0x23,0x0,0x0,0x7f,0xff,0xff,0xef,0xff,0xfb,0xff,0x7f,0xff,0xe3,0xbd,0x19,0x81,0xff,0x0,0x3e,0x7f,0xff,0xff,0xbf,0xff,0xf9,0xff,0x7f,0xff,0xfa,0x50,0x19,0x9b,0xff,0x48,0x7e,0x7f,0xff,0xff,0x7f,0xff,0xf1,0xff,0xff,0xff,0xf5,0x0,0xf9,0x9f,0xff,0x49,0x1f,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf1,0xf9,0x9e,0x7,0x49,0x1e,0xff,0xff,0xfb,0xff,0xe7,0xfb,0xff,0x7f,0xff,0xff,0xf1,0xf9,0xde,0x7,0x4b,0x3c,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xff,0xe0,0x0,0x79,0x9f,0x1f,0x51,0x35,0xff,0xff,0xef,0xff,0xfe,0xfd,0xff,0xff,0xff,0xe0,0x0,0x79,0xbe,0x7f,0x27,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xe7,0x9e,0xf9,0x9c,0x7f,0xcf,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xe7,0xbe,0x7d,0x1c,0xf9,0xcd,0x9e,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x7f,0x7a,0x59,0xf3,0xc9,0x1e,0x7f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0x3f,0xf9,0xd3,0xf2,0x81,0x1e,0x7f,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xc0,0x79,0xb9,0x9c,0x62,0x1,0x0,0x7f,0xfe,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xc0,0xfe,0x9f,0xfc,0x7,0xfd,0x80,0x7f,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xc7,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdf,0xff,0xff,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xdb,0xff,0xff,0xff,0x19,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0x38,0xff,0xff,0xec,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0x7f,0xc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xe3,0xff,0xff,0x1f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xe1,0xff,0xff,0x0,0x37,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xc0,0x1f,0xff,0x80,0x8c,0xff,0xff,0xff,0x9f,0xff,0xff,0xcf,0xbf,0xff,0xff,0xff,0xc0,0xf,0xff,0x93,0xc8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x71,0xff,0xff,0xff,0xc0,0x3f,0xff,0xb7,0x83,0xff,0xff,0xff,0xf7,0xff,0xfe,0xfe,0xde,0xff,0xff,0xff,0x80,0xff,0xff,0xc6,0x7,0xff,0xff,0xff,0xf9,0xff,0xfc,0x7e,0xbe,0x7f,0xff,0xfe,0x3,0xff,0xff,0x84,0x5,0xff,0xff,0xff,0xfc,0xff,0xf1,0xde,0x7f,0x7e,0x7f,0xf0,0x7,0xff,0xff,0x81,0xe0,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xff,0xbb,0x7f,0xf9,0x4f,0xff,0xfd,0xc0,0xe0,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xbb,0x7f,0xff,0x2f,0xff,0xfd,0x82,0xf9,0xff,0xff,0xff,0xff,0xed,0xfe,0xdf,0xff,0xdf,0x7f,0xff,0x1f,0xff,0xfc,0x83,0xe5,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff,0xff,0x9c,0x7f,0xfe,0x30,0x1,0xff,0xff,0xff,0xff,0xbf,0xdf,0xff,0xff,0xfe,0xff,0xff,0x9c,0xf,0xff,0x41,0xf,0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xfb,0xff,0xfe,0x3e,0x3,0xff,0x83,0xf8,0xef,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xf7,0xff,0xe8,0x3f,0x83,0xff,0x47,0xfc,0x6f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x7f,0xc7,0xff,0xdf,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xdf,0xff,0xf,0xff,0xff,0xff,0xbf,0xff,0xfb,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xff,0xff,0xbf,0xf9,0xf3,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xef,0xfe,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  33.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfe,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xfd,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xfe,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xfe,0x7b,0xff,0xff,0xff,0x8f,0xff,0xfc,0xff,0xcf,0xe7,0xff,0xff,0xff,0xff,0xc3,0xfc,0xfb,0xff,0xff,0xff,0x7,0xff,0xf8,0xff,0xcf,0xe7,0xff,0xff,0xff,0xff,0x39,0xfd,0xfd,0xff,0xff,0xfc,0x21,0xf8,0x18,0x3,0xce,0x0,0x7f,0xff,0xff,0xfc,0xfd,0xfb,0xff,0xff,0xff,0xe0,0x90,0x18,0x10,0x3,0x0,0x0,0x7f,0xff,0xff,0xef,0xff,0xfb,0xff,0x7f,0xff,0x83,0x9c,0x19,0x81,0xff,0x0,0x3e,0x7f,0xff,0xff,0xbf,0xff,0xf9,0xff,0x7f,0xff,0xc0,0x0,0x19,0x93,0xff,0x48,0x7e,0x7f,0xff,0xff,0x7f,0xff,0xf1,0xff,0xff,0xff,0xf0,0x0,0xf9,0x9f,0xff,0x49,0x1f,0xff,0xff,0xfc,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xf1,0xf9,0x98,0x7,0x49,0x1c,0xff,0xff,0xfb,0xff,0xe7,0xfb,0xff,0x7f,0xff,0xff,0xf1,0xf9,0x98,0x7,0x49,0x18,0x7f,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xff,0xe0,0x0,0x79,0x9f,0xf,0x1,0x0,0xff,0xff,0xef,0xff,0xfe,0xfd,0xff,0xff,0xff,0xe0,0x0,0x79,0x9e,0x3f,0x1,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0x79,0xff,0xff,0xe7,0x9e,0x79,0x9c,0x7f,0xcb,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xe7,0x9e,0x78,0x18,0xf1,0xc9,0x1e,0x7f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x6,0x78,0x11,0xf3,0xc9,0x1e,0x7f,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfe,0x0,0xf9,0x93,0xf2,0x1,0x1e,0x7f,0xfe,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xc0,0x70,0x39,0x90,0x2,0x1,0x0,0x7f,0xfe,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xc0,0xfe,0x1f,0xf8,0x7,0xfd,0x80,0x7f,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xc7,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xb7,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xcf,0xff,0xff,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0x19,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0x10,0xff,0xff,0xec,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xe3,0xff,0xff,0x7f,0xc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xe3,0xff,0xff,0x1f,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xef,0xff,0xff,0xff,0xe1,0xff,0xff,0x0,0x7,0xff,0xff,0xff,0xbf,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xc0,0x1f,0xff,0x80,0x80,0xff,0xff,0xff,0x9f,0xff,0xff,0xcf,0xbf,0xff,0xff,0xff,0xc0,0xf,0xff,0x81,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x71,0xff,0xff,0xff,0xc0,0x3f,0xff,0x83,0x83,0xff,0xff,0xff,0xf7,0xff,0xfe,0xfe,0xde,0xff,0xff,0xff,0x80,0xff,0xff,0xc6,0x7,0xff,0xff,0xff,0xf9,0xff,0xfc,0x7e,0xbe,0x7f,0xff,0xfe,0x3,0xff,0xff,0x84,0x5,0xff,0xff,0xff,0xfc,0xff,0xf1,0xde,0x7f,0x7e,0x7f,0xf0,0x7,0xff,0xff,0x81,0xe0,0xff,0xff,0xff,0xff,0xc0,0x7f,0xff,0xff,0xbb,0x7f,0xf8,0xf,0xff,0xfd,0xc0,0xe0,0xff,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xbb,0x7f,0xfc,0xf,0xff,0xfc,0x80,0xf1,0xff,0xff,0xff,0xff,0xed,0xfe,0xdf,0xff,0xdf,0x7f,0xff,0x1f,0xff,0xfc,0x0,0xe1,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff,0xff,0x18,0x7f,0xfe,0x30,0x1,0xff,0xff,0xff,0xff,0xbf,0xdf,0xff,0xff,0xfe,0xff,0xfe,0x1c,0xf,0xfe,0x1,0x9,0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xfb,0xff,0xfe,0x3e,0x3,0xff,0x0,0xf8,0xef,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xf7,0xff,0xe8,0x3f,0x83,0xff,0x7,0xfc,0x6f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x7f,0xc3,0xff,0x9f,0xfe,0xf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xdf,0xff,0xf,0xff,0xff,0xff,0xbf,0xff,0xfb,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0xff,0xff,0xff,0xbf,0xf9,0xf3,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xff,0xef,0xfe,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  34.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xf7,0xff,0xff,0xff,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe6,0xff,0xf7,0xff,0xfc,0xff,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x96,0x9f,0xf2,0x7f,0x49,0xfb,0x4d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0x9a,0xff,0xff,0xfb,0x6d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x64,0x3e,0xd3,0xff,0xf8,0xf8,0x69,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x7e,0x1a,0x7c,0x79,0xfb,0x4d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xff,0x38,0xfe,0xe1,0xf8,0x41,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0x7f,0x19,0xfe,0xe3,0xfa,0x5d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x17,0x7f,0x40,0xfe,0x2b,0xff,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x67,0x7e,0xee,0xbe,0x5b,0xbf,0x9d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x7f,0xff,0x3c,0xbb,0xbf,0x39,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9d,0xff,0x9e,0x7e,0x77,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xf9,0x9f,0x9f,0xff,0xbe,0xfe,0xf7,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xf9,0xdf,0x9f,0x1e,0xe,0xfc,0x31,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf9,0x9f,0x7,0xfe,0x3a,0xfc,0xe7,0xfc,0x39,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xf8,0x3f,0x8a,0x7e,0x3a,0x7c,0x6c,0x73,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0x7,0xf9,0xdf,0x93,0xff,0x8a,0x78,0x6f,0xfa,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xf9,0xcf,0x3f,0xfe,0x2a,0x7e,0x49,0xfa,0xd9,0xff,0xff,0xff,0xff,0xff,0xfe,0x73,0xf9,0xcc,0xb8,0x7e,0xae,0x7c,0xf9,0xfa,0x19,0xff,0xff,0xff,0xff,0xff,0xfe,0xfb,0xf9,0xdf,0xbd,0xfe,0xae,0x7e,0xfb,0xfb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x98,0x7f,0x3c,0x3f,0xbc,0x7e,0xe7,0xfb,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xff,0xa7,0xff,0xbe,0xfe,0xf3,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe,0xff,0xfb,0xff,0xdf,0xfd,0xef,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xfa,0x7f,0x6c,0x7c,0xdb,0xff,0xd9,0xf9,0xef,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0x1a,0xff,0xf1,0xff,0xcf,0xfa,0xef,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xb0,0xff,0x40,0xfb,0xc,0xf8,0x67,0xf6,0xe1,0xfe,0x9f,0xff,0xff,0xff,0xff,0xff,0xbc,0x7e,0x4c,0xfd,0x9c,0xfa,0x6b,0xe1,0xef,0xf2,0xcf,0xff,0xff,0xff,0xff,0xff,0xc,0x1e,0x18,0xff,0x89,0xfc,0xe3,0xfb,0xc3,0xfa,0x9f,0xff,0xff,0xff,0xff,0xff,0x40,0x3d,0xfd,0xfc,0x8,0x3c,0x67,0xf1,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xfe,0x18,0x7f,0xf7,0xfc,0x59,0xfd,0x7,0xfe,0x3,0xfc,0x3f,0xff,0xff,0xff,0xff,0xfd,0x7c,0x7f,0xf3,0xf9,0x99,0xfb,0x92,0xf1,0xbb,0xfa,0xcf,0xff,0xff,0xff,0xff,0xff,0xfc,0xf,0xf7,0xfb,0xb9,0xf7,0xf8,0xf7,0xb3,0xe6,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f,0xbf,0xf1,0xff,0xfc,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff},
  35.         {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xbc,0xe7,0xff,0xfe,0x7f,0xff,0xff,0x9f,0xfe,0x7e,0x3f,0xe3,0xff,0xff,0xff,0xff,0x8e,0xef,0xff,0xfe,0x63,0xff,0xe0,0x1f,0xfe,0x7e,0x7f,0xe3,0xff,0xff,0xff,0xff,0xef,0xc1,0xff,0xfe,0x7f,0xff,0xee,0x7f,0xfe,0x7e,0xff,0xf3,0xff,0xff,0xff,0xff,0xfe,0x1f,0xff,0x83,0x63,0xff,0xe6,0x7f,0xfe,0xfc,0xff,0xf3,0xff,0xff,0xff,0xfe,0x70,0xf0,0xfe,0x67,0x1f,0xff,0xe6,0x7f,0xfe,0xdd,0x8f,0xf3,0xff,0xff,0xff,0xff,0x39,0x89,0xff,0xe0,0x37,0xff,0xe6,0x1,0xfc,0xc9,0xc7,0xf3,0xff,0xff,0xff,0xff,0xf8,0xfb,0xff,0x27,0x23,0xff,0x6,0x7f,0xfc,0x0,0x27,0xf3,0xff,0xff,0xff,0xff,0xd8,0x67,0xff,0x8f,0xa7,0xff,0xe6,0x7f,0xc1,0x93,0xff,0xf3,0xff,0xff,0xff,0xff,0x92,0x66,0x3f,0xc7,0x8f,0xff,0xee,0x7f,0xfd,0x9f,0xff,0xf3,0xff,0xff,0xff,0xff,0xb6,0x3,0xff,0x83,0x1f,0xff,0xce,0x7f,0xfc,0x3e,0xf,0xf3,0xff,0xff,0xff,0xff,0x2c,0xf3,0xff,0x32,0xf,0xff,0xce,0x7f,0xfe,0x73,0xc7,0xff,0xff,0xff,0xff,0xfe,0x1c,0xf3,0xfe,0x7c,0xee,0xff,0x9e,0x7f,0xfe,0x33,0xcf,0xf3,0xff,0xff,0xff,0xfe,0x79,0xf3,0xfc,0xf3,0xe2,0xff,0x3e,0x7f,0xfc,0x9b,0x8f,0xe3,0xff,0xff,0xff,0xff,0xfb,0xe3,0xff,0xff,0xf0,0xfe,0xfe,0x7f,0xf3,0xb8,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0xf8,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}
  36. };


  37. // 主程序开始
  38. void setup() {
  39.         mPython.begin();
  40.         dfrobotRandomSeed();
  41.         DF_ChuShiHuaChangDu();
  42.         DF_KaiJiDongHua();
  43. }
  44. void loop() {
  45.         delay(100);
  46.         display.fillScreen(0);
  47.         display.point(mind_n_ShiWux, mind_n_ShiWuy);
  48.         DF_AnJian();
  49.         if ((mind_n_FangXiange==0)) {
  50.                 mind_n_x += 1;
  51.                 DF_TanChiSheHuoDong();
  52.         }
  53.         if ((mind_n_FangXiange==1)) {
  54.                 mind_n_y -= 1;
  55.                 DF_TanChiSheHuoDong();
  56.         }
  57.         if ((mind_n_FangXiange==2)) {
  58.                 mind_n_x -= 1;
  59.                 DF_TanChiSheHuoDong();
  60.         }
  61.         if ((mind_n_FangXiange==3)) {
  62.                 mind_n_y += 1;
  63.                 DF_TanChiSheHuoDong();
  64.         }
  65. }


  66. // 自定义函数
  67. void DF_ChiDaoShiWu() {
  68.         if (((mind_n_x==mind_n_ShiWux) && (mind_n_y==mind_n_ShiWuy))) {
  69.                 mind_n_ShenChangc += 1;
  70.                 mind_l_X.insert(mind_n_ShenChangc-1, mind_l_X[(mind_n_ShenChangc - 1)-1]);
  71.                 mind_l_Y.insert(mind_n_ShenChangc-1, mind_l_Y[(mind_n_ShenChangc - 1)-1]);
  72.                 display.point((String("123").toInt()), (String("123").toInt()));
  73.                 mind_n_ShiWux = (random(5, 60+1));
  74.                 mind_n_ShiWuy = (random(5, 120+1));
  75.                 mind_n_FenShuf += 1;
  76.         }
  77. }
  78. void DF_PengBi() {
  79.         if ((((mind_n_SheToux==0) || (mind_n_SheTouy==0)) || ((mind_n_SheToux==128) || (mind_n_SheTouy==64)))) {
  80.                 display.drawImage(0, 0, 128, 64, imageMatrix[0]);
  81.                 delay(2000);
  82.                 display.fillScreen(0);
  83.                 display.setCursor(10, 22);
  84.                 display.print("获得分数:");
  85.                 display.setCursor(82, 22);
  86.                 display.print(mind_n_FenShuf);
  87.                 DF_ChuShiHuaChangDu();
  88.                 delay(2000);
  89.         }
  90. }
  91. void DF_KaiJiDongHua() {
  92.         display.drawImage(0, 0, 128, 64, imageMatrix[1]);
  93.         delay(200);
  94.         display.drawImage(0, 0, 128, 64, imageMatrix[2]);
  95.         delay(200);
  96.         display.drawImage(0, 0, 128, 64, imageMatrix[3]);
  97.         delay(200);
  98.         display.drawImage(0, 0, 128, 64, imageMatrix[4]);
  99.         delay(200);
  100.         display.drawImage(0, 0, 128, 64, imageMatrix[5]);
  101.         delay(200);
  102.         display.drawImage(0, 0, 128, 64, imageMatrix[6]);
  103.         delay(200);
  104.         display.drawImage(0, 0, 128, 64, imageMatrix[7]);
  105.         delay(200);
  106.         display.drawImage(0, 0, 128, 64, imageMatrix[8]);
  107.         delay(200);
  108.         display.drawImage(0, 0, 128, 64, imageMatrix[9]);
  109.         delay(200);
  110.         display.drawImage(0, 0, 128, 64, imageMatrix[10]);
  111.         delay(200);
  112.         display.drawImage(0, 0, 128, 64, imageMatrix[11]);
  113.         delay(200);
  114.         display.drawImage(0, 0, 128, 64, imageMatrix[12]);
  115.         delay(200);
  116.         display.drawImage(0, 0, 128, 64, imageMatrix[13]);
  117.         delay(200);
  118.         display.drawImage(0, 0, 128, 64, imageMatrix[14]);
  119.         delay(1000);
  120.         display.drawImage(0, 0, 128, 64, imageMatrix[15]);
  121.         delay(3000);
  122.         display.drawImage(0, 0, 128, 64, imageMatrix[16]);
  123.         delay(2000);
  124. }
  125. void DF_TanChiSheHuoDong() {
  126.         mind_n_SheToux = mind_n_x;
  127.         mind_n_SheTouy = mind_n_y;
  128.         mind_n_LieBiaod = mind_n_ShenChangc;
  129.         display.point(mind_n_SheToux, mind_n_SheTouy);
  130.         while (!(mind_n_LieBiaod==1)) {
  131.                 mind_l_X.replace(mind_n_LieBiaod-1, mind_l_X[(mind_n_LieBiaod - 1)-1]);
  132.                 mind_l_Y.replace(mind_n_LieBiaod-1, mind_l_Y[(mind_n_LieBiaod - 1)-1]);
  133.                 display.point((String("123").toInt()), (String("123").toInt()));
  134.                 mind_n_LieBiaod -= 1;
  135.                 yield();
  136.         }
  137.         mind_l_X.replace(mind_n_LieBiaod-1, (String(mind_n_SheToux)));
  138.         mind_l_Y.replace(mind_n_LieBiaod-1, (String(mind_n_SheTouy)));
  139.         DF_ChiDaoShiWu();
  140.         DF_PengBi();
  141. }
  142. void DF_ChuShiHuaChangDu() {
  143.         mind_n_ShiWux = (random(1, 60+1));
  144.         mind_n_ShiWuy = (random(1, 120+1));
  145.         mind_n_x = 64;
  146.         mind_n_y = 32;
  147.         mind_n_ShenChangc = 6;
  148.         mind_n_FangXiange = 0;
  149.         mind_l_X.insert(1-1, "64");
  150.         mind_l_X.insert(2-1, "63");
  151.         mind_l_X.insert(3-1, "62");
  152.         mind_l_X.insert(4-1, "61");
  153.         mind_l_X.insert(5-1, "60");
  154.         mind_l_X.insert(6-1, "59");
  155.         mind_l_Y.insert(1-1, "32");
  156.         mind_l_Y.insert(2-1, "32");
  157.         mind_l_Y.insert(3-1, "32");
  158.         mind_l_Y.insert(4-1, "32");
  159.         mind_l_Y.insert(5-1, "32");
  160.         mind_l_Y.insert(6-1, "32");
  161.         display.point(64, 32);
  162.         display.point(63, 32);
  163.         display.point(62, 32);
  164.         display.point(61, 32);
  165.         display.point(60, 32);
  166.         display.point(59, 32);
  167.         display.point(59, 32);
  168. }
  169. void DF_AnJian() {
  170.         if ((buttonA.isPressed())) {
  171.                 mind_n_FangXiange += 1;
  172.                 if ((mind_n_FangXiange==4)) {
  173.                         mind_n_FangXiange = 0;
  174.                 }
  175.         }
  176.         if ((buttonB.isPressed())) {
  177.                 mind_n_FangXiange -= 1;
  178.                 if ((mind_n_FangXiange==-1)) {
  179.                         mind_n_FangXiange = 3;
  180.                 }
  181.         }
  182. }


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 11:13:24 显示全部楼层
2、简单连连看(shworld)

玩法说明
按A键左移动
按B键右移动
按金手指T或H来选择
  1. #MicroPython动手做(35)——体验小游戏
  2. #简单连连看

  3. from mpython import *
  4. import random

  5. #--------------------------------------------------------
  6. #图片转换参考https://mpython.readthedocs.io/zh/master/tutorials/basics/oled.html#id3
  7. #图片定义
  8. #苹果
  9. apple = bytearray([\
  10. 0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X01,0X80,0X00,0X00,0X01,0X80,0X18,0X70,0X01,
  11. 0X80,0X00,0X0C,0X01,0X80,0X00,0X03,0X01,0X84,0X01,0XC0,0X81,0X88,0X3F,0XF0,0X61,
  12. 0X98,0X3F,0XF8,0X31,0X90,0X3F,0XFC,0X31,0XB0,0X3F,0XFC,0X19,0XB0,0X3F,0XFE,0X19,
  13. 0XB0,0X0F,0XF6,0X19,0XB8,0X00,0X80,0X19,0XBC,0X00,0X00,0X19,0XBE,0X00,0X00,0X39,
  14. 0XBF,0X80,0X00,0X79,0XBF,0XE0,0X07,0XF9,0X9F,0XFF,0XFF,0XF9,0X9F,0XFF,0XFF,0XF1,
  15. 0X8F,0XFF,0XFF,0XF1,0X8F,0XFF,0XFF,0XE1,0X87,0XFF,0XFF,0XE1,0X83,0XFF,0XFF,0XC1,
  16. 0X81,0XFF,0XFF,0X81,0X81,0XFF,0XFF,0X01,0X80,0XFF,0XFE,0X01,0X80,0X7F,0XFC,0X01,
  17. 0X80,0X3F,0XF0,0X01,0X80,0X00,0X00,0X01,0X80,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
  18. ])

  19. #樱桃
  20. cherry = bytearray([\
  21. 0XFF,0XFF,0XFF,0XFF,0X80,0XC0,0X00,0X01,0X81,0XC0,0X00,0X01,0X80,0XC0,0X00,0X01,
  22. 0X80,0XC0,0X00,0X01,0X80,0XA0,0X00,0X01,0X80,0X10,0X00,0X01,0X80,0X90,0X00,0X01,
  23. 0X80,0X88,0X00,0X01,0X80,0X8C,0X00,0X01,0X80,0X84,0X00,0X01,0X80,0X83,0X00,0X01,
  24. 0X80,0X81,0X80,0X01,0X80,0X00,0XCF,0X21,0X80,0X40,0X7F,0X11,0X80,0X79,0XFF,0X19,
  25. 0X87,0XFC,0XFF,0XF9,0X8F,0XFC,0X7F,0XF9,0X9F,0XF8,0X7F,0XFD,0XBF,0XF8,0X7F,0XFD,
  26. 0XBF,0XF8,0X7F,0XFD,0XBF,0XF8,0X7F,0XFD,0XBF,0XFF,0XFF,0XFD,0XBF,0XFF,0XFF,0XF9,
  27. 0XBF,0XFF,0XFF,0XF9,0XBF,0XFF,0XFF,0XF1,0XBF,0XFF,0XFF,0XF1,0X9F,0XFF,0XFF,0XE1,
  28. 0X8F,0XFF,0X9F,0X81,0X87,0XFF,0X00,0X01,0X81,0XFC,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
  29. ])

  30. #桑葚
  31. mulberry = bytearray([\
  32. 0XFF,0XFF,0XFF,0XFF,0X80,0X21,0X00,0X01,0X80,0X10,0X00,0X01,0X81,0X08,0X80,0X01,
  33. 0X82,0X38,0X80,0X01,0X82,0X3F,0X80,0X01,0X82,0X3F,0XE0,0X01,0X86,0X3F,0XF0,0X01,
  34. 0X86,0X3F,0XF8,0X01,0X83,0XFF,0XFC,0X01,0X83,0XFF,0XFE,0X01,0X87,0XFF,0XFF,0X01,
  35. 0X8F,0XFF,0XFF,0X01,0X8F,0XFF,0XFF,0X01,0X8F,0XFF,0XFF,0X81,0X8F,0XFF,0XFF,0X81,
  36. 0X8F,0XFF,0XFF,0X81,0X8F,0XFF,0XFF,0X81,0X8F,0XFF,0XFF,0X81,0X87,0XFF,0XFF,0X81,
  37. 0X87,0XFF,0XFF,0X81,0X83,0XFF,0XFF,0XC1,0X81,0XFF,0XFF,0XC1,0X80,0XFF,0XFF,0XC1,
  38. 0X80,0XFF,0XFF,0XC1,0X80,0X7F,0XFF,0XC1,0X80,0X3F,0XFF,0X81,0X80,0X1F,0XFF,0X81,
  39. 0X80,0X0F,0XFF,0X81,0X80,0X03,0XFF,0X01,0X80,0X01,0XFC,0X01,0XFF,0XFF,0XFF,0XFF,
  40. ])

  41. #草莓
  42. strawberry = bytearray([\
  43. 0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X01,0X80,0X00,0X00,0X01,0X80,0X00,0X00,0X01,
  44. 0X80,0X00,0X00,0X01,0X80,0X00,0XC0,0X01,0X80,0X03,0XE8,0X01,0X80,0X0D,0XE4,0X01,
  45. 0X80,0X1F,0XFE,0X01,0X80,0X3F,0XFF,0X01,0X80,0X7F,0XFF,0X01,0X80,0XFF,0XDF,0X81,
  46. 0X81,0XFF,0XFF,0XF9,0X83,0XFF,0XFF,0XC1,0X83,0XFF,0XFF,0XC1,0X87,0XFF,0XFF,0XC1,
  47. 0X8F,0XFF,0XFF,0XE1,0X9F,0X7F,0XFF,0XE1,0XBF,0XFF,0XFF,0XE1,0XBF,0XFF,0XFF,0XE1,
  48. 0XBF,0XFE,0XFF,0XE1,0XBF,0XDF,0XFF,0XE1,0XBF,0XFF,0XFF,0XC1,0X9F,0XFF,0XFE,0XC1,
  49. 0X9F,0XFF,0XBF,0X81,0X8F,0XFF,0XFF,0X01,0X81,0XFF,0XFC,0X01,0X80,0X07,0XF0,0X01,
  50. 0X80,0X00,0X00,0X01,0X80,0X00,0X00,0X01,0X80,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,
  51. ])

  52. #打勾
  53. tick = bytearray([\
  54. 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X03,0XC0,0X00,0X00,0X03,
  55. 0XC0,0X00,0X00,0X03,0XC0,0X00,0X00,0X63,0XC0,0X00,0X00,0XE3,0XC0,0X00,0X01,0XE3,
  56. 0XC0,0X00,0X03,0XE3,0XC0,0X00,0X07,0XE3,0XC0,0X00,0X0F,0XE3,0XC0,0X00,0X1F,0XE3,
  57. 0XC0,0X00,0X1F,0XF3,0XC0,0X00,0X3F,0XF3,0XC0,0X00,0X7F,0XC3,0XC0,0X00,0X7F,0X83,
  58. 0XC0,0XC0,0XFF,0X03,0XC1,0XE0,0XFE,0X03,0XC7,0XE1,0XFC,0X03,0XCF,0XF1,0XF8,0X03,
  59. 0XCF,0XF3,0XF0,0X03,0XC3,0XFB,0XE0,0X03,0XC1,0XFF,0XC0,0X03,0XC0,0X7F,0X80,0X03,
  60. 0XC0,0X3F,0X80,0X03,0XC0,0X1F,0X00,0X03,0XC0,0X0E,0X00,0X03,0XC0,0X06,0X00,0X03,
  61. 0XC0,0X04,0X00,0X03,0XC0,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
  62. ])


  63. #--------------------------------------------------------
  64. #函数定义
  65. #生成8个随机水果下标
  66. #默认数组[0,1,2,3],循环2次,就有个8了,如何避免每次生成重复的呢,下面请看
  67. def getFruitRand():
  68.     fruitsIndex=[0,1,2,3]
  69.     fruitsIndex_random=[]
  70.     for i in range(2):                                 #对[0,1,2,3]循环2次加入到fruitsIndex_random中
  71.         fruitsIndex_=fruitsIndex.copy()                #这里不直接用fruitsIndex,因为下面有del删除,我们拷贝一份副本
  72.         for j in range(4):                             #循环4次
  73.             rand=random.randint(0,len(fruitsIndex_)-1) #随机0-3,因j从0开始最大为3,而len(fruitsIndex)返回的是4,所以-1
  74.             randIndex=fruitsIndex_[rand]               #取随机下标,范围在0-3中, fruitsIndex=[0,1,2,3]               
  75.             fruitsIndex_random.append(randIndex)       #添加到fruitsIndex_random中
  76.             del(fruitsIndex_[rand])                    #这里核心,添加完成后删除掉fruitsIndex中的内容                     
  77.                                                        #删除掉后,随机就肯定不会出现重复的了
  78.                                                        #比如每次都随机删除最后一个
  79.                                                        #循环第一次fruitsIndex_长度为[0,1,2,3]
  80.                                                        #循环第二次fruitsIndex_长度为[0,1,2]
  81.                                                        #循环第三次fruitsIndex_长度为[0,1]
  82.                                                        #循环第四次fruitsIndex_长度为[0]
  83.                                                        #这样随机肯定不会重复
  84.     #返回得到的8位随机水果下标fruitsIndex_random   
  85.     return fruitsIndex_random
  86.             


  87. #显示8个水果图片
  88. #isShow主要控制是否最后oled.show(),因为我可能会再show()之前插入一些文字
  89. #fruitsIndex传输的8位随机水果下标,如[2,1,3,0,2,0,1,3]
  90. def showFruit(fruitsIndex,isShow=True):
  91.     i=0
  92.     for index in fruitsIndex:                           #遍历fruitsIndex下标,i计次,从0开始
  93.         if i<4:                                         #控制一行显示4个
  94.             if index==-1:                               #下标为何出现-1,在其他函数中连连看完成会置下标-1
  95.                 oled.Bitmap(32*i, 0, tick, 32, 32, 1)   #显示打勾图片(x每次递增32,因为每张图32*32,屏宽128)
  96.             else:                                       #否则显示水果图
  97.                 oled.Bitmap(32*i, 0, fruits[index], 32, 32, 1)  
  98.         if i>=4:                                        #如果显示第5个图了,换行显示,y坐标变成32
  99.             if index==-1:                               #以此类题,显示打勾图片
  100.                 oled.Bitmap(32*(i-4), 32, tick, 32, 32, 1)
  101.             else:
  102.                 oled.Bitmap(32*(i-4), 32, fruits[index], 32, 32, 1)
  103.         i=i+1                                           #i递增
  104.    
  105.     #是否显示输出
  106.     if isShow:
  107.         oled.show()

  108. #按键A触发事件,向左移动判断
  109. def on_button_a_down(_):
  110.     global cursor_X,cursor_Y,chose1XY,isFinish  #引用全局变量
  111.     time.sleep_ms(10)                           #防抖,可以不写
  112.     if button_a.value() == 1: return            #按钮按下状态
  113.     if isFinish==True:                          #如果全部连完了,重新开始游戏
  114.         start()
  115.         return
  116.     oled.fill(0)                                #清空屏幕显示        
  117.     showFruit(fruitsIndex,False)                #显示水果,传入随机的8个水果下标
  118.     cursor_X=cursor_X-32                        #全局光标坐标-32(因图片宽高为32)  
  119.     if cursor_X<0 and cursor_Y==8:              #如果光标在第一行且X到最左端了,那么换到第二行最右侧
  120.         cursor_X=100                            #换到第二行最右侧
  121.         cursor_Y=40
  122.     if cursor_X<4 and cursor_Y==40:             #如果光标在第二行且X在最左端了,那么换到第一行最右侧
  123.         cursor_X=100
  124.         cursor_Y=8
  125.         
  126.     if chose1XY:                                         #如果第1个位置已经选中状态
  127.         oled.DispChar('选中', chose1XY[0], chose1XY[1])  #显示那个"光标"的文字位置
  128.     oled.DispChar('光标', cursor_X, cursor_Y)            #否则显示"光标"文字
  129.     oled.show()                                          #显示生效

  130.    
  131. #按键B触发事件,向右移动判断
  132. def on_button_b_down(_):
  133.     global cursor_X,cursor_Y,chose1XY,isFinish   #按键B与按键A没有区别,就是到极端时换行不同
  134.     time.sleep_ms(10)
  135.     if button_b.value() == 1: return
  136.     if isFinish==True:
  137.         start()
  138.         return
  139.     oled.fill(0)   
  140.     showFruit(fruitsIndex,False)
  141.     cursor_X=cursor_X+32
  142.     if cursor_X>128 and cursor_Y==40:
  143.         cursor_X=4
  144.         cursor_Y=8
  145.     if cursor_X>128 and cursor_Y==8:
  146.         cursor_X=4
  147.         cursor_Y=40
  148.    
  149.     if chose1XY :
  150.         oled.DispChar('选中', chose1XY[0], chose1XY[1])
  151.     oled.DispChar('光标', cursor_X, cursor_Y)
  152.     oled.show()


  153. #验证是否完成8个水果的连连看
  154. def checkIsFinish():
  155.     global isFinish                             #引用全局变量
  156.     i=0                                         #初始化i变量
  157.     for index in fruitsIndex:                   #遍历fruitsIndex下标情况
  158.         if index==-1:                           #如果为-1,i递增(在其他函数中连连看完成会置下标-1)
  159.             i=i+1
  160.     if i>=8:                                    #如果i等于8说明8个连连看都完成了
  161.         isFinish=True                           #置全局变量
  162.         oled.fill(0)                            #清空屏幕显示
  163.         oled.DispChar('恭喜您,通关了!', 28, 15) #填充文字
  164.         oled.DispChar('按A或B重新开始', 22, 30) #填充文字
  165.         oled.show()                             #显示生效
  166.         
  167. #通过金手指T和H来选择水果      
  168. def choseFruit(cursor_X,cursor_Y):
  169.     global fruitsIndex,chose1Index,chose2Index,chose1XY,chose2XY
  170.     i=0
  171.     for x,y in fruitXY:                         #遍历8张图的预定义坐标
  172.         if cursor_X==x and cursor_Y==y:         #如果当前光标位置=预定义坐标位置,即可得到水果下标
  173.             if fruitsIndex[i]==-1:              #如果光标位置下标为-1,说明已是打勾状态,不重复选中
  174.                 return                          #返回
  175.             if chose1XY:                        #如果第1个位置已经选中状态            
  176.                 chose2XY=[x,y]                  #把光标位置赋给第2个选择位置
  177.                 chose2Index=fruitsIndex[i]      #同时得到水果下标
  178.             else:
  179.                 chose1XY=[x,y]                  #否则赋值第1个选择位置
  180.                 chose1Index=fruitsIndex[i]      #同时得到水果下标
  181.         i=i+1                                   #i递增         
  182.     showFruit(fruitsIndex,False)                #显示水果,不立即显示生效
  183.    
  184.     if chose2XY:                                                             #如果第2个位置选中了,此时可进行匹配
  185.         if chose1Index==chose2Index and chose1XY!=chose2XY:                  #如果位置1和位置2的下标相同且坐标不相同(否则连自身就匹配成功了)
  186.             oled.line(chose1XY[0], chose1XY[1], chose2XY[0], chose2XY[1], 1) #画线,位置1到位置2
  187.             oled.DispChar('成功', cursor_X, cursor_Y)                        #填充文字
  188.             for i in range(len(fruitsIndex)):                                #遍历全局fruitsIndex,把该水果的下标置-1
  189.                 if fruitsIndex[i]==chose2Index:
  190.                     fruitsIndex[i]=-1
  191.             chose1XY=[]                                                      #清空位置1坐标
  192.             chose2XY=[]                                                      #清空位置2坐标
  193.             oled.show()                                                      #显示生效
  194.             checkIsFinish()                                                  #检测是否全部匹配完成
  195.     else:
  196.         oled.DispChar('选中', cursor_X, cursor_Y)                            #否则继续显示"选中"文字
  197.         oled.show()                                                          #显示生效
  198.    
  199. #开始游戏
  200. def start():
  201.     #引用全局变量并初始化默认值,因为重新开始游戏时必须初始化
  202.     global fruitsIndex,cursor_X,cursor_Y,chose1XY,chose1Index,chose2XY,chose2Index,fruitsIndex,isFinish
  203.    
  204.     #初始化变量
  205.     chose1XY=[]
  206.     chose1Index=''
  207.     chose2XY=[]
  208.     chose2Index=''
  209.     fruitsIndex=[]
  210.     cursor_X=4
  211.     cursor_Y=8
  212.     isFinish=False
  213.    
  214.     oled.fill(0)                   #清空屏幕显示
  215.     fruitsIndex=getFruitRand()     #获取随机的8个水果下标
  216.     showFruit(fruitsIndex,False)   #第一次开始游戏先显示水果,传入8个随机水果下标
  217.     oled.DispChar('光标', cursor_X, cursor_Y)   #第一次开始游戏,光标出现在默认的x,y4,8位置
  218.     oled.show()                    #显示生效




  219. #--------------------------------------------------------
  220. #变量定义
  221. fruits=[apple,cherry,mulberry,strawberry] #4个图片的bitmap数组
  222. fruitsIndex=[]                            #水果的下标数组,用来存放随机的8个水果
  223. fruitXY=[[4,8],[36,8],[68,8],[100,8],[4,40],[36,40],[68,40],[100,40]]  #8张图的预定义坐标,从左到右,从上到下

  224. chose1XY=[]                               #位置1选择的水果坐标
  225. chose1Index=''                            #位置1选择的水果下标

  226. chose2XY=[]                               #位置2选择的水果坐标
  227. chose2Index=''                            #位置2选择的水果下标

  228. cursor_X=4                                #全局光标坐标,默认为第一个图的位置4,8(居中显示)
  229. cursor_Y=8                              

  230. isFinish=False                            #是否已完成

  231. start()                                   #开始游戏



  232. #--------------------------------------------------------
  233. #按键监听
  234. #按键A/B触发监视
  235. button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
  236. button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)

  237. #通过金手指T和H来选择水果
  238. while True:
  239.     if(touchPad_T.read() < 100):
  240.         choseFruit(cursor_X,cursor_Y)
  241.     elif(touchPad_H.read() < 100):
  242.         choseFruit(cursor_X,cursor_Y)



雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 20:19:44 显示全部楼层
11、俄罗斯方块

  1. #MicroPython动手做(35)——小游戏
  2. #俄罗斯方块

  3. from mpython import *
  4. import math
  5. import random, time

  6. class Brick():
  7.     def __init__(self, p_position):
  8.         self.position = p_position

  9.     def draw(self):

  10.         x = self.position[1] * brick_size
  11.         y = self.position[0] * brick_size
  12.         oled.fill_rect(brick_size * (field_height - 1) - x, y, brick_size, brick_size, 1)


  13. class Block():
  14.     def __init__(self, p_bricks_layout, p_direction):
  15.         self.bricks_layout = p_bricks_layout
  16.         self.direction = p_direction
  17.         self.init_position = (field_width // 2 - 2, 0)
  18.         self.cur_layout = self.bricks_layout[self.direction]
  19.         self.position = self.init_position
  20.         self.stopped = False
  21.         self.move_interval = 500
  22.         self.last_move = 0
  23.         self.bricks = []
  24.         for (x, y) in self.cur_layout:
  25.             self.bricks.append(Brick((self.position[0] + x, self.position[1] + y)))

  26.     def draw(self):
  27.         for brick in self.bricks:
  28.             brick.draw()

  29.     def isLegal(self, layout, position):
  30.         (x0, y0) = position
  31.         for (x, y) in layout:
  32.             if x + x0 < 0 or y + y0 < 0 or x + x0 >= field_width or y + y0 >= field_height:
  33.                 return False
  34.             if field_map[y + y0][x + x0] != 0:
  35.                 return False
  36.         return True

  37.     def left(self):
  38.         new_position = (self.position[0] - 1, self.position[1])
  39.         if self.isLegal(self.cur_layout, new_position):
  40.             self.position = new_position
  41.             self.refresh_bircks()

  42.     def right(self):
  43.         new_position = (self.position[0] + 1, self.position[1])
  44.         if self.isLegal(self.cur_layout, new_position):
  45.             self.position = new_position
  46.             self.refresh_bircks()

  47.     def down(self):
  48.         (x, y) = (self.position[0], self.position[1] + 1)
  49.         while self.isLegal(self.cur_layout, (x, y)):
  50.             self.position = (x, y)
  51.             self.refresh_bircks()
  52.             y += 1

  53.     def refresh_bircks(self):
  54.         for (brick, (x, y)) in zip(self.bricks, self.cur_layout):
  55.             brick.position = (self.position[0] + x, self.position[1] + y)

  56.     def stop(self):
  57.         global field_bricks
  58.         global score
  59.         self.stopped = True
  60.         ys = []
  61.         for brick in self.bricks:
  62.             field_bricks.append(brick)
  63.             (x, y) = brick.position
  64.             if y not in ys:
  65.                 ys.append(y)
  66.             field_map[y][x] = 1

  67.         eliminate_count = 0
  68.         ys.sort()

  69.         for y in ys:
  70.             if 0 in field_map[y]:
  71.                 continue
  72.             eliminate_count += 1
  73.             for fy in range(y, 0, -1):
  74.                 field_map[fy] = field_map[fy - 1][:]
  75.             field_map[0] = [0 for i in range(field_width)]

  76.             tmp_field_bricks = []
  77.             for fb in field_bricks:
  78.                 (fx, fy) = fb.position
  79.                 if fy < y:
  80.                     fb.position = (fx, fy + 1)
  81.                     tmp_field_bricks.append(fb)
  82.                 elif fy > y:
  83.                     tmp_field_bricks.append(fb)
  84.             field_bricks = tmp_field_bricks
  85.         if eliminate_count == 1:
  86.             score += 1
  87.         elif eliminate_count == 2:
  88.             score += 2
  89.         elif eliminate_count == 3:
  90.             score += 4
  91.         elif eliminate_count == 4:
  92.             score += 6

  93.     def update(self, time):
  94.         self.draw()
  95.         if time - self.last_move >= self.move_interval:
  96.             new_position = (self.position[0], self.position[1] + 1)
  97.             if self.isLegal(self.cur_layout, new_position):
  98.                 self.position = new_position
  99.                 self.refresh_bircks()
  100.                 self.last_move = time
  101.             else:
  102.                 self.stop()

  103.     def rotate(self):
  104.         new_direction = (self.direction + 1) % len(self.bricks_layout)
  105.         new_layout = self.bricks_layout[new_direction]
  106.         if not self.isLegal(new_layout, self.position):
  107.             return
  108.         self.direction = new_direction
  109.         self.cur_layout = new_layout
  110.         for (brick, (x, y)) in zip(self.bricks, self.cur_layout):
  111.             brick.position = (self.position[0] + x, self.position[1] + y)
  112.         self.refresh_bircks()
  113.         self.draw()


  114. # 0: oooo
  115. # 1: oo
  116. #    oo
  117. # 2: o
  118. #   ooo
  119. # 3: o
  120. #    oo
  121. #     o
  122. # 4:  o
  123. #    oo
  124. #    o
  125. # 5: ooo
  126. #    o
  127. # 6: ooo
  128. #      o
  129. bricks_layout_0 = (((0, 0), (0, 1), (0, 2), (0, 3)), ((0, 1), (1, 1), (2, 1), (3, 1)))
  130. bricks_layout_1 = (((1, 0), (2, 0), (1, 1), (2, 1)), )
  131. bricks_layout_2 = (
  132.     ((1, 0), (0, 1), (1, 1), (2, 1)),
  133.     ((0, 1), (1, 0), (1, 1), (1, 2)),
  134.     ((1, 2), (0, 1), (1, 1), (2, 1)),
  135.     ((2, 1), (1, 0), (1, 1), (1, 2)),
  136. )
  137. bricks_layout_3 = (
  138.     ((0, 1), (1, 1), (1, 0), (2, 0)),
  139.     ((0, 0), (0, 1), (1, 1), (1, 2)),
  140. )
  141. bricks_layout_4 = (
  142.     ((0, 0), (1, 0), (1, 1), (2, 1)),
  143.     ((1, 0), (1, 1), (0, 1), (0, 2)),
  144. )
  145. bricks_layout_5 = (
  146.     ((0, 0), (1, 0), (1, 1), (1, 2)),
  147.     ((0, 2), (0, 1), (1, 1), (2, 1)),
  148.     ((1, 0), (1, 1), (1, 2), (2, 2)),
  149.     ((2, 0), (2, 1), (1, 1), (0, 1)),
  150. )
  151. bricks_layout_6 = (
  152.     ((2, 0), (1, 0), (1, 1), (1, 2)),
  153.     ((0, 0), (0, 1), (1, 1), (2, 1)),
  154.     ((0, 2), (1, 2), (1, 1), (1, 0)),
  155.     ((2, 2), (2, 1), (1, 1), (0, 1)),
  156. )

  157. field_width, field_height = 16, 30
  158. brick_size = 4
  159. field_map = [[0 for i in range(field_width)] for i in range(field_height)]
  160. field_bricks = []
  161. score = 0
  162. running = True
  163. threshhold = 400


  164. def drawField():
  165.     for brick in field_bricks:
  166.         brick.draw()


  167. def getBlock():
  168.     block_type = random.randint(0, 6)
  169.     if block_type == 0:
  170.         return Block(bricks_layout_0, random.randint(0, len(bricks_layout_0) - 1))
  171.     elif block_type == 1:
  172.         return Block(bricks_layout_1, random.randint(0, len(bricks_layout_1) - 1))
  173.     elif block_type == 2:
  174.         return Block(bricks_layout_2, random.randint(0, len(bricks_layout_2) - 1))
  175.     elif block_type == 3:
  176.         return Block(bricks_layout_3, random.randint(0, len(bricks_layout_3) - 1))
  177.     elif block_type == 4:
  178.         return Block(bricks_layout_4, random.randint(0, len(bricks_layout_4) - 1))
  179.     elif block_type == 5:
  180.         return Block(bricks_layout_5, random.randint(0, len(bricks_layout_5) - 1))
  181.     elif block_type == 6:
  182.         return Block(bricks_layout_6, random.randint(0, len(bricks_layout_6) - 1))


  183. def run():
  184.     global running
  185.     btn_n_stat, btn_o_stat, btn_t_stat, btn_p_stat = [0] * 4

  186.     while running:

  187.         cur_block = getBlock()

  188.         if not cur_block.isLegal(cur_block.cur_layout, cur_block.position):
  189.             cur_block.draw()
  190.             running = False
  191.             continue

  192.         while not cur_block.stopped:

  193.             oled.fill(0)
  194.             ticks = time.ticks_ms()
  195.             cur_block.update(ticks)
  196.             drawField()
  197.             oled.show()

  198.             if touchPad_T.read() < threshhold and btn_t_stat == 0:
  199.                 cur_block.rotate()
  200.                 btn_t_stat = 1
  201.             elif touchPad_T.read() >= threshhold:
  202.                 btn_t_stat = 0

  203.             if touchPad_P.read() < threshhold and btn_p_stat == 0:
  204.                 cur_block.down()
  205.                 btn_p_stat = 1
  206.             elif touchPad_P.read() >= threshhold:
  207.                 btn_p_stat = 0

  208.             if touchPad_N.read() < threshhold and btn_n_stat == 0:
  209.                 cur_block.left()
  210.                 btn_n_stat = 1
  211.             elif touchPad_N.read() >= threshhold:
  212.                 btn_n_stat = 0

  213.             if touchPad_O.read() < threshhold and btn_o_stat == 0:
  214.                 cur_block.right()
  215.                 btn_o_stat = 1
  216.             elif touchPad_O.read() >= threshhold:
  217.                 btn_o_stat = 0
  218.     oled.fill(0)
  219.     oled.text('Game over!', 25, 20)
  220.     oled.text('Score:%d' % score, 25, 32)
  221.     oled.show()


  222. if __name__ == '__main__':
  223.     run()


广告

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 13:54:00 显示全部楼层
5、贪吃蛇2
使用三轴传感器控制前后左右


  1. #MicroPython动手做(35)——小游戏
  2. #贪吃蛇2

  3. from mpython import *
  4. import random, time

  5. WIDTH, HEIGHT = 127, 63


  6. class Direction():
  7.     """
  8.     贪吃蛇方向,含上下左右
  9.     """

  10.     UP = 0
  11.     DOWN = 1
  12.     LEFT = 2
  13.     RIGHT = 3


  14. class GameState():
  15.     """
  16.     游戏状态
  17.     """
  18.     PLAYING = 0
  19.     PAUSE = 1
  20.     WIN = 2
  21.     FAIL = 3


  22. class Snake():
  23.     """
  24.     贪吃蛇

  25.     构建snake

  26.     :param cube(int): 网格大小默认4
  27.     """

  28.     def __init__(self, cube=4):

  29.         self.cube_width = cube
  30.         self.grid_width_num, self.grid_height_num = WIDTH // self.cube_width, HEIGHT // self.cube_width
  31.         self.snake_body = []
  32.         self.snake_body.append((int(self.grid_width_num // 2 * self.cube_width),
  33.                                 int(self.grid_height_num // 2 * self.cube_width)))  # 添加贪吃蛇的“头”
  34.         self.food_pos = self.generate_food()
  35.         self.direction = Direction.LEFT

  36.     def draw_grids(self):
  37.         """
  38.         绘制网格
  39.         """
  40.         for i in range(self.grid_width_num + 1):
  41.             oled.vline(self.cube_width * i, 0, HEIGHT, 1)

  42.         for i in range(self.grid_height_num + 1):
  43.             oled.hline(0, self.cube_width * i, WIDTH, 1)

  44.     def draw_body(self):
  45.         """
  46.         绘制snake
  47.         """
  48.         for sb in self.snake_body:
  49.             # pygame.draw.rect(screen, WHITE, (sb[0], sb[1], CUBE_WIDTH, CUBE_WIDTH))
  50.             oled.fill_rect(sb[0], sb[1], self.cube_width, self.cube_width, 1)

  51.     def generate_food(self):
  52.         """
  53.         随机产生一个食物
  54.         """
  55.         self.food_pos = (random.randint(0, self.cube_width - 1), random.randint(0, self.grid_height_num - 1))
  56.         return self.food_pos

  57.     def draw_food(self):
  58.         """
  59.         绘制食物
  60.         """
  61.         oled.fill_rect(self.food_pos[0] * self.cube_width, self.food_pos[1] * self.cube_width, self.cube_width,
  62.                        self.cube_width, 1)

  63.     def grow(self):
  64.         """
  65.         判断贪吃蛇是否吃到了事物,如果吃到了我们就加长小蛇的身体
  66.         """
  67.         if self.snake_body[0][0] == self.food_pos[0] * self.cube_width and \
  68.             self.snake_body[0][1] == self.food_pos[1] * self.cube_width:
  69.             return True

  70.         return False

  71.     def refresh(self):
  72.         """
  73.         更新小蛇身体的位置
  74.         """
  75.         for i in range(len(self.snake_body) - 1, 0, -1):
  76.             self.snake_body[i] = self.snake_body[i - 1]

  77.     def move(self):
  78.         """
  79.         移动snake身体
  80.         """
  81.         if self.direction == Direction.UP:
  82.             self.snake_body[0] = (self.snake_body[0][0], self.snake_body[0][1] - self.cube_width)

  83.         elif self.direction == Direction.DOWN:
  84.             self.snake_body[0] = (self.snake_body[0][0], self.snake_body[0][1] + self.cube_width)

  85.         # top += cube_width
  86.         elif self.direction == Direction.LEFT:

  87.             self.snake_body[0] = (self.snake_body[0][0] - self.cube_width, self.snake_body[0][1])

  88.         # left -= cube_width
  89.         elif self.direction == Direction.RIGHT:
  90.             self.snake_body[0] = (self.snake_body[0][0] + self.cube_width, self.snake_body[0][1])


  91. class Game():
  92.     """
  93.     snake游戏控制
  94.     """

  95.     def __init__(self, fps=8):
  96.         self.snake = Snake()
  97.         self.get_body = self.snake.snake_body
  98.         self.state = None
  99.         self.fps = fps
  100.         self.handles_cb = None

  101.     def is_win(self):
  102.         """
  103.         判断是否赢
  104.         """
  105.         return len(self.get_body) == WIDTH * HEIGHT - 1

  106.     def is_fail(self):
  107.         """
  108.         判断是否输
  109.         """
  110.         if not 0 <= self.get_body[0][0] < WIDTH or not 0 <= self.get_body[0][1] < HEIGHT:
  111.             return True

  112.         return False

  113.     @property
  114.     def score(self):
  115.         """
  116.         游戏分数
  117.         """
  118.         return len(self.get_body) - 1

  119.     def handles_accele(self, threshold=0.2):
  120.         """
  121.         掌控板加速度控制
  122.         """
  123.         x = accelerometer.get_x()
  124.         y = accelerometer.get_y()
  125.         if y <= 1 and y >= -1:
  126.             if abs(y) > threshold:
  127.                 if y > 0:
  128.                     self.snake.direction = Direction.LEFT
  129.                 else:
  130.                     self.snake.direction = Direction.RIGHT
  131.         if x <= 1 and x >= -1:
  132.             if abs(x) > threshold:
  133.                 if x > 0:
  134.                     self.snake.direction = Direction.DOWN
  135.                 else:
  136.                     self.snake.direction = Direction.UP

  137.     def handles_callback(self, f):
  138.         """
  139.         游戏控制回调函数,可外部自定义控制方式
  140.         """
  141.         self.handles_cb = f

  142.     def run(self):
  143.         """
  144.         游戏运行
  145.         """
  146.         self.state = GameState.PLAYING
  147.         update_time = time.ticks_ms()

  148.         while self.state == GameState.PLAYING:  # 游戏状态为PLAYING

  149.             self.handles_cb()  # 游戏控制回调函数

  150.             # 显示帧刷新,刷新方块位置
  151.             if time.ticks_diff(time.ticks_ms(), update_time) > (1000 // self.fps):

  152.                 last_pos = self.get_body[-1]  # 这里需要保存一下尾部的位置,如果小蛇迟到了食物,需要在尾部增长

  153.                 self.snake.refresh()  # 更新小蛇身体的位置
  154.                 self.snake.move()  # 改变头部的位置

  155.                 if self.snake.grow():  # 判断小蛇是否吃到了事物,吃到了就成长,如果吃到了事物我们就产生一个新的食物
  156.                     self.snake.generate_food()
  157.                     self.get_body.append(last_pos)

  158.                 oled.fill(0)  # 清屏
  159.                 self.snake.draw_body()  # 画小蛇的身体
  160.                 self.snake.draw_food()  # 画出食物

  161.                 oled.show()  # 显示生效
  162.                 update_time = time.ticks_ms()  # 刷新帧时间

  163.                 if self.is_fail():  # 判断if输
  164.                     self.state = GameState.FAIL
  165.                     break
  166.                 if self.is_win():  # 判断if赢
  167.                     self.state = GameState.WIN
  168.                     break

  169.         if self.state == GameState.FAIL:  # 输了,显示分数
  170.             oled.fill(0)
  171.             oled.text('Game over!', 25, 20)
  172.             oled.text('Score:%d' % self.score, 25, 32)
  173.             oled.show()

  174.         if self.state == GameState.WIN:  # 赢了!
  175.             oled.fill(0)
  176.             oled.text('You win!', 25, 20)
  177.             oled.show()


  178. if __name__ == '__main__':
  179.     game = Game(fps=8)
  180.     game.handles_callback(game.handles_accele)
  181.     game.run()


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 15:11:33 显示全部楼层

8、模拟计算器(shworld)

通过按键A向左移动光标,按键B向右移动光标
金手指Y键确认选择
支持多元运算,最长显示结果限定在16位左右,防止超出屏幕宽度
如果运算错误会输出显示,比如被除数为0或者其他错误乱输入



  1. #MicroPython动手做(35)——小游戏
  2. #模拟计算器

  3. from mpython import *

  4. #图片bitmap数组
  5. bmp = bytearray([\
  6. 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,
  7. 0X80,0X0C,0X00,0X60,0X03,0X00,0X18,0X00,0XC0,0X06,0X00,0X30,0X01,0X80,0X08,0X00,
  8. 0X80,0X0C,0X00,0X60,0X03,0X00,0X18,0X00,0XC0,0X06,0X3E,0X30,0X61,0X83,0X08,0X00,
  9. 0X82,0X0C,0X3C,0X61,0XE3,0X02,0X18,0X40,0XC1,0X06,0X02,0X30,0XB1,0X84,0X88,0X00,
  10. 0X86,0X0C,0X44,0X61,0X23,0X06,0X18,0X40,0XC3,0X06,0X02,0X31,0X11,0X84,0X48,0X00,
  11. 0X82,0X0C,0X04,0X60,0X23,0X06,0X18,0X70,0XC2,0X06,0X04,0X30,0XA1,0X84,0XC8,0X00,
  12. 0X82,0X0C,0X08,0X60,0XC3,0X0A,0X18,0X08,0XC7,0XC6,0X04,0X30,0XE1,0X87,0X88,0X00,
  13. 0X82,0X0C,0X08,0X60,0X23,0X12,0X18,0X08,0XC4,0X46,0X08,0X31,0X91,0X81,0X88,0X00,
  14. 0X82,0X0C,0X10,0X60,0X23,0X1F,0X18,0X88,0XC4,0X46,0X08,0X31,0X11,0X81,0X08,0X00,
  15. 0X82,0X0C,0X20,0X61,0X63,0X02,0X18,0X58,0XC6,0XC6,0X08,0X30,0XB1,0X83,0X08,0X00,
  16. 0X82,0X0C,0X3C,0X60,0X83,0X00,0X18,0X20,0XC3,0X86,0X00,0X30,0X41,0X80,0X08,0X00,
  17. 0X80,0X0C,0X00,0X60,0X03,0X00,0X18,0X00,0XC0,0X06,0X00,0X30,0X01,0X80,0X08,0X00,
  18. 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,
  19. 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,
  20. 0X80,0X0C,0X00,0X60,0X03,0X00,0X18,0X00,0XC0,0X06,0X00,0X20,0X00,0X00,0X00,0X00,
  21. 0X82,0X0C,0X00,0X60,0X03,0X00,0X18,0X00,0XC0,0X06,0X1C,0X20,0X00,0X00,0X00,0X00,
  22. 0X85,0X0C,0X00,0X60,0X03,0X10,0X58,0X08,0XC0,0X06,0X34,0X20,0X00,0X00,0X00,0X00,
  23. 0X88,0X8C,0X10,0X60,0X03,0X08,0X98,0X10,0XDF,0XF6,0X22,0X20,0X00,0X00,0X00,0X00,
  24. 0X88,0X8C,0X10,0X60,0X03,0X01,0X18,0X10,0XC0,0X06,0X20,0X20,0X00,0X00,0X00,0X00,
  25. 0X88,0X8C,0X7C,0X61,0XE3,0X06,0X18,0X20,0XC0,0X06,0X20,0X20,0X00,0X00,0X00,0X00,
  26. 0X88,0X8C,0X10,0X60,0X03,0X06,0X18,0X00,0XC0,0X06,0X22,0X20,0X00,0X00,0X00,0X00,
  27. 0X8C,0X8C,0X10,0X60,0X03,0X09,0X18,0X40,0XDF,0XF6,0X26,0X20,0X00,0X00,0X00,0X00,
  28. 0X87,0X0C,0X00,0X60,0X03,0X10,0X98,0X00,0XC0,0X06,0X1C,0X20,0X00,0X00,0X00,0X00,
  29. 0X80,0X0C,0X00,0X60,0X03,0X00,0X18,0X80,0XC0,0X06,0X00,0X20,0X00,0X00,0X00,0X00,
  30. 0X80,0X0C,0X00,0X60,0X03,0X00,0X18,0X00,0XC0,0X06,0X00,0X20,0X00,0X00,0X00,0X00,
  31. 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X00,
  32. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  33. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  34. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  35. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  36. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  37. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  38. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  39. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  40. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  41. 0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
  42. 0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
  43. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  44. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  45. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  46. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  47. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  48. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  49. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  50. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  51. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  52. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  53. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  54. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  55. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  56. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  57. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  58. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  59. 0X00,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,
  60. 0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
  61. 0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,
  62. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  63. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  64. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  65. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  66. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  67. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  68. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  69. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  70. ])
  71. #[建议]
  72. #这一块由于数据太大写入太慢影响调试速度
  73. #如果技术上跟的上的话,可以把背景事先截图,然后删掉代码,这样写入很快,然后盲按按钮调试

  74. #主要逻辑是判断坐标来取值,把值拼接起来形成字符串,最后通过eval()函数运算
  75. #实现方法很多种,自己的代码3个月后也不一定看懂,最好的教程是自己实现和学习
  76. #by阿唯




  77. #-------------------变量定义-------------------
  78. #矩形光标的宽高
  79. RECT_CURSOR=[13,12]

  80. #第一行各键序XY坐标,Y轴固定0
  81. #偏移量13为矩形光标的宽度
  82. KEY_ONE=[0,0]
  83. KEY_TWO=[13,0]
  84. KEY_THREE=[26,0]
  85. KEY_FOUR=[39,0]
  86. KEY_FIVE=[52,0]
  87. KEY_SIX=[65,0]
  88. KEY_SEVEN=[78,0]
  89. KEY_EIGHT=[91,0]
  90. KEY_NINE=[104,0]
  91. #第二行各键序XY坐标,Y轴固定13
  92. KEY_ZERO=[0,13]
  93. KEY_ADD=[13,13]
  94. KEY_MINUS=[26,13]
  95. KEY_MULTI=[39,13]
  96. KEY_DIVIDE=[52,13]
  97. KEY_EQUAL=[65,13]
  98. KEY_CLEAR=[78,13]

  99. #定义键序坐标列表,用于按钮左右移动,通过列表索引的增减来移动
  100. KEY_LIST=[KEY_ONE,KEY_TWO,KEY_THREE,KEY_FOUR,KEY_FIVE,KEY_SIX,
  101. KEY_SEVEN,KEY_EIGHT,KEY_NINE,KEY_ZERO,KEY_ADD,KEY_MINUS,
  102. KEY_MULTI,KEY_DIVIDE,KEY_EQUAL,KEY_CLEAR]

  103. #定义键序值列表,用于取值运算和显示
  104. KEY_LIST_VAL=["1","2","3","4","5","6","7","8","9","0","+","-","*","/","=","c"]

  105. #当前键序0,即引用KEY_LIST[0],也就是默认在1的位置
  106. KEY_INDEX=0

  107. #数值内容,通过eval()对字符串表达式直接运算
  108. RESULT_CALC=""






  109. #-------------------函数方法-------------------
  110. #移动光标,例moveCursor("left")
  111. def moveCursor(direction=None):
  112.     oled.fill(0)
  113.     oled.bitmap(0, 0, bmp, 128, 64, 1)
  114.     oled.DispChar("输出:"+RESULT_CALC,10,37)
  115.    
  116.     global KEY_INDEX           #如果要对全局变量修改的话需要引用
  117.     if(direction=="left"):     #如果是向左移动,则KEY_LIST索引-1
  118.         if KEY_INDEX>0:       #只有索引>0才可以进行递减,防止越界
  119.              KEY_INDEX=KEY_INDEX-1
  120.    
  121.     if(direction=="right"):    #同理
  122.         if KEY_INDEX<15:
  123.             KEY_INDEX=KEY_INDEX+1
  124.    
  125.     _x=KEY_LIST[KEY_INDEX][0]  #通过KEY_LIST的索引来获取矩形光标的填充位置
  126.     _y=KEY_LIST[KEY_INDEX][1]
  127.    
  128.     RECT_CURSOR_WIDTH=RECT_CURSOR[0]    #获取矩形光标的宽高
  129.     RECT_CURSOR_HEIGHT=RECT_CURSOR[1]
  130.    
  131.     oled.fill_rect(_x, _y, RECT_CURSOR_WIDTH, RECT_CURSOR_HEIGHT, 1) #填充画面
  132.     oled.show()






  133. #-------------------程序入口-------------------
  134. #第一次方向参数direction不传,用于渲染一次主画面
  135. moveCursor()








  136. #-------------------按钮监听-------------------
  137. #按钮a触发事件
  138. def on_button_a_down(_):
  139.     if button_a.value() == 1: return
  140.     moveCursor("left")

  141. #按钮b触发事件
  142. def on_button_b_down(_):
  143.     if button_b.value() == 1: return
  144.     moveCursor("right")

  145. #按钮监听回调函数
  146. button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
  147. button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)


  148. #金手指触摸监听
  149. while True:
  150.     time.sleep_ms(50)                   #延迟调高,按钮迟钝,反之延迟越低越容易误触
  151.     if(touchPad_Y.read() < 100):
  152.         keyVal=KEY_LIST_VAL[KEY_INDEX]  #通过全局索引获取键值列表的值
  153.         if(KEY_INDEX<=9):               #如果索引<=9,说明按的是前面10个数字,直接累加就行
  154.              RESULT_CALC=RESULT_CALC+keyVal
  155.         if(keyVal=="+"):                #如果按的是+好,累加就可以,下面同理
  156.             RESULT_CALC=RESULT_CALC+"+"
  157.         if(keyVal=="-"):
  158.             RESULT_CALC=RESULT_CALC+"-"
  159.         if(keyVal=="*"):
  160.             RESULT_CALC=RESULT_CALC+"*"
  161.         if(keyVal=="/"):
  162.             RESULT_CALC=RESULT_CALC+"/"
  163.         if(keyVal=="="):                #当按了等号后,会获得一个累加的字符串变量RESULT_CALC
  164.             try:                        #RESULT_CALC比如为"1+2*3",这里加try屏蔽运算错误
  165.                 RESULT_CALC=str(eval(RESULT_CALC))  #核心函数eval()进行字符串运算,运算不成立会报错
  166.                 RESULT_CALC=RESULT_CALC[:16]        #取结果集左边16位字符串,防止超出画面显示
  167.                 moveCursor()                        #最后提前调用一次移动函数显示画面
  168.                 RESULT_CALC=""                      #置结果集为空,不会生效,下一次移动才会生效
  169.                 continue                            #跳出本次循环,不然最后moveCursor()又要重画一次
  170.             except:                     #异常处理
  171.                 RESULT_CALC="输入错误"  
  172.                 moveCursor()
  173.                 RESULT_CALC=""
  174.                 continue
  175.         if(keyVal=="c"):
  176.             RESULT_CALC=""
  177.         moveCursor()                    #不传参数direction=None(不移动光标),直接渲染主画面


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-27 08:41:47 显示全部楼层

13、飞行小鸟

  1. #MicroPython动手做(35)——小游戏
  2. #飞行小鸟

  3. from mpython import *
  4. from framebuf import FrameBuffer
  5. import framebuf
  6. import time, uos,urandom

  7. # 16 x 12
  8. BIRD = bytearray([
  9.     0x7, 0xe0, 0x18, 0xf0, 0x21, 0xf8, 0x71, 0xec, 0xf9, 0xec, 0xfc, 0xfc, 0xbe, 0x7e, 0x4c, 0x81, 0x71, 0x7e, 0x40,
  10.     0x82, 0x30, 0x7c, 0xf, 0x80
  11. ])

  12. # 16 x 32
  13. PIPE_TOP = bytearray([
  14.     0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20,
  15.     0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c,
  16.     0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0xff, 0xff, 0x80, 0xf, 0x80,
  17.     0xf, 0x80, 0xf, 0x80, 0xf, 0xff, 0xff
  18. ])
  19. PIPE_DOWN = bytearray([
  20.     0xff, 0xff, 0x80, 0xf, 0x80, 0xf, 0x80, 0xf, 0x80, 0xf, 0xff, 0xff, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c,
  21.     0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20,
  22.     0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c,
  23.     0x20, 0x1c, 0x20, 0x1c, 0x20, 0x1c
  24. ])


  25. # Bitmap images
  26. bird_size = (16, 12)
  27. pipe_size = (16, 32)


  28. WIDTH = 128
  29. HEIGHT = 64


  30. """飞行小鸟类"""
  31. class Bird:
  32.     def __init__(self):
  33.         self.height = bird_size[1]
  34.         self.y = HEIGHT // 2 - self.height // 2
  35.         self.wing_power = 4
  36.         self.gravity = 0.8
  37.         self.vel = -self.wing_power

  38.     # 下落
  39.     def drop(self):
  40.         self.vel += self.gravity
  41.         self.y = int(self.y + self.vel)

  42.     # 飞行
  43.     def flap(self):
  44.         self.vel = -self.wing_power

  45.     # 是否坠落
  46.     def crashed(self):                          
  47.         y_limit = HEIGHT - self.height
  48.         return self.y > y_limit

  49. """障碍类"""
  50. class Obstacle:
  51.     def __init__(self, x,size ):
  52.         self.size =size
  53.         self.gap = urandom.randint(6 + self.size, HEIGHT - 6 - self.size)     # 随机生成间隙大小
  54.         self.x = x              # 距离鸟大小
  55.         self.score = 0          # 分数
  56.         self.rate = 3           # 速率

  57.     # 移动
  58.     def scroll(self):           
  59.         self.x -= self.rate   
  60.         if self.x < -pipe_size[0]:
  61.             self.score += 1
  62.             self.x = WIDTH
  63.             self.gap = urandom.randint(6 + self.size, HEIGHT - 6 - self.size)

  64.     # 是否碰撞
  65.     def collided(self, y):                     
  66.         if self.x < bird_size[0] and self.x > -pipe_size[0] and \
  67.            (self.gap - y > self.size or y + bird_size[1] - self.gap > self.size):
  68.             return True
  69.         else:
  70.             return False


  71. class Game():
  72.     def __init__(self,gap_size):
  73.         
  74.         # 创建鸟和管道的framebuffer
  75.         self.bird_fb = FrameBuffer(BIRD, bird_size[0], bird_size[1], framebuf.MONO_HLSB)         
  76.         self.pipe_top_fb = FrameBuffer(PIPE_TOP, pipe_size[0], pipe_size[1], framebuf.MONO_HLSB)
  77.         self.pipe_down_fb = FrameBuffer(PIPE_DOWN, pipe_size[0], pipe_size[1], framebuf.MONO_HLSB)

  78.         self.gap_size = gap_size
  79.         self.high_score = 0
  80.         self.pressed  = False
  81.         self.game_state = 0
  82.         self.flappy_bird =  None
  83.         self.obstacle_1 =  None
  84.         self.obstacle_2 =  None

  85.     # 保存最高分
  86.     def write_high_score(self,n):
  87.         f = open('fb_high_score.txt', 'w')
  88.         f.write(str(n))
  89.         f.close()

  90.     # 读取最高分
  91.     def read_high_score(self):
  92.         if 'fb_high_score' in uos.listdir():
  93.             f = open('fb_high_score.txt', 'r')
  94.             high_score = f.read()
  95.             f.close()
  96.             return int(high_score)
  97.         else:
  98.             self.write_high_score(0)
  99.             return 0

  100.    # 绘制
  101.     def draw(self):
  102.         oled.fill(0)
  103.         oled.blit(self.bird_fb, 0, self.flappy_bird.y)
  104.         oled.blit(self.pipe_top_fb, self.obstacle_1.x, self.obstacle_1.gap - self.gap_size - pipe_size[1])
  105.         oled.blit(self.pipe_down_fb, self.obstacle_1.x, self.obstacle_1.gap + self.gap_size)
  106.         oled.blit(self.pipe_top_fb, self.obstacle_2.x, self.obstacle_2.gap - self.gap_size - pipe_size[1])
  107.         oled.blit(self.pipe_down_fb, self.obstacle_2.x, self.obstacle_2.gap + self.gap_size)
  108.         oled.fill_rect(WIDTH // 2 - 13, 0, 26, 9, 0)
  109.         oled.text('%03d' % (self.obstacle_1.score + self.obstacle_2.score), WIDTH // 2 - 12, 0)
  110.         oled.show()
  111.    

  112.     def _clicked(self):
  113.         if button_a.value() == 0 and not self.pressed:
  114.             self.pressed = True
  115.             return True
  116.         elif button_a.value() == 1 and self.pressed:
  117.             self.pressed = False
  118.         return False

  119.     # 开机画面
  120.     def game_start(self):
  121.         oled.fill(0)
  122.         oled.blit(self.pipe_down_fb, (WIDTH - pipe_size[0]) // 2, HEIGHT - 12)
  123.         oled.blit(self.bird_fb, (WIDTH - bird_size[0]) // 2, HEIGHT - 12 - bird_size[1])
  124.         oled.rect(0, 0, WIDTH, HEIGHT, 1)
  125.         oled.text('F L A P P Y', WIDTH // 2 - 44, 3)
  126.         oled.text('B I R D', WIDTH // 2 - 28, 13)
  127.         oled.text('Record: ' + '%03d' % self.high_score, WIDTH // 2 - 44, HEIGHT // 2 - 6)
  128.         oled.show()
  129.         self.game_state = 1
  130.       
  131.     def game_waiting(self):
  132.         if self._clicked():
  133.             self.flappy_bird = Bird()                                                               # 实例小鸟对象
  134.             self.obstacle_1 = Obstacle(WIDTH,self.gap_size)                                           # 实例第一个障碍对象
  135.             self.obstacle_2 = Obstacle(WIDTH + (WIDTH + pipe_size[0]) // 2,self.gap_size)             # 实例第二个障碍对象
  136.             self.game_state = 2

  137.     def game_running(self):
  138.         if self._clicked():
  139.             self.flappy_bird.flap()
  140.         self.flappy_bird.drop()
  141.         if self.flappy_bird.crashed():
  142.             self.flappy_bird.y = HEIGHT - self.flappy_bird.height      # 边界限制
  143.             self.game_state = 3
  144.         self.obstacle_1.scroll()
  145.         self.obstacle_2.scroll()
  146.         if self.obstacle_1.collided(self.flappy_bird.y) or self.obstacle_2.collided(self.flappy_bird.y):
  147.             self.game_state = 3
  148.         self.draw()

  149.     def game_over(self):
  150.         oled.fill_rect(WIDTH // 2 - 32, 10, 64, 23, 0)
  151.         oled.rect(WIDTH // 2 - 32, 10, 64, 23, 1)
  152.         oled.text('G A M E', WIDTH // 2 - 28, 13)
  153.         oled.text('O V E R', WIDTH // 2 - 28, 23)
  154.         self.score = self.obstacle_1.score + self.obstacle_2.score
  155.         if self.score > self.high_score:
  156.             self.high_score = self.score
  157.             oled.fill_rect(WIDTH // 2 - 48, 37, 96, 14, 0)
  158.             oled.rect(WIDTH // 2 - 48, 37, 96, 14, 1)
  159.             oled.text('New record!', WIDTH // 2 - 44, 40)
  160.             self.write_high_score(self.high_score)
  161.         oled.show()

  162.         try:
  163.             self.send_score(self.score)
  164.         except:
  165.             pass
  166.         self.game_state = 1


  167.     def run(self):
  168.         while True:
  169.             if self.game_state == 0: self.game_start()
  170.             elif self.game_state == 1: self.game_waiting()
  171.             elif self.game_state == 2: self.game_running()
  172.             elif self.game_state == 3: self.game_over()



  173. if __name__ == '__main__':
  174.     game=Game(gap_size = 16)
  175.     game.run()


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 14:02:19 显示全部楼层
6、记忆力大比拼(shworld)
产生8位随机键序→累加用户的输入键序→判断键序


  1. #MicroPython动手做(35)——小游戏
  2. #记忆力大比拼

  3. from mpython import *
  4. import time
  5. import random
  6. isStart=False    #是否首次载入,不然游戏中按A键又初始化了
  7. inputKey=''      #键序,统计用户输入的键序,如11112222
  8. inputKey_STR=''  #同键序,文本型,只不过用来显示,当前"当前您已输入AAABBBB"
  9. keyOrder=''      #获取到的8位随机键序,如11112222

  10. #获取随机8位键序
  11. def makeKeyOrder():
  12.     keys=''
  13.     for i in range(8):  #循环8次
  14.         key = random.randrange(1, 3)#获取范围1到2, 1为A键,2位B键
  15.         keys = keys + str(key)
  16.     return keys
  17. keyOrder = makeKeyOrder() #返回获取到的8位键序,如11112222


  18. #覆写oledshow,主要减少重复代码量
  19. def oledshow(str,y=0,isClear=True):
  20.     if isClear==False:
  21.         oled.DispChar(str, 0,y)
  22.         oled.show()
  23.         return
  24.     oled.fill(0)
  25.     oled.DispChar(str, 0,y)
  26.     oled.show()


  27. #倒计时显示3-2-1
  28. def countdownshow():
  29.     j=4
  30.     for i in range(3):
  31.         j = j-1
  32.         oledshow('倒计时:%s'%str(j),0)
  33.         time.sleep(1)

  34.         
  35. #每次用户按键后触发该方法
  36. def checkKey():
  37.     global keyOrder,inputKey,inputKey_STR #引用全局变量,如果不修改变量,不需要申明global
  38.     if len(inputKey)==8:                  #如果当前按键数等于8位才开始进行对比
  39.         if inputKey==keyOrder:            #如果输入的8位键序和生成的8位键序匹配
  40.             oledshow('恭喜您,按对了!...',0)#按键正确,输出内容
  41.         else:
  42.             oledshow('别灰心,再接再厉!...',0)#否则按键失败,输出内容
  43.             
  44.         #重新开始下一轮
  45.         time.sleep(2)   #暂停2秒,避免内容切换过快看不到
  46.         inputKey=''     #清空用户输入的键值,如11112222
  47.         inputKey_STR='' #清空用户输入的键值,文本型,如AAAABBBB
  48.         oledshow('下一题开始:',0)
  49.         time.sleep(2)
  50.         keyOrder = makeKeyOrder() #重新获取8位键序,11112222
  51.         countdownshow()           #倒计时显示3-2-1
  52.         showKey()                 #显示要记忆的键序
  53.         
  54.    
  55. #显示键序
  56. #主要是把数字11112222,转换成对应的AAAABBBB,很好理解,多看看
  57. def showKey():
  58.     global keyOrder  #引用全局变量
  59.     key_str=''   #局部变量
  60.     for key in keyOrder:
  61.         if key=='1':
  62.             key_str=key_str+"A"
  63.         if key=='2':
  64.             key_str=key_str+"B"
  65.     oledshow(key_str,0)
  66.     time.sleep(1)
  67.     oledshow('',0)

  68.         
  69. #按键A触发事件
  70. def on_button_a_down(_):
  71.     time.sleep_ms(100)   #延迟调高点,避免产生2次按键事件
  72.     global isStart,inputKey,inputKey_STR #引用全局变量

  73.     if button_a.value() == 1: return
  74.     if isStart == True:
  75.         inputKey=inputKey+'1'           #统计用户键序
  76.         inputKey_STR=inputKey_STR+'A'   #统计用户键序,文本型,用来显示当前的输入
  77.         oledshow('您输入的是:'+inputKey_STR,0) #显示当前的输入
  78.         checkKey()                      #输入的键序进行校验匹配
  79.         return
  80.     isStart=True
  81.     oledshow('游戏现在开始...',0)
  82.     time.sleep(1)
  83.     countdownshow()
  84.     showKey()
  85.      
  86. #按键B触发事件
  87. def on_button_b_down(_):
  88.     time.sleep_ms(100)  #延迟调高点,避免产生2次按键事件
  89.     global inputKey,inputKey_STR
  90.     if button_b.value() == 1: return
  91.     if isStart == True:
  92.         inputKey=inputKey+'2'            #统计用户键序
  93.         inputKey_STR=inputKey_STR+'B'    #统计用户键序,文本型,用来显示当前的输入
  94.         oledshow('您输入的是:'+inputKey_STR,0) #显示当前的输入
  95.         checkKey()                       #输入的键序进行校验匹配
  96.         return
  97.    
  98. #按键触发监视
  99. button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
  100. button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)

  101. #游戏启动
  102. oledshow('【记忆力大比拼】',0,False)
  103. oledshow('记忆屏幕出现的键序',16,False)
  104. oledshow('如ABABAA,请依次键入',32,False)
  105. oledshow('按A键自动开始游戏',48,False)


广告

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 18:43:10 显示全部楼层
9、是男人就下一百层(luyi)

设置Y/O触摸键控制人物左右移动

  1. #MicroPython动手做(35)——小游戏
  2. #是男人就下一百层

  3. from mpython import *

  4. import time

  5. def man(x, y):
  6.     global x1, y1, xman, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7, x8, y8, x9, y9, x10, y10, yman, down
  7.     oled.fill_circle(x, (y - 25), 3, 1)
  8.     oled.fill_rect((x - 5), (y - 21), 10, 10, 1)
  9.     oled.fill_rect((x - 4), (y - 11), 3, 11, 1)
  10.     oled.fill_rect((x + 1), (y - 11), 3, 11, 1)

  11. def dangban():
  12.     global x, y, x1, y1, xman, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7, x8, y8, x9, y9, x10, y10, yman, down
  13.     oled.fill_rect(0, 0, 5, 8, 1)
  14.     oled.fill_rect(0, 8, 5, 8, 1)
  15.     oled.fill_rect(0, 17, 5, 8, 1)
  16.     oled.fill_rect(0, 26, 5, 8, 1)
  17.     oled.fill_rect(0, 35, 5, 8, 1)
  18.     oled.fill_rect(0, 44, 5, 8, 1)
  19.     oled.fill_rect(0, 53, 5, 8, 1)
  20.     oled.fill_rect(0, 62, 5, 8, 1)

  21. from machine import Timer

  22. _status_p = _status_y = _status_t = _status_h = _status_o = _status_n = 0
  23. def on_touchpad_P_pressed():pass
  24. def on_touchpad_P_unpressed():pass
  25. def on_touchpad_Y_pressed():pass
  26. def on_touchpad_Y_unpressed():pass
  27. def on_touchpad_T_pressed():pass
  28. def on_touchpad_T_unpressed():pass
  29. def on_touchpad_H_pressed():pass
  30. def on_touchpad_H_unpressed():pass
  31. def on_touchpad_O_pressed():pass
  32. def on_touchpad_O_unpressed():pass
  33. def on_touchpad_N_pressed():pass
  34. def on_touchpad_N_unpressed():pass

  35. tim12 = Timer(12)

  36. def timer12_tick(_):
  37.     global _status_p, _status_y, _status_t, _status_h, _status_o, _status_n
  38.     try:
  39.         touchPad_P.read();pass
  40.     except:
  41.         return
  42.     if touchPad_P.read() < 400:
  43.         if 1 != _status_p:_status_p = 1;on_touchpad_P_pressed()
  44.     elif 0 != _status_p:_status_p = 0;on_touchpad_P_unpressed()
  45.     if touchPad_Y.read() < 400:
  46.         if 1 != _status_y:_status_y = 1;on_touchpad_Y_pressed()
  47.     elif 0 != _status_y:_status_y = 0;on_touchpad_Y_unpressed()
  48.     if touchPad_T.read() < 400:
  49.         if 1 != _status_t:_status_t = 1;on_touchpad_T_pressed()
  50.     elif 0 != _status_t:_status_t = 0;on_touchpad_T_unpressed()
  51.     if touchPad_H.read() < 400:
  52.         if 1 != _status_h:_status_h = 1;on_touchpad_H_pressed()
  53.     elif 0 != _status_h:_status_h = 0;on_touchpad_H_unpressed()
  54.     if touchPad_O.read() < 400:
  55.         if 1 != _status_o:_status_o = 1;on_touchpad_O_pressed()
  56.     elif 0 != _status_o:_status_o = 0;on_touchpad_O_unpressed()
  57.     if touchPad_N.read() < 400:
  58.         if 1 != _status_n:_status_n = 1;on_touchpad_N_pressed()
  59.     elif 0 != _status_n:_status_n = 0;on_touchpad_N_unpressed()

  60. tim12.init(period=100, mode=Timer.PERIODIC, callback=timer12_tick)

  61. def on_touchpad_Y_pressed():
  62.     global x, y, x1, y1, xman, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7, x8, y8, x9, y9, x10, y10, yman, down
  63.     xman = xman + -5

  64. def on_touchpad_O_pressed():
  65.     global x, y, x1, y1, xman, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7, x8, y8, x9, y9, x10, y10, yman, down
  66.     xman = xman + 5

  67. def dangban2():
  68.     global x, y, x1, y1, xman, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7, x8, y8, x9, y9, x10, y10, yman, down
  69.     oled.fill_rect(122, 0, 5, 8, 1)
  70.     oled.fill_rect(122, 8, 5, 8, 1)
  71.     oled.fill_rect(122, 17, 5, 8, 1)
  72.     oled.fill_rect(122, 26, 5, 8, 1)
  73.     oled.fill_rect(122, 35, 5, 8, 1)
  74.     oled.fill_rect(122, 44, 5, 8, 1)
  75.     oled.fill_rect(122, 53, 5, 8, 1)
  76.     oled.fill_rect(122, 62, 5, 8, 1)
  77. x1 = 10
  78. y1 = 59
  79. x2 = 70
  80. y2 = 95
  81. x3 = 30
  82. y3 = 129
  83. x4 = 60
  84. y4 = 165
  85. x5 = 90
  86. y5 = 199
  87. x6 = 70
  88. y6 = 235
  89. x7 = 55
  90. y7 = 269
  91. x8 = 40
  92. y8 = 305
  93. x9 = 20
  94. y9 = 339
  95. x10 = 50
  96. y10 = 375
  97. xman = 20
  98. yman = 33
  99. while True:
  100.     down = True
  101.     oled.fill(0)
  102.     dangban()
  103.     dangban2()
  104.     oled.fill_rect(x1, y1, 30, 5, 1)
  105.     oled.fill_rect(x2, y2, 25, 5, 1)
  106.     oled.fill_rect(x3, y3, 20, 5, 1)
  107.     oled.fill_rect(x4, y4, 30, 5, 1)
  108.     oled.fill_rect(x5, y5, 20, 5, 1)
  109.     oled.fill_rect(x6, y6, 25, 5, 1)
  110.     oled.fill_rect(x7, y7, 25, 5, 1)
  111.     oled.fill_rect(x8, y8, 30, 5, 1)
  112.     oled.fill_rect(x9, y9, 20, 5, 1)
  113.     oled.fill_rect(x10, y10, 30, 5, 1)
  114.     man(xman, yman)
  115.     oled.show()
  116.     if xman >= x1 and xman <= x1 + 30 and yman == y1:
  117.         down = False
  118.     if xman >= x2 and xman <= x2 + 25 and yman == y2:
  119.         down = False
  120.     if xman >= x3 and xman <= x3 + 20 and yman == y3:
  121.         down = False
  122.     if xman >= x4 and xman <= x4 + 30 and yman == y4:
  123.         down = False
  124.     if xman >= x5 and xman <= x5 + 20 and yman == y5:
  125.         down = False
  126.     if xman >= x6 and xman <= x6 + 25 and yman == y6:
  127.         down = False
  128.     if xman >= x7 and xman <= x7 + 25 and yman == y7:
  129.         down = False
  130.     if xman >= x8 and xman <= x8 + 30 and yman == y8:
  131.         down = False
  132.     if xman >= x9 and xman <= x9 + 20 and yman == y9:
  133.         down = False
  134.     if xman >= x10 and xman <= x10 + 30 and yman == y10:
  135.         down = False
  136.     if down:
  137.         yman = yman + 1
  138.     else:
  139.         yman = yman + -1
  140.     y1 = y1 + -1
  141.     y2 = y2 + -1
  142.     y3 = y3 + -1
  143.     y4 = y4 + -1
  144.     y5 = y5 + -1
  145.     y6 = y6 + -1
  146.     y7 = y7 + -1
  147.     y8 = y8 + -1
  148.     y9 = y9 + -1
  149.     y10 = y10 + -1
  150.     time.sleep_ms(50)


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 09:41:08 显示全部楼层
1、弹球游戏


  1. #MicroPython动手做(35)——体验小游戏
  2. #弹球游戏

  3. from mpython import *
  4. import music
  5. import time

  6. def func():
  7.     global a, b, FMQ, loc, staart_flag, Start, X, Y
  8.     music.pitch(131, 500)
  9.     loc = 44
  10.     a = 2
  11.     b = 2
  12.     staart_flag = False
  13.     Start = True
  14.     Y = 48
  15.     X = 64
  16.     FMQ = False

  17. def a1():
  18.     global a, b, FMQ, loc, staart_flag, Start, X, Y
  19.     if FMQ:
  20.         music.pitch(131, 500)
  21.         FMQ = False

  22. def a3():
  23.     global a, b, FMQ, loc, staart_flag, Start, X, Y
  24.     if Start:
  25.         if button_a.value() == 0:
  26.             staart_flag = True
  27.             loc = loc - 2
  28.             if loc < 0:
  29.                 loc = 0
  30.         if button_b.value() == 0:
  31.             staart_flag = True
  32.             loc = loc + 2
  33.             if loc > 88:
  34.                 loc = 88

  35. def a2():
  36.     global a, b, FMQ, loc, staart_flag, Start, X, Y
  37.     oled.fill(0)
  38.     oled.fill_rect(loc, 55, 40, 5, 1)
  39.     oled.fill_circle(X, Y, 5, 1)
  40.     oled.show()
  41.     if button_a.value() == 0 and button_b.value() == 0:
  42.         func()
  43.         while button_a.value() == 0 and button_b.value() == 0:
  44.             pass
  45.         time.sleep_ms(100)

  46. def a4():
  47.     global a, b, FMQ, loc, staart_flag, Start, X, Y
  48.     if staart_flag:
  49.         X = X + a
  50.         Y = Y - b
  51.         if X >= 122:
  52.             a = a * -1
  53.         if X <= 5:
  54.             a = a * -1
  55.         if Y <= 5:
  56.             b = b * -1
  57.         if Y >= 48:
  58.             if not (X > loc + 50 or X < loc - 10):
  59.                 b = b * -1
  60.             if X > loc + 50 or X < loc - 10:
  61.                 staart_flag = False
  62.                 Start = False
  63.                 FMQ = True


  64. func()
  65. while True:
  66.     a1()
  67.     a2()
  68.     a3()
  69.     a4()


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
广告

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 10:54:06 显示全部楼层
弹球游戏(实验视频)

https://v.youku.com/v_show/id_XN ... oneSokuUgc_1.dtitle

<iframe height=340 width=100% allowscriptaccess="always" src='https://player.youku.com/embed/XNDcyNzU1MjkwNA==' frameborder=0 allowfullscreen="true"></iframe>

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304

雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 12:40:08 显示全部楼层
4、平衡自行车(shworld)


  1. #MicroPython动手做(35)——小游戏
  2. #平衡自行车

  3. from mpython import *

  4. #自行车BMP图像转字节数据参考
  5. #https://mpython.readthedocs.io/zh/master/tutorials/basics/oled.html#id4
  6. bmp = bytearray([\
  7. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  8. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X00,0X0F,0XF8,0X00,0X00,
  9. 0X00,0X00,0X18,0X00,0X0C,0X0C,0X00,0X00,0X00,0X00,0X08,0X00,0X04,0X04,0X00,0X00,
  10. 0X00,0X00,0X04,0X00,0X02,0X38,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0X00,0X00,0X00,
  11. 0X00,0X00,0X07,0X00,0X07,0X00,0X00,0X00,0X00,0X00,0X09,0X00,0X04,0X80,0X00,0X00,
  12. 0X00,0X00,0X11,0X80,0X0C,0XC0,0X00,0X00,0X00,0XFF,0X30,0X80,0X18,0X7F,0XE0,0X00,
  13. 0X03,0X80,0XE0,0XC0,0X30,0X70,0X38,0X00,0X06,0X00,0XF0,0X60,0X21,0XB0,0X06,0X00,
  14. 0X08,0X00,0X88,0X20,0X43,0X10,0X03,0X00,0X10,0X01,0X04,0X30,0X86,0X08,0X01,0X00,
  15. 0X30,0X03,0X0E,0XFF,0X84,0X0C,0X00,0X80,0X20,0X1F,0XFF,0X31,0X8C,0X04,0X00,0XC0,
  16. 0X60,0X32,0X02,0X20,0X8C,0X00,0X00,0XC0,0X60,0X22,0X02,0X24,0XC8,0X00,0X00,0XC0,
  17. 0X60,0X1F,0X02,0X3C,0X8C,0X00,0X00,0XC0,0X30,0X0F,0XFF,0XFF,0X04,0X00,0X00,0X80,
  18. 0X10,0X00,0X04,0X18,0X04,0X00,0X01,0X80,0X18,0X00,0X0C,0X08,0X02,0X00,0X03,0X00,
  19. 0X0C,0X00,0X18,0X00,0X01,0X00,0X06,0X00,0X07,0X00,0X70,0X00,0X00,0XC0,0X0C,0X00,
  20. 0X01,0XFF,0XC0,0X00,0X00,0X3F,0XF0,0X00,0X00,0X3E,0X00,0X00,0X00,0X0F,0XC0,0X00,
  21. 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
  22. ])
  23. #无限循环
  24. while True:
  25.     bikeWidth=60    #自行车图片宽度
  26.     bikeHeight=30   #自行车图片高度
  27.     bikeInitX=34    #初始化自行车的X中央点,屏幕宽度128/2-补偿自行车宽度30=34
  28.     bikeInitY=35    #初始化自行车的Y点,手动测量调为35即可
  29.     y=accelerometer.get_y() #如官方说明图所示,y轴和x轴是相反的,所以这里获取的是y轴加速度
  30.     if y<=1 and y>=-1:      #定界,其实不定也行。用于下面设定变量转换
  31.         offsetX=int(numberMap(y,1,-1,-60,128)) #-60=最小宽度0-自行车宽度,128为屏幕最大宽度
  32.         #offsetX主要把y轴的加速度转换成屏幕的宽度分辨率
  33.         #numberMap变量转换说明
  34.         #numberMap(输入值,需映射的最小值,需映射的最大值,映射出的最小值,映射出的最大值)
  35.         #比如numberMap(i,1,2,10000,20000)
  36.         #即i是变量,范围在1~2之间,通过numberMap函数你可以得到转换后的范围,在10000-2000之间
  37.         #如i是1.5则返回15000,i是1.8返回18000,以此类推
  38.         move_x=offsetX #移动的坐标
  39.         #清除
  40.         oled.fill(0)
  41.         #填充图形
  42.         oled.Bitmap(move_x,bikeInitY, bmp, bikeWidth  , bikeHeight, 1)
  43.         #填充左侧钉子,手绘坐标
  44.         oled.line(0,64,2,58,1)
  45.         oled.line(2,58,4,64,1)
  46.         #填充右侧钉子,手绘坐标
  47.         oled.line(127,64,125,58,1)  
  48.         oled.line(125,58,123,64,1)  
  49.         #判断是否碰到左右钉子边界,并填充文字提示
  50.         if move_x+bikeWidth >=125:
  51.             oled.DispChar('老铁,扎前胎了!', 60-14, 0)
  52.         if move_x+bikeWidth<=58:
  53.             oled.DispChar('老铁,扎后胎了!',0,0)
  54.         #显示图形文字
  55.         oled.show()


雕爷学编程

  • 42 主题
  • 1226 帖子
  • 2557 积分
  • 身份:LV5 资深技术员
  • 论坛新秀 灌水之王
  • E币:2304
雕爷学编程 2020-6-26 13:48:44 显示全部楼层
#MicroPython动手做(35)——小游戏
#平衡自行车(实验视频)

https://v.youku.com/v_show/id_XN ... oneSokuUgc_1.dtitle

<iframe height=340 width=100% allowscriptaccess="always" src='https://player.youku.com/embed/XNDcyNzY3NTUzMg==' frameborder=0 allowfullscreen="true"></iframe>

1234下一页
快速回复
50
156
广告
关闭 热点推荐上一条 /6 下一条
快速回复 返回列表