当前位置:   article > 正文

python绘制象棋棋盘_用turtle绘制中国象棋棋盘

用turtle绘制中国象棋棋盘
  1. #引入turtle中的函数,这种形式是引用出全部的函数
  2. from turtle import *
  3. #turtle 的速度介于0到10之间,0最快
  4. speed(0)
  5. tracer(10)#快速作出
  6. #建立窗体
  7. setup(500, 600)
  8. #设置每个格子大小
  9. width = 50
  10. #设置画布
  11. screensize(10 * width , 12 * width )
  12. #起始坐标
  13. x=-200
  14. y=-200
  15. penup()
  16. goto(x,y)
  17. pendown()
  18. #画出边框
  19. fillcolor('orange')
  20. begin_fill()
  21. for i in range(2):
  22. forward(8 * width + 2 * width // 5)
  23. left(90)
  24. forward(9 * width + 2 * width // 5)
  25. left(90)
  26. end_fill()
  27. x = x + width / 5
  28. y = y + width / 5
  29. #棋盘横线
  30. for i in range(10):
  31. penup()
  32. goto(x,y + i * width)
  33. pendown()
  34. forward(8 * width)
  35. penup()
  36. left(90)
  37. #棋盘竖线
  38. for i in range(9):
  39. goto(x+i * width,y)
  40. pendown()
  41. forward(4 * width)
  42. penup()
  43. forward(width)
  44. pendown()
  45. forward(4 * width)
  46. penup()
  47. #绘制棋府
  48. def drawCamp(x,y,width):
  49. home()#将坐标移到原点
  50. goto(x + 3 * width,y)
  51. left(45)
  52. pendown()
  53. forward(2 ** 0.5 * width * 2)
  54. penup()
  55. goto(x + 3 * width,y + 2 * width)
  56. right(90)
  57. pendown()
  58. forward(2 ** 0.5 * width * 2)
  59. penup()
  60. drawCamp(x,y,width)
  61. drawCamp(x,y + 7 * width,width)
  62. #绘制兵炮标记
  63. def drawMark(x,y):
  64. home()
  65. penup()
  66. goto(x-9,y+3)
  67. for i in range(4):
  68. pendown()
  69. forward(6)
  70. left(90)
  71. forward(6)
  72. right(90)
  73. penup()
  74. forward(6)
  75. pendown()
  76. right(90)
  77. penup()
  78. #兵
  79. for i in range(5):
  80. drawMark(x+i*2*width,y+3*width)
  81. drawMark(x+i*2*width,y+6*width)
  82. #炮
  83. for i in range(2):
  84. drawMark(x+(i*6+1)*width,y+2*width)
  85. drawMark(x+(i*6+1)*width,y+7*width)
  86. #绘制棋子
  87. #画圆
  88. def drawCircle(radius):
  89. pensize(3)
  90. begin_fill()
  91. fillcolor('white')
  92. circle(radius)
  93. end_fill()
  94. #写字
  95. list = [['車', '馬', '相', '仕', '帅', '仕', '相', '馬', '車','兵','炮'], ['車', '馬', '象', '士', '将', '士', '象', '馬', '車','卒','炮']]
  96. fontColor=['red','black']#列表引用时用[]
  97. def drawWrite(word,fontColor):
  98. color(fontColor)
  99. write(word,font=('隶书',width//2,'normal'))
  100. home()
  101. goto(x+7/4*width,y+17/4*width)
  102. pendown()
  103. pencolor('black')
  104. write("楚 河 汉 界",font=('隶书',width//2,'normal'))
  105. for j in range(2):
  106. #后卫
  107. for i in range(9):
  108. penup()
  109. goto(x+i*width,y-1/4*width+9*j*width)
  110. pendown()
  111. pencolor(fontColor[j])
  112. drawCircle(1/3*width)
  113. penup()
  114. goto(x+i*width-1/3*width,y-1/4*width+9*j*width)
  115. pendown()
  116. drawWrite(list[j][i],fontColor[j])
  117. #炮
  118. for j in range(2):
  119. for i in range(2):
  120. penup()
  121. goto(x + width+6*i*width, y + 2 * width-1/4*width + 5 * j * width)
  122. pendown()
  123. pencolor(fontColor[j])
  124. drawCircle(1 / 3 * width)
  125. penup()
  126. goto(x+2/3*width+6*i*width,y+2*width-1/4*width+j*5*width)
  127. pendown()
  128. drawWrite(list[j][10], fontColor[j])
  129. #兵
  130. for j in range(2):
  131. for i in range(5):
  132. penup()
  133. goto(x+2*i*width,y+3*width-1/4*width+3*j*width)
  134. pendown()
  135. pencolor(fontColor[j])
  136. drawCircle(1 / 3 * width)
  137. penup()
  138. goto(x+2*i*width-1/3*width,y+3*width-1/4*width+3*j*width)
  139. pendown()
  140. drawWrite(list[j][9], fontColor[j])
  141. hideturtle()
  142. exitonclick()#该语句让程序等待用户点击界面后才能够退出

效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/167444
推荐阅读
相关标签
  

闽ICP备14008679号