2017-09-06 1 views
2

저는 비교적 tkinter에 익숙하지 않습니다. 저는 사각형만을 사용하는 게임을 만들고 있습니다. 내가 꺼내는 책은 삼각형만을 보여줍니다. 그것은, 내가 사각형을 만들기 위해 노력하고있어 나는이하지 않는 번호, (5, 5, 5, 25, 30, 15) 단지 문자열파이썬 3.5의 다각형 tkinter

# The tkinter launcher (Already complete) 
from tkinter import * 
HEIGHT = 500 
WIDTH = 800 
window = Tk() 
window.title ('VOID') 
c = Canvas (window, width=WIDTH, height=HEIGHT, bg='black') 
c.pack() 
# Block maker (Issue) 
ship_id = c.create_polygon (5, 5, 5, 25, 30, 15, fill='red') 

내가 오류를 얻을하지 않습니다되어 여기에 코드입니다. Canvas.create_polygon definition

+0

와 선박 크기를 지정하기 위해 한 단계 더이 걸릴 수보다는 3 –

+0

당신이 할 수있는 단순히 구글이 어떻게 할 수 있습니다. 그것은 여러 사이트에 나열 될 것이며 스택 오버플로에 대한 많은 답변이 이미 있습니다. 캔버스 위젯의 [tkinter docs] (http://effbot.org/tkinterbook/canvas.htm)를 살펴보십시오. –

+0

OP, 제안 된 답변 중 귀하의 질문에 대한 답변이 나왔습니까? – RagingRoosevelt

답변

2

초록 표시로

, 다각형이 두 부분이 있습니다 외곽선과 내부. 그 형상은 정점의 일련의 [내점 (x0, y0), (X1, Y1), ... (xn, yn)의

id = C.create_polygon(x0, y0, x1, y1, ..., option, ...)

그래서 당신이 통과해야 (...)로 지정 이 지정된 순서로 평방의 좌표 예를 들어 :

myCanvas.create_polygon(5, 5, 5, 10, 10, 10, 10, 5) 

은 그 정점 (5, 5), (5, 10), (10, 10)(10, 5)이다 사각형을 만듭니다

myCanvas.create_polygon(5,5, 5,10, 10,10, 10,5) 

로 읽을 수 있습니다.

1

Here's 일부 정보는 (official docs)입니다. (5,5), (5,25), (30, 15) 및 레드 다각형을 채운다 :

는 nmt.edu 페이지에 의하면, 함수 호출의 포맷이이 ship_id = c.create_polygon (5, 5, 5, 25, 30, 15, fill='red') 호가 다음 정점을 갖는 다각형을 생성하는 수단

id = C.create_polygon(x0, y0, x1, y1, ..., option, ...) 

이다.

당신이 사각형을 만들려면 다음을 수행해야 할 것 : 정점과 사각형 (5,5)을 생성

ship_id = c.create_polygon (5, 5, 5, 25, 25, 25, 25, 5, fill='red') 

, (5,25), (25,25), (25,5).

당신이 배를 만들 수있는 재현성 방법을 원한다면, 당신은

def ship (x,y): 
    return [x-5, y-5, x+5, y-5, x+5, y+5, x-5, y+5] 
ship_id = c.create_polygon(*ship(100, 500), fill='red') 

같은 뭔가를 할 수 위의 당신은 x와 y를 지정하는 선박 공장 (람다 기능)의 종류를 만들 것 배의 중심에 대해 그리고 create_polygon 함수에 사용할 수있는 정점 목록을 제공합니다. 당신이 사각형은 당신이 사 X/Y 좌표를 제공해야합니다 있도록하려면

당신도 불통 람다 함수

def ship (x,y,w,h): 
    return [x-w/2, y-h/2, x+w/2, y-h/2, x+w/2, y+h/2, x-w/2, y+h/2] 
ship_id = c.create_polygon(*ship(100, 500, 8, 8), fill='red') 
+1

마찬가지로 말하자면'lambda' 표현식을 할당하는 것이 일반적으로 권장되지 않습니다.'def'가 더 좋습니다. 참조 : [PEP8] (https://www.python.org/dev/peps/pep-0008/), 앵커는 없지만 ctrl + f -> lambda. –

+0

@Rightleg 아, 그걸 깨닫지 못했습니다. 디버깅, 가독성 및 람다가 제공하는 유일한 이점을 이해합니다. 나를 똑바로 세워 줘서 고마워. – RagingRoosevelt