Python编写中国象棋棋盘(可视化页面)

1.自定义画布面板大小和顶点位置

import turtle             #  导入turtle库函数,重中之重

#  定义画布大小和顶点位置
turtle.setup(width=800, height=880, startx=600, starty=0)
turtle.screensize(300, 300, "white")    # 这是棋盘的宽和高,还有背景颜色设置

2.自定义画笔的各种设置

s = turtle.Pen()           #  为了后面函数调用的各种烦杂设置,采用定义变量设置画笔,等同于赋值变量
s.speed(6)  # 移动速度
s.pencolor()  # 颜色
s.pensize(1.5)  # 宽度

3.画横线

s.penup()  # 抬起
s.goto(-240, 270)  # 起始点
s.pendown()  # 下笔
for i in range(1, 6, 1):
    s.forward(480)  # 画480px
    s.penup()  # 抬起
    s.right(90)  # 右转90度
    s.forward(60)  # 移动60px
    s.right(90)  # 右转90度
    s.pendown()  # 下笔
    s.forward(480)  # 画480px
    s.penup()  # 抬起
    s.left(90)  # 左转90度
    s.forward(60)  # 移动60px
    s.left(90)  # 左转90度
    s.pendown()  # 下笔

4.画竖线

s.left(90)
s.penup()
s.forward(60)
s.pendown()
for i in range(1, 5, 1):
    s.forward(240)
    s.penup()
    s.forward(60)
    s.pendown()
    s.forward(240)
    s.right(90)
    s.forward(60)
    s.right(90)
    s.forward(240)
    s.penup()
    s.forward(60)
    s.pendown()
    s.forward(240)
    s.left(90)
    s.forward(60)
    s.left(90)
s.forward(540)
s.left(90)
s.forward(480)
s.left(90)
s.forward(540)

5.画斜线

s.left(90)
s.forward(180)
s.left(45)
s.forward(120 * 1.414)
s.left(45)
s.forward(-120)
s.left(45)
s.forward(120 * 1.414)
s.penup()
s.goto(-60, 270)
s.pendown()
s.right(180)
s.forward(120 * 1.414)
s.right(45)
s.forward(-120)
s.right(45)
s.forward(120 * 1.414)

6.调用函数

def apple(x, y):
    s.penup()
    s.goto(x + 5, y + 5)
    s.pendown()
    s.setheading(0)  # 设置当前角度朝向
    s.forward(5)
    s.goto(x + 5, y + 5)
    s.left(90)
    s.forward(5)
    s.penup()
    s.goto(x + 5, y - 5)
    s.pendown()
    s.setheading(0)
    s.forward(5)
    s.goto(x + 5, y - 5)
    s.left(90)
    s.forward(-5)
    s.penup()
    s.goto(x - 5, y + 5)
    s.pendown()
    s.setheading(0)
    s.forward(-5)
    s.goto(x - 5, y + 5)
    s.left(90)
    s.forward(5)
    s.penup()
    s.goto(x - 5, y - 5)
    s.pendown()
    s.setheading(0)
    s.forward(-5)
    s.goto(x - 5, y - 5)
    s.left(90)
    s.forward(-5)


def p(x, y):
    s.penup()
    s.goto(x - 5, y + 5)
    s.pendown()
    s.setheading(0)
    s.forward(-5)
    s.goto(x - 5, y + 5)
    s.left(90)
    s.forward(5)
    s.penup()
    s.goto(x - 5, y - 5)
    s.pendown()
    s.setheading(0)
    s.forward(-5)
    s.goto(x - 5, y - 5)
    s.left(90)
    s.forward(-5)


def w(x, y):
    s.penup()
    s.goto(x + 5, y + 5)
    s.pendown()
    s.setheading(0)
    s.forward(5)
    s.goto(x + 5, y + 5)
    s.left(90)
    s.forward(5)
    s.penup()
    s.goto(x + 5, y - 5)
    s.pendown()
    s.setheading(0)
    s.forward(5)
    s.goto(x + 5, y - 5)
    s.left(90)
    s.forward(-5)
    s.penup()

7.修饰炮和兵所在点

apple(180, 150)
apple(-180, 150)
apple(180, -150)
apple(-180, -150)
apple(-120, 90)
apple(0, 90)
apple(120, 90)
apple(-120, -90)
apple(0, -90)
apple(120, -90)

p(240, 90)
p(240, -90)
w(-240, -90)
w(-240, 90)

8.绘制一个长方形外围线,设置笔的粗细

s.penup()
s.goto(-250, -280)
s.pendown()
s.pensize(8)
s.forward(560)
s.right(90)
s.forward(500)
s.right(90)
s.forward(560)
s.right(90)
s.forward(500)
s.right(90)

turtle.done()                #终止画笔,但可视化窗口不闪退

9.展示页面

经验分享 程序员 微信小程序 职场和发展