由于某种原因,我无法使用变量来定义函数的这个特定子集中的空间
from turtle import *
john = Turtle()
def naughts(nposition):
john.penup()
john.goto(nposition)
john.right(90)
john.forward(120)
john.left(90)
john.pendown()
john.circle(120)
def crosses(cposition):
john.penup()
john.goto(cposition)
john.pendown()
john.left(45)
for x in range(4):
john.forward(150)
john.backward(150)
john.left(90)
john.right(45)
def main():
pos1= (-400, 400)
pos2= (0, 400)
pos3= (400, 400)
pos4= (-400, 0)
pos5= (0, 0)
pos6= (400, 0)
pos7= -400, -400
pos8= 0, -400
pos9= 400, -400
john.penup()
john.goto(-200, -600)
john.pendown()
john.left(90)
john.forward(1200)
john.penup()
john.goto(200, -600)
john.pendown()
john.forward(1200)
john.left(90)
john.penup()
john.goto(600, -200)
john.pendown()
john.forward(1200)
john.penup()
john.goto(600,200)
john.pendown()
john.forward(1200)
for turns in range(5):
dake = input("Naughts, please choose pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9: ")
naughts(dake)
ecks = input("Crosses, please choose pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9: ")
crosses(ecks)
if __name__ == "__main__":
main()
将变量放在最后,返回
“TypeError: Vec2D.new() 需要 3 个位置参数,但给出了 5 个”,我不确定为什么。
我尝试过自己输入位置变量,这有效。
john = Turtle()
POSITIONS = {"pos1":(-400, 400),
"pos2": (0, 400),
"pos3": (400, 400),
"pos4": (-400, 0),
"pos5":(0, 0),
"pos6": (400, 0),
"pos7": (-400, -400),
"pos8": (0, -400),
"pos9": (400, -400)}
john.speed(0) ## makes john very fast
def naughts(nposition):
john.penup()
john.goto(nposition)
john.right(90)
john.forward(120)
john.left(90)
john.pendown()
john.circle(120)
def crosses(cposition):
john.penup()
john.goto(cposition)
john.pendown()
john.left(45)
for x in range(4):
john.forward(150)
john.backward(150)
john.left(90)
john.right(45)
def main():
john.penup()
john.goto(-200, -600)
john.pendown()
john.left(90)
john.forward(1200)
john.penup()
john.goto(200, -600)
john.pendown()
john.forward(1200)
john.left(90)
john.penup()
john.goto(600, -200)
john.pendown()
john.forward(1200)
john.penup()
john.goto(600,200)
john.pendown()
john.forward(1200)
for turns in range(5):
dake = input("Naughts, please choose pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9: ")
dake = POSITIONS[dake]
naughts(dake)
ecks = input("Crosses, please choose pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9: ")
ecks = POSITIONS[ecks]
crosses(ecks)
if __name__ == "__main__":
main()
这解决了您遇到的问题。我所做的是制作一个包含移动坐标的字典,并将 pos1、pos2... 指定为键,这样当用户输入键时,
POSITIONS[dake]
返回 dake
输入的坐标。
导致错误的原因是
input()
返回一个字符串,并将字符串解析为 .goto()
属性导致 Typerror。
现在进入胜利检测...