inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

STEP 2 : 터틀그래픽을 이용한 블록 떨어뜨리기

setundobuffer(None) 에러

161

이지혜

작성한 질문수 4

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'

python 코테 준비 같이 해요!

답변 1

0

김태원

안녕하세요^^

제가 드린 코드로 실행해 보세요. 제가 드린 코드로도 안된다면 저도 잘 모르겠습니다.

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

104

2

스택에서 ')'을 만나는 경우

0

109

3

문제가 어디있나요?

0

86

2

변수 or 함수명

0

76

1

침몰하는 타이타닉 문제 질문입니다

0

71

1

AA.py 책점 에러

0

63

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

115

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

115

1

아나그램 비교 코드

0

123

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

163

2

문제 링크가있나여?

0

153

2

채점기 Time Limit Exceeded 오류 문의

1

178

2

동적계획법은 사용하는 문제

0

132

2

제 코드 좀 봐주세요

0

154

1

예외가 존재할 가능성?

0

100

1

3번이 안풀립니다

0

98

0

5번 틀림

0

124

0

오류원인?

0

104

0

리스트 선언

0

115

1

침몰하는 타이타닉(그리디) 문제 질문

0

114

1

알고리즘

0

72

1

코딩테스트

0

98

1

DFS 순서 질문드립니다.

0

134

2

left, right를 사용한 풀이법에 대한 질문입니다

0

94

1