cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 781|回复: 11

HP Prime 0图片播放bad apple

[复制链接]
发表于 2026-2-10 10:12:12 | 显示全部楼层 |阅读模式
原理:四叉树
Bad Apple!!.hpappdir.zip (2.06 MB, 下载次数: 25)


1.png
2.png
3.png
  1. [color=#3b3b3b][backcolor=rgb(255, 255, 255)][font=Consolas, &quot]
  2. [color=#af00db]import[/color] [color=#267f99]hpprime[/color]
  3. [color=#af00db]from[/color] utimeq [color=#af00db]import[/color] [color=#000000]*[/color]
  4. [color=#267f99]hpprime[/color].dimgrob([color=#098658]1[/color], [color=#098658]256[/color], [color=#098658]192[/color], [color=#098658]16777215[/color])
  5. [color=#267f99]hpprime[/color].dimgrob([color=#098658]2[/color], [color=#098658]320[/color], [color=#098658]240[/color], [color=#098658]16777215[/color])


  6. [color=#001080]char_to_bin[/color] [color=#000000]=[/color] {[color=#a31515]"A"[/color]:[color=#a31515]"000000"[/color],[color=#a31515]"B"[/color]:[color=#a31515]"000001"[/color],[color=#a31515]"C"[/color]:[color=#a31515]"000010"[/color],[color=#a31515]"D"[/color]:[color=#a31515]"000011"[/color],[color=#a31515]"E"[/color]:[color=#a31515]"000100"[/color],[color=#a31515]"F"[/color]:[color=#a31515]"000101"[/color],[color=#a31515]"G"[/color]:[color=#a31515]"000110"[/color],[color=#a31515]"H"[/color]:[color=#a31515]"000111"[/color],[color=#a31515]"I"[/color]:[color=#a31515]"001000"[/color],[color=#a31515]"J"[/color]:[color=#a31515]"001001"[/color],[color=#a31515]"K"[/color]:[color=#a31515]"001010"[/color],[color=#a31515]"L"[/color]:[color=#a31515]"001011"[/color],[color=#a31515]"M"[/color]:[color=#a31515]"001100"[/color],[color=#a31515]"N"[/color]:[color=#a31515]"001101"[/color],[color=#a31515]"O"[/color]:[color=#a31515]"001110"[/color],[color=#a31515]"P"[/color]:[color=#a31515]"001111"[/color],[color=#a31515]"Q"[/color]:[color=#a31515]"010000"[/color],[color=#a31515]"R"[/color]:[color=#a31515]"010001"[/color],[color=#a31515]"S"[/color]:[color=#a31515]"010010"[/color],[color=#a31515]"T"[/color]:[color=#a31515]"010011"[/color],[color=#a31515]"U"[/color]:[color=#a31515]"010100"[/color],[color=#a31515]"V"[/color]:[color=#a31515]"010101"[/color],[color=#a31515]"W"[/color]:[color=#a31515]"010110"[/color],[color=#a31515]"X"[/color]:[color=#a31515]"010111"[/color],[color=#a31515]"Y"[/color]:[color=#a31515]"011000"[/color],[color=#a31515]"Z"[/color]:[color=#a31515]"011001"[/color],[color=#a31515]"a"[/color]:[color=#a31515]"011010"[/color],[color=#a31515]"b"[/color]:[color=#a31515]"011011"[/color],[color=#a31515]"c"[/color]:[color=#a31515]"011100"[/color],[color=#a31515]"d"[/color]:[color=#a31515]"011101"[/color],[color=#a31515]"e"[/color]:[color=#a31515]"011110"[/color],[color=#a31515]"f"[/color]:[color=#a31515]"011111"[/color],[color=#a31515]"g"[/color]:[color=#a31515]"100000"[/color],[color=#a31515]"h"[/color]:[color=#a31515]"100001"[/color],[color=#a31515]"i"[/color]:[color=#a31515]"100010"[/color],[color=#a31515]"j"[/color]:[color=#a31515]"100011"[/color],[color=#a31515]"k"[/color]:[color=#a31515]"100100"[/color],[color=#a31515]"l"[/color]:[color=#a31515]"100101"[/color],[color=#a31515]"m"[/color]:[color=#a31515]"100110"[/color],[color=#a31515]"n"[/color]:[color=#a31515]"100111"[/color],[color=#a31515]"o"[/color]:[color=#a31515]"101000"[/color],[color=#a31515]"p"[/color]:[color=#a31515]"101001"[/color],[color=#a31515]"q"[/color]:[color=#a31515]"101010"[/color],[color=#a31515]"r"[/color]:[color=#a31515]"101011"[/color],[color=#a31515]"s"[/color]:[color=#a31515]"101100"[/color],[color=#a31515]"t"[/color]:[color=#a31515]"101101"[/color],[color=#a31515]"u"[/color]:[color=#a31515]"101110"[/color],[color=#a31515]"v"[/color]:[color=#a31515]"101111"[/color],[color=#a31515]"w"[/color]:[color=#a31515]"110000"[/color],[color=#a31515]"x"[/color]:[color=#a31515]"110001"[/color],[color=#a31515]"y"[/color]:[color=#a31515]"110010"[/color],[color=#a31515]"z"[/color]:[color=#a31515]"110011"[/color],[color=#a31515]"0"[/color]:[color=#a31515]"110100"[/color],[color=#a31515]"1"[/color]:[color=#a31515]"110101"[/color],[color=#a31515]"2"[/color]:[color=#a31515]"110110"[/color],[color=#a31515]"3"[/color]:[color=#a31515]"110111"[/color],[color=#a31515]"4"[/color]:[color=#a31515]"111000"[/color],[color=#a31515]"5"[/color]:[color=#a31515]"111001"[/color],[color=#a31515]"6"[/color]:[color=#a31515]"111010"[/color],[color=#a31515]"7"[/color]:[color=#a31515]"111011"[/color],[color=#a31515]"8"[/color]:[color=#a31515]"111100"[/color],[color=#a31515]"9"[/color]:[color=#a31515]"111101"[/color],[color=#a31515]"+"[/color]:[color=#a31515]"111110"[/color],[color=#a31515]"/"[/color]:[color=#a31515]"111111"[/color],[color=#a31515]""[/color]:[color=#a31515]"0"[/color]}
  7. [color=#001080]ii[/color] [color=#000000]=[/color] [color=#098658]0[/color]
  8. [color=#001080]z[/color] [color=#000000]=[/color] [color=#a31515]""[/color]


  9. [color=#0000ff]def[/color] [color=#795e26]draw_frame_data[/color]([color=#001080]data[/color]):
  10.     [color=#0000ff]global[/color] [color=#001080]ii[/color], [color=#001080]z[/color]
  11.     [color=#001080]z[/color] [color=#000000]=[/color] [color=#a31515]""[/color]
  12.     [color=#af00db]for[/color] [color=#001080]i[/color] [color=#af00db]in[/color] [color=#267f99]range[/color]([color=#795e26]len[/color]([color=#001080]data[/color])[color=#000000]-[/color][color=#098658]1[/color]):
  13.         [color=#001080]z[/color] [color=#000000]+=[/color] [color=#001080]char_to_bin[/color][[color=#001080]data[/color][[color=#001080]i[/color]]]
  14.     [color=#001080]ii[/color] [color=#000000]=[/color] [color=#098658]0[/color]
  15.     [color=#795e26]recursively_draw[/color]([color=#098658]0[/color], [color=#098658]0[/color], [color=#098658]256[/color])


  16. [color=#0000ff]def[/color] [color=#795e26]recursively_draw[/color]([color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color]):
  17.     [color=#0000ff]global[/color] [color=#001080]ii[/color], [color=#001080]z[/color]
  18.     [color=#af00db]if[/color] [color=#001080]x[/color] [color=#000000]<[/color] [color=#098658]256[/color] [color=#0000ff]and[/color] [color=#001080]y[/color] [color=#000000]<[/color] [color=#098658]192[/color]:
  19.         [color=#001080]ii[/color] [color=#000000]+=[/color] [color=#098658]1[/color]
  20.         [color=#af00db]if[/color] [color=#001080]s[/color] [color=#000000]==[/color] [color=#098658]1[/color]:
  21.             [color=#795e26]draw[/color]([color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color], [color=#001080]z[/color][[color=#001080]ii[/color] [color=#000000]-[/color] [color=#098658]1[/color]])
  22.             [color=#af00db]return[/color]
  23.         [color=#af00db]if[/color] [color=#001080]z[/color][[color=#001080]ii[/color] [color=#000000]-[/color] [color=#098658]1[/color]] [color=#000000]==[/color] [color=#a31515]"0"[/color]:
  24.             [color=#001080]ii[/color] [color=#000000]+=[/color] [color=#098658]1[/color]
  25.             [color=#795e26]draw[/color]([color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color], [color=#001080]z[/color][[color=#001080]ii[/color][color=#000000]-[/color][color=#098658]1[/color]])
  26.         [color=#af00db]else[/color]:
  27.             [color=#795e26]recursively_draw[/color]([color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color])
  28.             [color=#795e26]recursively_draw[/color]([color=#001080]x[/color] [color=#000000]+[/color] [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color], [color=#001080]y[/color], [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color])
  29.             [color=#795e26]recursively_draw[/color]([color=#001080]x[/color], [color=#001080]y[/color] [color=#000000]+[/color] [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color], [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color])
  30.             [color=#795e26]recursively_draw[/color]([color=#001080]x[/color] [color=#000000]+[/color] [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color], [color=#001080]y[/color] [color=#000000]+[/color] [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color], [color=#001080]s[/color] [color=#000000]/[/color] [color=#098658]2[/color])
  31.             

  32. [color=#0000ff]def[/color] [color=#795e26]draw[/color]([color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color], [color=#001080]c[/color]):
  33.     [color=#af00db]if[/color] [color=#001080]c[/color] [color=#000000]==[/color] [color=#a31515]"0"[/color]:
  34.         [color=#267f99]hpprime[/color].fillrect([color=#098658]1[/color], [color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color], [color=#001080]s[/color], [color=#098658]0[/color], [color=#098658]0[/color])
  35.     [color=#af00db]else[/color]:
  36.         [color=#267f99]hpprime[/color].fillrect([color=#098658]1[/color], [color=#001080]x[/color], [color=#001080]y[/color], [color=#001080]s[/color], [color=#001080]s[/color], [color=#098658]16777215[/color], [color=#098658]16777215[/color])
  37.    

  38. [color=#0000ff]def[/color] [color=#795e26]clear_screen[/color]([color=#001080]g[/color]): [color=#267f99]hpprime[/color].fillrect([color=#001080]g[/color], [color=#098658]0[/color], [color=#098658]0[/color], [color=#098658]320[/color], [color=#098658]240[/color], [color=#098658]16777215[/color], [color=#098658]16777215[/color])


  39. [color=#795e26]print[/color]([color=#a31515]"start."[/color])
  40. [color=#795e26]clear_screen[/color]([color=#098658]0[/color])
  41. [color=#001080]time[/color] [color=#000000]=[/color] [color=#267f99]hpprime[/color].eval([color=#a31515]'ticks()'[/color])
  42. [color=#af00db]try[/color]:
  43.     [color=#001080]frame[/color] [color=#000000]=[/color] [color=#098658]0[/color]
  44.     [color=#001080]start[/color] [color=#000000]=[/color] [color=#000000]-[/color][color=#098658]200[/color]
  45.     [color=#001080]a[/color] [color=#000000]=[/color] [color=#098658]0[/color]
  46.     [color=#001080]k[/color] [color=#000000]=[/color] [color=#098658]1[/color]
  47.     [color=#af00db]while[/color] [color=#001080]k[/color] [color=#000000]<=[/color] [color=#098658]33[/color]:
  48.         [color=#af00db]with[/color] [color=#795e26]open[/color]([color=#a31515]"split_"[/color] [color=#000000]+[/color] [color=#267f99]str[/color]([color=#001080]k[/color]) [color=#000000]+[/color] [color=#a31515]".txt"[/color], [color=#001080]mode[/color] [color=#000000]=[/color] [color=#a31515]'r'[/color]) [color=#af00db]as[/color] [color=#001080]data2[/color]:
  49.             [color=#001080]dat0[/color] [color=#000000]=[/color] [color=#001080]data2[/color].[color=#795e26]read[/color]()
  50.             [color=#001080]data2[/color].[color=#795e26]close[/color]
  51.         [color=#001080]b[/color] [color=#000000]=[/color] [color=#001080]dat0[/color].[color=#795e26]split[/color]([color=#a31515]"[/color][color=#ee0000]\n[/color][color=#a31515]"[/color])
  52.         [color=#001080]k[/color] [color=#000000]+=[/color] [color=#098658]1[/color]
  53.         [color=#001080]start[/color] [color=#000000]+=[/color] [color=#098658]200[/color]
  54.         [color=#af00db]while[/color] [color=#001080]frame[/color] [color=#000000]<[/color] [color=#795e26]len[/color]([color=#001080]b[/color]) [color=#000000]-[/color] [color=#098658]1[/color] [color=#000000]+[/color] [color=#001080]start[/color]:
  55.             [color=#001080]t[/color] [color=#000000]=[/color] [color=#001080]a[/color]
  56.             [color=#001080]a[/color] [color=#000000]=[/color] [color=#267f99]hpprime[/color].eval([color=#a31515]'ticks()'[/color])
  57.             [color=#001080]fps[/color] [color=#000000]=[/color] [color=#098658]1000[/color] [color=#000000]/[/color] ([color=#001080]a[/color] [color=#000000]-[/color] [color=#001080]t[/color] [color=#000000]+[/color] [color=#098658]1e-10[/color])
  58.             [color=#001080]frame[/color] [color=#000000]=[/color] [color=#267f99]int[/color](([color=#001080]a[/color] [color=#000000]-[/color] [color=#001080]time[/color]) [color=#000000]/[/color] [color=#098658]30[/color])
  59.             [color=#af00db]if[/color] [color=#001080]frame[/color] [color=#000000]>[/color] [color=#795e26]len[/color]([color=#001080]b[/color]) [color=#000000]-[/color] [color=#098658]1[/color] [color=#000000]+[/color] [color=#001080]start[/color]:
  60.                 [color=#af00db]break[/color]
  61.             [color=#af00db]try[/color]:
  62.                 [color=#795e26]draw_frame_data[/color]([color=#001080]b[/color][[color=#001080]frame[/color] [color=#000000]-[/color] [color=#001080]start[/color]])
  63.             [color=#af00db]except[/color] [color=#267f99]IndexError[/color]:
  64.                 ...
  65.             [color=#795e26]clear_screen[/color]([color=#098658]2[/color])
  66.             [color=#267f99]hpprime[/color].strblit([color=#098658]2[/color], [color=#098658]0[/color], [color=#098658]0[/color], [color=#098658]320[/color], [color=#098658]240[/color], [color=#098658]1[/color])
  67.             [color=#267f99]hpprime[/color].textout([color=#098658]2[/color], [color=#098658]0[/color], [color=#098658]220[/color], [color=#a31515]"fps:[/color][color=#0000ff]{:<3}[/color][color=#a31515]"[/color].[color=#795e26]format[/color]([color=#001080]fps[/color]), [color=#0000ff]0x[/color][color=#098658]969696[/color])
  68.             [color=#267f99]hpprime[/color].blit([color=#098658]0[/color], [color=#098658]0[/color], [color=#098658]0[/color], [color=#098658]2[/color])
  69. [color=#af00db]except[/color] [color=#267f99]KeyboardInterrupt[/color]:
  70.     [color=#795e26]print[/color]()

  71. [/font][/backcolor][/color]
复制代码



 楼主| 发表于 2026-2-10 10:12:57 | 显示全部楼层
  1. import hpprime
  2. from utimeq import *
  3. hpprime.dimgrob(1, 256, 192, 16777215)
  4. hpprime.dimgrob(2, 320, 240, 16777215)


  5. char_to_bin = {"A":"000000","B":"000001","C":"000010","D":"000011","E":"000100","F":"000101","G":"000110","H":"000111","I":"001000","J":"001001","K":"001010","L":"001011","M":"001100","N":"001101","O":"001110","P":"001111","Q":"010000","R":"010001","S":"010010","T":"010011","U":"010100","V":"010101","W":"010110","X":"010111","Y":"011000","Z":"011001","a":"011010","b":"011011","c":"011100","d":"011101","e":"011110","f":"011111","g":"100000","h":"100001","i":"100010","j":"100011","k":"100100","l":"100101","m":"100110","n":"100111","o":"101000","p":"101001","q":"101010","r":"101011","s":"101100","t":"101101","u":"101110","v":"101111","w":"110000","x":"110001","y":"110010","z":"110011","0":"110100","1":"110101","2":"110110","3":"110111","4":"111000","5":"111001","6":"111010","7":"111011","8":"111100","9":"111101","+":"111110","/":"111111","":"0"}
  6. ii = 0
  7. z = ""


  8. def draw_frame_data(data):
  9.     global ii, z
  10.     z = ""
  11.     for i in range(len(data)-1):
  12.         z += char_to_bin[data[i]]
  13.     ii = 0
  14.     recursively_draw(0, 0, 256)


  15. def recursively_draw(x, y, s):
  16.     global ii, z
  17.     if x < 256 and y < 192:
  18.         ii += 1
  19.         if s == 1:
  20.             draw(x, y, s, z[ii - 1])
  21.             return
  22.         if z[ii - 1] == "0":
  23.             ii += 1
  24.             draw(x, y, s, z[ii-1])
  25.         else:
  26.             recursively_draw(x, y, s / 2)
  27.             recursively_draw(x + s / 2, y, s / 2)
  28.             recursively_draw(x, y + s / 2, s / 2)
  29.             recursively_draw(x + s / 2, y + s / 2, s / 2)
  30.             

  31. def draw(x, y, s, c):
  32.     if c == "0":
  33.         hpprime.fillrect(1, x, y, s, s, 0, 0)
  34.     else:
  35.         hpprime.fillrect(1, x, y, s, s, 16777215, 16777215)
  36.    

  37. def clear_screen(g): hpprime.fillrect(g, 0, 0, 320, 240, 16777215, 16777215)


  38. print("start.")
  39. clear_screen(0)
  40. time = hpprime.eval('ticks()')
  41. try:
  42.     frame = 0
  43.     start = -200
  44.     a = 0
  45.     k = 1
  46.     while k <= 33:
  47.         with open("split_" + str(k) + ".txt", mode = 'r') as data2:
  48.             dat0 = data2.read()
  49.             data2.close
  50.         b = dat0.split("\n")
  51.         k += 1
  52.         start += 200
  53.         while frame < len(b) - 1 + start:
  54.             t = a
  55.             a = hpprime.eval('ticks()')
  56.             fps = 1000 / (a - t + 1e-10)
  57.             frame = int((a - time) / 30)
  58.             if frame > len(b) - 1 + start:
  59.                 break
  60.             try:
  61.                 draw_frame_data(b[frame - start])
  62.             except IndexError:
  63.                 ...
  64.             clear_screen(2)
  65.             hpprime.strblit(2, 0, 0, 320, 240, 1)
  66.             hpprime.textout(2, 0, 220, "fps:{:<3}".format(fps), 0x969696)
  67.             hpprime.blit(0, 0, 0, 2)
  68. except KeyboardInterrupt:
  69.     print()
复制代码
发表于 2026-2-10 11:01:10 | 显示全部楼层
G1有点卡啊
发表于 2026-2-10 12:16:44 | 显示全部楼层
我去试一试看下
发表于 2026-2-10 12:21:13 | 显示全部楼层
kaimiao 发表于 2026-2-10 12:16
我去试一试看下

真的很卡
发表于 2026-2-10 12:37:01 | 显示全部楼层

其实这个utimeq库是干啥的我一直不太清楚,能细说说吗?
不过hpprime库不是有ticks函数了吗,应该没必要直接eval吧(虽然只能省点字)
发表于 2026-2-10 12:38:30 | 显示全部楼层

正常,毕竟还是要计算和渲染这么多,所以我直接仿真器试的
发表于 2026-2-10 12:58:59 | 显示全部楼层
kaimiao 发表于 2026-2-10 12:38
正常,毕竟还是要计算和渲染这么多,所以我直接仿真器试的

699
 楼主| 发表于 2026-2-10 13:22:12 | 显示全部楼层
kaimiao 发表于 2026-2-10 12:37
其实这个utimeq库是干啥的我一直不太清楚,能细说说吗?
不过hpprime库不是有ticks函数了吗,应该没必要 ...

删了,没用
 楼主| 发表于 2026-2-10 13:22:56 | 显示全部楼层
发表于 2026-2-10 13:29:57 | 显示全部楼层

啊这,挺无语的
 楼主| 发表于 2026-2-10 13:36:34 | 显示全部楼层
kaimiao 发表于 2026-2-10 13:29
啊这,挺无语的

屏幕截图 2026-02-10 133418.png

我在学校
您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|cnCalc计算器论坛

GMT+8, 2026-7-19 00:58 , Processed in 0.018314 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表