圆形对象没有在Zelle graphics.py窗口中绘制(Python 3)

时间:2017-11-10 01:48:09

标签: python-3.x zelle-graphics

目前在Python 3中制作一个tic tac toe游戏。我现在的问题是我无法在用户点击的位置绘制圆圈。它没有给我任何错误,但是当我点击棋盘时它没有画出一个圆圈:

from graphics import *
import random

def draw_board(winsizex, win):
    win.setCoords(0.0, 0.0, 3.0, 3.0)
    win.setBackground('white')
# Draw the vertical lines
    Line(Point(1,0), Point(1,3)).draw(win)
    Line(Point(2,0), Point(2,3)).draw(win)
# Draw the horizontal lines
    Line(Point(0,1), Point(3,1)).draw(win)
    Line(Point(0,2), Point(3,2)).draw(win)
    if winsizex < 100:
        win.close()
    if winsizex > 1000:
        win.close()

    def player_turns(draw_board, win):
        c = 9
    for i in range(c):
        if c%2==0:
            print("Player two take your turn")
            player1 = win.getMouse()
            play1x=player1.getX()
            play1y=player1.getY()
            #play1.draw(win)
            circ = Circle(Point(play1x, play1y), 30)
            circ.setOutline('black')
            circ.draw(win)

        else:
            print('Player one take your turn')
            play2 = win.getMouse()
            play2x=play2.getX()
            play2y=play2.getY()
            #play2.draw(win)
            circ = Circle(Point(play2x, play2y), 30)
            circ.setOutline('black')
            circ.draw(win)
        c=c-1
def main():
    winsizex = int(input("Input the size of the window: "))
    winsizey = winsizex
    win = GraphWin("Tic-Tac-Toe", winsizex, winsizey)
    draw_board(winsizex, win)
    player_turns(draw_board, win)



main()

1 个答案:

答案 0 :(得分:0)

您的代码存在多个问题,但使圈子不可见的问题是:

win.setCoords(0.0, 0.0, 3.0, 3.0)
...
circ = Circle(Point(play2x, play2y), 30)

您将坐标系更改为最大限制为3.0,然后绘制一个半径为30的圆。圆绘制,但它太大,您无法看到它。给定坐标系,半径为0.3更为逼真。下面是我对你的例子的修改,以解决这个问题和其他问题:

from graphics import *

def draw_board(winsizex, win):
    win.setCoords(0.0, 0.0, 3.0, 3.0)

    # Draw the vertical lines
    Line(Point(1, 0), Point(1, 3)).draw(win)
    Line(Point(2, 0), Point(2, 3)).draw(win)

    # Draw the horizontal lines
    Line(Point(0, 1), Point(3, 1)).draw(win)
    Line(Point(0, 2), Point(3, 2)).draw(win)

    if not 100 < winsizex < 1000:
        win.close()

def player_turns(win):
    for c in range(1, 10):
        if c % 2 == 1:
            print("Player one take your turn")
            player1 = win.getMouse()
            circ = Circle(player1, 0.3)
        else:
            print('Player two take your turn')
            player2 = win.getMouse()
            circ = Circle(player2, 0.3)

        circ.draw(win)

winsize = int(input("Input the size of the window: "))
win = GraphWin("Tic-Tac-Toe", winsize, winsize)
draw_board(winsize, win)
player_turns(win)