指定されたバックグラウンド色の部分を、指定された色で塗りつぶすpaint関数です。
グラフィックスにはpygameを使っています。
このプログラムでは、塗りつぶし領域が広いと、すぐRecursionErrorが起きてしまうので、改良が必要です。
paint.py
#!/usr/bin/python3
from pygame.locals import *
import pygame
import sys
import os
import random
sys.setrecursionlimit(20000)
xsize=400
ysize=400
pygame.init() # Pygameを初期化
screen = pygame.display.set_mode((xsize,ysize)) # 200x200の画面を作成
pygame.display.set_caption("paint" ) # タイトルを作成
# ペイント関数
def paint(p,bc,pc):
if screen.get_at(p)[:3]==bc:
screen.set_at(p,pc)
if p[0]+1 < xsize:
paint((p[0]+1,p[1]),bc,pc)
if p[0]-1 >=0:
paint((p[0]-1,p[1]),bc,pc)
if p[1]+1 < ysize:
paint((p[0],p[1]+1),bc,pc)
if p[1]-1 >=0:
paint((p[0],p[1]-1),bc,pc)
def waitkey():
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit(0)
if event.type == KEYDOWN: # キーを押したとき
k=pygame.key.name(event.key)
return(k)
def main():
screen.fill((0,0,0)) # clear screen
for x in range(120):
screen.fill((255,255,255),(random.randrange(0,400),random.randrange(0,400),50,50))
bc=screen.get_at((3,4))[:3] #(3,4)における背景色を取得
paint((3,4),bc,(0,255,0)) #(3,4)から、背景色bc,緑(0,255,0)でペイント
pygame.display.update()
key=waitkey()
pygame.quit()
sys.exit()
if __name__=='__main__':
main()