学习python编程,在新东方少儿编程官网的自由创作平台做的一些作品。
可以在线运行,效果如下(在新页面中打开链接):
代码如下(用到平台自定义的xdf库):
from xdf import * cubes = [] offY = 0 tarY = 0 step = 0 pool = [] txt = text("失败了", 768 / 2, 1024 / 2, 50, "red") txt.hide() isPlaying = True def addRow(): ind = random(3)-1 for i in range(3): if i == ind: addCube(1) else: addCube(0) def addCube(typ): if len(pool) > 0: a = pool.pop(0) a[0].hide() a[1].hide() a[2] = typ if typ == 0: a[0].show() else: a[1].show() cubes.append(a) else: cub0 = box(0, 0, 256, 256, "#fff", "red") cub1 = box(0, 0, 256, 256, "#0f0", "red") cubes.append([cub0, cub1, typ]) cub0.hide() cub1.hide() if typ == 0: cub0.show() else: cub1.show() def update(): cn = len(cubes) tn = cn // 3 for i in range(cn): m = i // 3 n = i % 3 cubes[i][0].move((n + 0.5) * 256, (tn - m - 1.5 + offY) * 256) cubes[i][1].move((n + 0.5) * 256, (tn - m - 1.5 + offY) * 256) def popRow(): pool.append(cubes.pop(0)) pool.append(cubes.pop(0)) pool.append(cubes.pop(0)) def loop(): global offY, tarY, step, isPlaying if not isPlaying: return if offY < tarY: offY += step if offY >= 1: offY -= 1 tarY -= 1 popRow() addRow() update() def tap(): global offY, cubes, tarY, offY, step, isPlaying if not isPlaying: return cn = len(cubes) tn = cn // 3 # x = (n + 0.5) * 256 # y = (tn - m - 1.5 + offY) * 256 n = x / 256 - 0.5 m = tn - 1.5 + offY - y / 256 n = int(n + 0.5) m = int(m + 0.5) n0 = m * 3 + n a = cubes[n0] #print(m, n, cn, tn, n0, tarY) #print(n0, a[2]) if m - tarY == 0 and a[2] == 1: tarY += 1 step = (tarY - offY) / 10 else: txt.show() txt.front() isPlaying = False addRow() addRow() addRow() addRow() addRow() update()
也可以下载代码,本地python环境运行(用pygame封装了xdf库)。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。