#引入turtle中的函数,这种形式是引用出全部的函数
from turtle import *
#turtle 的速度介于0到10之间,0最快
speed(0)
tracer(10)#快速作出
#建立窗体
setup(500, 600)
#设置每个格子大小
width = 50
#设置画布
screensize(10 * width , 12 * width )
#起始坐标
x=-200
y=-200
penup()
goto(x,y)
pendown()
#画出边框
fillcolor('orange')
begin_fill()
for i in range(2):
forward(8 * width + 2 * width // 5)
left(90)
forward(9 * width + 2 * width // 5)
left(90)
end_fill()
x = x + width / 5
y = y + width / 5
#棋盘横线
for i in range(10):
penup()
goto(x,y + i * width)
pendown()
forward(8 * width)
penup()
left(90)
#棋盘竖线
for i in range(9):
goto(x+i * width,y)
pendown()
forward(4 * width)
penup()
forward(width)
pendown()
forward(4 * width)
penup()
#绘制棋府
def drawCamp(x,y,width):
home()#将坐标移到原点
goto(x + 3 * width,y)
left(45)
pendown()
forward(2 ** 0.5 * width * 2)
penup()
goto(x + 3 * width,y + 2 * width)
right(90)
pendown()
forward(2 ** 0.5 * width * 2)
penup()
drawCamp(x,y,width)
drawCamp(x,y + 7 * width,width)
#绘制兵炮标记
def drawMark(x,y):
home()
penup()
goto(x-9,y+3)
for i in range(4):
pendown()
forward(6)
left(90)
forward(6)
right(90)
penup()
forward(6)
pendown()
right(90)
penup()
#兵
for i in range(5):
drawMark(x+i*2*width,y+3*width)
drawMark(x+i*2*width,y+6*width)
#炮
for i in range(2):
drawMark(x+(i*6+1)*width,y+2*width)
drawMark(x+(i*6+1)*width,y+7*width)
#绘制棋子
#画圆
def drawCircle(radius):
pensize(3)
begin_fill()
fillcolor('white')
circle(radius)
end_fill()
#写字
list = [['車', '馬', '相', '仕', '帅', '仕', '相', '馬', '車','兵','炮'], ['車', '馬', '象', '士', '将', '士', '象', '馬', '車','卒','炮']]
fontColor=['red','black']#列表引用时用[]
def drawWrite(word,fontColor):
color(fontColor)
write(word,font=('隶书',width//2,'normal'))
home()
goto(x+7/4*width,y+17/4*width)
pendown()
pencolor('black')
write("楚 河 汉 界",font=('隶书',width//2,'normal'))
for j in range(2):
#后卫
for i in range(9):
penup()
goto(x+i*width,y-1/4*width+9*j*width)
pendown()
pencolor(fontColor[j])
drawCircle(1/3*width)
penup()
goto(x+i*width-1/3*width,y-1/4*width+9*j*width)
pendown()
drawWrite(list[j][i],fontColor[j])
#炮
for j in range(2):
for i in range(2):
penup()
goto(x + width+6*i*width, y + 2 * width-1/4*width + 5 * j * width)
pendown()
pencolor(fontColor[j])
drawCircle(1 / 3 * width)
penup()
goto(x+2/3*width+6*i*width,y+2*width-1/4*width+j*5*width)
pendown()
drawWrite(list[j][10], fontColor[j])
#兵
for j in range(2):
for i in range(5):
penup()
goto(x+2*i*width,y+3*width-1/4*width+3*j*width)
pendown()
pencolor(fontColor[j])
drawCircle(1 / 3 * width)
penup()
goto(x+2*i*width-1/3*width,y+3*width-1/4*width+3*j*width)
pendown()
drawWrite(list[j][9], fontColor[j])
hideturtle()
exitonclick()#该语句让程序等待用户点击界面后才能够退出
效果: