猫史档案馆


神奇的视觉差 「鸣谢由《KITTEN》提供的参考」

用户:RainDawn_SATARainDawn_SATA查看:0 回复:0 评论:0 创建时间:2022-04-29T20:52:31


center_image

根据《KITTEN》的活动内容,将其由pygame改编成arcade

import arcade

WIDTH = 800
HEIGHT = 800

arcade.open_window(WIDTH, HEIGHT, "Drawing")
arcade.set_background_color(arcade.color.BLACK)


class Drawing():

    def __init__():
        pass

    def drawing_first():
        arcade.start_render()

        r = 10

        for j in range(33):
            center_y = r + j*2.5*r
            for i in range(33):
                center_x = i*2.5*r
                if j % 2 == 0:
                    center_x = center_x-1.25*r
                arcade.draw_circle_filled(
                    center_x, center_y, r, arcade.color.WHITE)

                if (j == 3 or j == 16 or j == 29) and (i == 3 or i == 16 or i == 29):
                    arcade.draw_circle_filled(
                        center_x, center_y, r, [176, 176, 176])

        arcade.finish_render()

    def drawing_second():
        arcade.start_render()

        h = 16
        r = h//2
        interval = 150

        for i in range(interval-h, HEIGHT, interval):
            arcade.draw_line(0, i, WIDTH, i, [176, 176, 176], h)
        for j in range(interval-h, WIDTH, interval):
            arcade.draw_line(j, 0, j, HEIGHT, [176, 176, 176], h)

        for i in range(interval-r, HEIGHT-h, interval):
            for j in range(interval-r, WIDTH-h, interval):
                arcade.draw_circle_filled(j-8, i-8, h, arcade.color.WHITE)

        arcade.finish_render()

 

并添加了新的内容:

center_image

def drawing_third():
        arcade.start_render()

        r = 10

        for i in range(20):
            arcade.draw_circle_outline(400, 400, r+i*20, arcade.color.WHITE)
        
        arcade.draw_rectangle_outline(400, 400, 500, 500, arcade.color.WHITE)

        arcade.finish_render()

最结合并优化成如下:

import arcade

WIDTH = 800
HEIGHT = 800

arcade.open_window(WIDTH, HEIGHT, "Drawing")
arcade.set_background_color(arcade.color.BLACK)


class Drawing():

    def __init__():
        pass

    def drawing_first():
        arcade.start_render()

        r = 10

        for j in range(33):
            center_y = r + j*2.5*r
            for i in range(33):
                center_x = i*2.5*r
                if j % 2 == 0:
                    center_x = center_x-1.25*r
                arcade.draw_circle_filled(
                    center_x, center_y, r, arcade.color.WHITE)

                if (j == 3 or j == 16 or j == 29) and (i == 3 or i == 16 or i == 29):
                    arcade.draw_circle_filled(
                        center_x, center_y, r, [176, 176, 176])

        arcade.finish_render()

    def drawing_second():
        arcade.start_render()

        h = 16
        r = h//2
        interval = 150

        for i in range(interval-h, HEIGHT, interval):
            arcade.draw_line(0, i, WIDTH, i, [176, 176, 176], h)
        for j in range(interval-h, WIDTH, interval):
            arcade.draw_line(j, 0, j, HEIGHT, [176, 176, 176], h)

        for i in range(interval-r, HEIGHT-h, interval):
            for j in range(interval-r, WIDTH-h, interval):
                arcade.draw_circle_filled(j-8, i-8, h, arcade.color.WHITE)

        arcade.finish_render()

    def drawing_third():
        arcade.start_render()

        r = 10

        for i in range(20):
            arcade.draw_circle_outline(400, 400, r+i*20, arcade.color.WHITE)
        
        arcade.draw_rectangle_outline(400, 400, 500, 500, arcade.color.WHITE)

        arcade.finish_render()

    def main():
        IN = input("选择一种视觉误差图; 1.'消失的灰点', 2.'闪烁的黑点', 3.'“不正”的正方形' 输入:1或2或3")
        if int(IN) == 1:
            Drawing.drawing_first()
        elif int(IN) == 2:
            Drawing.drawing_second()
        elif int(IN) == 3:
            Drawing.drawing_third()


Drawing.main()

arcade.run()

 


回复

上一页1 页 / 共 0下一页