23
2025
05

格子画

学习python编程,在新东方少儿编程官网的自由创作平台做的一些作品 。

改变小方格颜色进行画画,类似于像素画,只有两个颜色。

效果如下,可以在新页面中打开

代码如下:

from xdf import *

W = 768
H = 1024
CW = 40
N = 9
OX = (W - CW * N) // 2
OY = (H / 2 - CW * N) // 2
level = 0
levels = [
    [0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0],
    [0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0],
    [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0],
    [0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
]
def ij2xy(i,j):
    return [OX + i * CW, OY + j * CW]

def xy2ij(x, y):
    return [int((x-OX) / CW), int((y-OY)/CY)]

box1 = []
box2 = []
def tap2(self):
    if self.f == 0:
        setBox(self, 1)
    else:
        setBox(self, 0)
    
def setBox(b, v):
    b.f = v
    if v == 0:
        b.change("white", "#333")
    else:
        b.change("#666", "#333")

for i in range(9):
    for j in range(9):
        xy = ij2xy(i,j)
        b1 = box(xy[0], xy[1], CW, CW, "white", "#333")
        b1.f = 0
        box1.append(b1)
        b2 = box(xy[0], xy[1] + H/2, CW, CW, "white", "#333")
        box2.append(b2)
        b2.f = 0
        b2.tap = tap2
'''
def shuchu():
    a = []
    for i in range(len(box2)):
        a.append(box2[i].f)
    print(a)
text("输出",0,30,30,"red").tap = shuchu
'''
def resetB1():
    for i in range(len(box1)):
        setBox(box1[i], levels[level][i])
def resetB2():
    for b in box2:
        setBox(b, 0)
def updateLevel():
    resetB2()
    resetB1()
def nextLevel():
    global level
    if level == len(levels) - 1:
        level = 0
    else:
        level = level + 1
    updateLevel()
def prevLevel():
    global level
    if level == 0:
        level = len(levels) - 1
    else:
        level = level - 1
    updateLevel()
    
text("在下面的格子里画出上面的画", "red","center")
text("重置",W/2,30,30,"red","center").tap = resetB2
text("上一个",0,30,30,"red").tap = prevLevel
text("下一个",W,30,30,"red","right").tap = nextLevel
updateLevel()
« 上一篇

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。