2017-09-09 11 views
1

Conway's Game of Life이 구현을 발견했습니다. 나는 GUI를 다루지 않았고,이 코드를 이해하려고 노력 중이다. (내 자신을 구현한다)생명의 무승부 게임 (거북이) (인스턴스 메서드 호출?)

버그가있는 특정 기능이있다. 각각의 '유기체'를 끌어 당기는 기능 (검은 색은 살아 있고 하얀은 죽었다).

# import turtle (at the top) 
def draw(self, x, y): 
    "Update the cell (x,y) on the display." 
    turtle.penup() 
    key = (x, y) 
    if key in self.state: 
     turtle.setpos(x*CELL_SIZE, y*CELL_SIZE) 
     turtle.color('black') 
     turtle.pendown() 
     turtle.setheading(0) 
     turtle.begin_fill() 
     for i in range(4): 
      turtle.forward(CELL_SIZE-1) 
      turtle.left(90) 
     turtle.end_fill() 

그리고 이것은 전체 보드를 표시하는 기능입니다 : 데프 디스플레이 (자동) : 물론

"""Draw the whole board""" 
turtle.clear() 
for i in range(self.xsize): 
    for j in range(self.ysize): 
     self.draw(i, j) 
turtle.update() 

코드 작동하지만 인 IntelliJ 그가 참조를 찾을 수 없다는 이 모든 기능. 클래스 메서드와 자체가없는 것처럼 인스턴스 메서드를 호출하기 때문에 그것이라고 생각합니다.

  1. 나는 그것이 어떻게 작동하는지 이해하지 못합니다.
  2. 어떻게 해결할 수 있습니까? 나는 새로운 거북이를 만들려고했으나 효과가 없었다. (제 생각에는 좋은 생각이 아닙니다.) 어쩌면 함수에 인수로서 거북이를 두어야합니까?

이미 몇 시간 동안 붙어 있습니다. 도움이 될 것입니다.

+0

이 코드는 클래스 안에 있습니까? 그렇다면 클래스 코드를 사용할 수 있습니까? – notcompletelyrational

+0

첫 번째 문장 - Conway의 Game of Life에서 링크를 누릅니다. (http://fiftyexamples.readthedocs.io/ko/latest/life.html) – TheCrystalShip

답변

2

인 IntelliJ 그는 이러한 모든 기능

거북이 모듈은 홀수 조류에 대한 참조를 찾을 수 있다고 말한다. 그것은 다른 관객에 다른 일을 할 수하려고합니다. (혼합 은유 실례합니다) 그 혼란의 원인 :

거북이는 거북이 & 화면의 인스턴스를 생성 객체 지향 모듈입니다

1) 기능의 비교 방법 그들에 메소드를 호출 :

turtle.setworldcoordinates(0, 0, xsize, ysize) 
turtle.forward(100) # move the "default" turtle forward 
: 프로그래머를 시작 수용하기 위해, 그러나

screen = turtle.Screen() 
screen.setworldcoordinates(0, 0, xsize, ysize) 

yertle = turtle.Turtle() 
yertle.forward(100) 

및/또는 기타 거북이 언어를 에뮬레이션, 또한 기능적인 인터페이스를 제공합니다

, 나는 거북 이런 식으로 가져 오는 것이 좋습니다 기능과 방법을 혼합 방지하기위한 방법은 다음과 같습니다에만 객체 인터페이스가 아닌 기능을 할 수 있습니다

from turtle import Turtle, Screen 

합니다.

터틀에 대한 기능 인터페이스가로드시 오브젝트 메소드 인터페이스에서 동적으로 파생되기 때문에 IntelliJ 경고가 발생합니다. 파일에서 다시 참조 할 실제 함수가 없습니다. 임베디드

거북이 모듈 대

2) 독립이 중 하나를 실행 독립에 설계 또는 더 큰 Tkinter를 프로젝트에 포함됩니다. 당신이하는 일에 따라 거북이와 스크린에 어떻게 접근 하는가가 다릅니다.

Conway의 Game of Life가 실행되는 한 기능적 인터페이스가 사용됩니다. 오브젝트 1을 사용해야하고 거북이 모듈을 독립형으로 취급하지만 다른 Tk 기반 패널을 열 때 사용할 수 있습니다.

from turtle import TK 

다른 방법으로 사용해야합니다. 이 모듈을 순응 시키려면 빠른 수정이 필요하지 않습니다. 모든 거북 및 tkinter 참조를 검토하고 다시 고려해야합니다.