-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
setundobuffer(None) 에러
21.08.12 10:04 작성 조회수 98
0
block.setundobuffer('None')이 없으면 에러가 일어나지 않는데, 이걸 추가하면 아래와 같은 에러가 나면서 프로그램이 멈춥니다. 구글링을 해도 해결방법을 찾을 수 없어서 질문드립니다.
소스코드는 동일하나, 만약을 위해 에러코드 위에 첨부하겠습니다. 미리 감사드립니다!
<소스>
import turtle as t
import random as r
import time
class Brick():
def __init__(self):
self.y=0
self.x=6
self.color=r.randint(1,6)
def draw_grid(block, grid):
top=250
left=-150
colors=['black', 'red', 'blue', 'orange', 'yellow', 'green', 'purple', 'white']
for y in range(len(grid)): # 행 탐색
for x in range(len(grid[0])): # 열 탐색
sc_x=left+(x*20) # 사각형 객체의 하나의 크기는 20*20
sc_y=top-(y*20)
block.goto(sc_x, sc_y)
block.color(colors[grid[y][x]])
block.stamp()
if __name__=='__main__':
sc=t.Screen()
sc.tracer(False) # 격자 빠르게 그림
sc.bgcolor("black")
sc.setup(width=600, height=700)
grid=[[0]*12 for _ in range(24)] # 게임 격자판
for i in range(24): # 벽 만들기
grid[i].insert(0,7)
grid[i].append(7)
grid.append([7]*14)
for y in range(23, 20, -1): # 아래 세줄 랜덤으로 색깔 채우기
for x in range(1,13):
grid[y][x]=r.randint(1,6)
block=t.Turtle()
block.penup() # 이걸 안하면 움직일 때 그림을 그림
block.speed(0)
block.shape('square')
block.setundobuffer(None) # 메모리 버퍼 누적 삭제
brick=Brick()
grid[brick.y][brick.x]=brick.color
draw_grid(block, grid)
while True:
sc.update() # 격자 계속 그리기 위함
if grid[brick.y+1][brick.x]==0:
grid[brick.y][brick.x]=0
brick.y+=1
grid[brick.y][brick.x]=brick.color
for x in grid:
print(x)
print()
draw_grid(block, grid)
time.sleep(0.1)
sc.mainloop() # 이게 없으면 창이 바로 꺼져버림
<오류>
Traceback (most recent call last):
File "D:\IT Study\Python\파이썬 알고리즘 문제풀이(코딩테스트 대비)\Block_Game.py", line 47, in <module>
draw_grid(block, grid)
File "D:\IT Study\Python\파이썬 알고리즘 문제풀이(코딩테스트 대비)\Block_Game.py", line 22, in draw_grid
block.stamp()
File "C:\Users\modes\AppData\Local\Programs\Python\Python39\lib\turtle.py", line 3077, in stamp
self.undobuffer.push(("stamp", stitem))
AttributeError: 'NoneType' object has no attribute 'push'
답변을 작성해보세요.
0
답변 1