用turtle画中国象棋棋盘

刚刚学习了《Python入门教程(一)——Python语言基础视频课程》(http://edu.51cto.com/course/12194.html

中间有道作业就是用turtle画中国象棋棋盘,试了半天,终于画出来了,
不知道是不是这么画的,
所以贴上来,求指点,求更好的方法!

#画中国象棋棋盘
import turtle
import math
turtle.speed(10)#绘图速度
a = 30           #每个格子的宽度

#绘制底板并上色
turtle.up()
turtle.goto( -10, -10)
turtle.down()
turtle.fillcolor("Khaki")
turtle.begin_fill()
turtle.fd( a * 8 + 20)
turtle.left(90)
turtle.fd( a * 9 + 20)
turtle.left(90)
turtle.fd( a * 8 + 20)
turtle.left(90)
turtle.fd( a * 9 + 20)
turtle.left(90)
turtle.end_fill()

#画笔回位
turtle.up()
turtle.goto(0,0)
turtle.down()

#画横线
for i in range(10):
    turtle.fd( a * 8 )
    turtle.up()
    turtle.bk( a * 8)
    turtle.left( 90 )
    turtle.fd( a )
    turtle.right( 90 )
    turtle.down()
turtle.up()
turtle.goto( 0, 0)
turtle.down()

#画竖线
turtle.left(90)
for i in range(9):
    if i == 0 or i == 8:
        turtle.fd( a * 9 )
        turtle.up()
        turtle.bk( a * 9 )
        turtle.right(90)
        turtle.fd(a)
        turtle.left(90)
        turtle.down()
    else:
        turtle.fd( a * 4 )
        turtle.up()
        turtle.fd(a)
        turtle.down()
        turtle.fd( a * 4)
        turtle.up()
        turtle.bk( a * 9)
        turtle.right(90)
        turtle.fd(a)
        turtle.left(90)
        turtle.down()

# 画米字格
turtle.up()
turtle.goto( a * 4, a)
turtle.down()
turtle.right(45)
for i in range(4):
    turtle.fd(math.sqrt( a * a * 2))
    turtle.bk(math.sqrt( a * a * 2))
    turtle.right(90)
turtle.up()
turtle.goto(a*4,a*8)
turtle.down()
for i in range(4):
    turtle.fd(math.sqrt( a * a * 2))
    turtle.bk(math.sqrt( a * a * 2))
    turtle.right(90)

turtle.done()

运行结果

原文地址:http://blog.51cto.com/12068679/2069625

时间: 2024-11-06 03:52:15

用turtle画中国象棋棋盘的相关文章

Python之turtle画同心圆和棋盘

画饼图 import turtle t = turtle.Pen() for i in range(5): t.penup() t.goto(0, -i*30) t.pendown() t.circle(i*30+30) turtle.done() 画棋盘 import turtle t = turtle.Pen() widthall = 200 width = 20 num = widthall // 20 * 2 + 1 t.speed(10) for r in range(num): t.

python用turtle画国际象棋棋盘

python学习的练习 用turtle画的国际象棋棋盘 import turtle turtle.speed(10) a = 30 #画背景 turtle.up() turtle.goto( -10, -10) turtle.down() turtle.fillcolor("Khaki") turtle.begin_fill() turtle.fd( a * 8 + 20) turtle.left(90) turtle.fd( a * 8 + 20) turtle.left(90) t

[转载] 中国象棋软件-引擎实现(二)棋局表示

对于棋盘的表示当前比较先进的思想是“位棋盘”.“位棋盘”用于国际象棋非常便捷,因为国际象棋的棋盘正好有64个格子,可以将一个棋盘的信息用一个64位的变量来表示.其基本思想就是用位上的值是1或0来表示棋子在棋盘相应位置上的存在与否,这样做的好处是可以通过位操作运算来加快局面评估和着法生成的速度.当用于中国象棋时需要进行拼凑以表示中国象棋棋盘的90个格子…… 由于考虑到本人目前水平精力均着实有限.当前应以实现本程序为首要目标,而不是致力于高质量算法研究,所以就偷懒采用了传统的较为简单的“棋盘数组”—

中国象棋棋子及棋盘的绘制

一.题目简介 本课程设计主要是使用Swing这个Java自带的图形开发工具实现中国象棋棋子及棋盘的绘制,并根据相应的象棋规则,可以设计棋谱,完成棋谱的保存和对已保存的棋谱的演示,方便现在爱棋人士对残局的收藏于研究,而且达到了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,熟练的应用面向对象的思想和设计方法解决实际问题的能力的目的. 1.当两方有一方将(帅)被吃掉后,程序不能自动结束或提示游戏结束,但想到该程序并不是要进行两方对弈,而是要设计棋谱所以在能力实现范围内

中国象棋游戏Chess(3) - 实现走棋规则

棋盘的绘制和走棋参看博文:中国象棋游戏Chess(1) - 棋盘绘制以及棋子的绘制,中国象棋游戏Chess(2) - 走棋 现在重新整理之前写的代码,并且对于每个棋子的走棋规则都进行了限制,不像之前那样每个棋子都可以走到任意位置. 也实现了红先黑后,并且每一方走一步,交替走棋的功能. 直接看代码: // Board.h // Board类实现了棋盘的绘制以及显示 // #ifndef BOARD_H #define BOARD_H #include <QFrame> #include &quo

中国象棋规则01&lt;转&gt;

棋盘: 中国象棋的棋盘有九条平行的竖线和十条平行的横线相交而组成,其中共有九十个交叉点,棋子就摆在这些交叉点上.中间部分(棋盘的第五,第六两横线之间末画竖线的空白地带)称为 河界 .两端的中间(两端第四条到第六条竖线之间的正方形部位),以斜交叉线构成中文米字形方格的地方,叫作 九宫 (它恰好有九个交叉点). 2 界河: 这是一个和国际象棋不同的地方,及对垒双方的中间有一条河界,通常称其为楚河,也就是说棋子过河才能攻打对方的首领.这些规则都是和中国古战场的一些场景类似,并且逐渐演变而来成为中国象棋

团队-编程项目 中国象棋-需求分析

需求分析: 1.棋盘和棋子的绘制 2.按照象棋规则对棋子进行布局   3.鼠标响应 : 在对弈中,棋子是必须可以移动的,不然游戏无法进行.因此,鼠标左键点击是必不可少的一部分. 4.棋子的功能分析:  中国象棋中各色的象棋棋子的功能使象棋具有了真正的趣味性,中国象棋的棋子的类型大致分为:帅(将).士.象.马.车.炮.兵(卒)等几个类型.  帅(将):红方中的帅和黑方中的将的功能相同,都是只能在九宫格中进行横向和竖向的移动,每次移动一格,并且不能移动超出九宫格,帅和将不能见面.  士:士在整片棋盘

Qt版本中国象棋开发(四)

内容:走法产生 中国象棋基础搜索AI, 极大值,极小值剪枝搜索, 静态估值函数 理论基础: (一)人机博弈走法产生: 先遍历某一方的所有棋子,再遍历整个棋盘,得到每个棋子的所有走棋情况(效率不高,可以改进) 1 void SingleGame::getAllPossibleMove(QVector<Step *> &steps) 2 { 3 int min, max; 4 if(this->_bRedTurn) 5 { 6 min = 0, max = 16; 7 } 8 els

团队-团队编程项目中国象棋-需求分析

需求分析: 1.棋盘和棋子的绘制 2.按照象棋规则对棋子进行布局   3.鼠标响应 : 在对弈中,棋子是必须可以移动的,不然游戏无法进行.因此,鼠标左键点击是必不可少的一部分. 4.棋子的功能分析:  中国象棋中各色的象棋棋子的功能使象棋具有了真正的趣味性,中国象棋的棋子的类型大致分为:帅(将).士.象.马.车.炮.兵(卒)等几个类型.  帅(将):红方中的帅和黑方中的将的功能相同,都是只能在九宫格中进行横向和竖向的移动,每次移动一格,并且不能移动超出九宫格,帅和将不能见面.  士:士在整片棋盘