美国上市教育机构

400-111-8989

热门课程

python学员作品-象棋游戏

  • 发布:IT培训
  • 来源:学员作品
  • 时间:2019-06-27 14:03

项目共有4个模块组成

+ Image 模块

+

+

+ Image 模块

提供图片chess.gif 作为背景画布

模块简单介绍:

+ 主模块:

+ dict_chessBtn = {} 字典的键:btn按钮 值:棋子对象

+ find_move_location(click_location):选择要移动的子之后,点击棋盘上的位置,棋子就会移动到该位置。

+ judge_king(chess,position):移动棋子,判断一下会不会被将军,如果被将军就暂时不能移动

+ warn(chess) :警告颜色(堵象眼,移动后被将军,超出边界),比如撇马腿时,要移动马时,马上面的颜色会变成紫色,表示此时不能移动.

+ click_chessboard(event):棋盘点击事件 点击要移动的棋子(选中),点击目标位置(棋盘上的位置),此时棋子原来的位置坐标

+ 更新为现在棋盘上的位置坐标.

+ remove_data_in_list_chess(old_chess):删除被吃掉的子,(从棋子列表中移除)

+ delete(chess):清除棋子按钮 ,删除列表中位置

+

黑方是由电脑下棋,根据棋子的 权重来判断 走哪一个,先吃哪一个(红方权重大的),或者哪一个先跑(自己权重大的).权重为棋子对象的一个属性

+ 权重 车:100,炮:90 马:80 相:30 士:40 将:200 卒:1

+ 判断输赢

+ 如果对方的将在自己的某个棋子的可移动位置,那么对方的将就被将军了,如果被将军,则遍历可走子位置循环找解将的方法,

+ 随机走一步不被将军的位置,如果循环完毕没解决则判定红方胜。

+ 重新开始

+ 从开始每走一步都会将此时的状态 深复制 一份到copy_list_chess 列表当中

+ 重新开始的时候,将状态重置为 刚开始复制的那一份(copy_list_chess[0])

+ 悔棋

+ 因为每走一步都会将此时的状态 深复制 一份到copy_list_chess 列表中,要悔棋时将当时的状态对象,删除(即把列表最后一项弹出去)

+ 然后,倒数第二项将变为最后一项了,将此时的状态重置即为悔棋(回到上一步了).

  • 为Ta点赞
  • 人已赞
选择城市和中心
贵州省

广西省

海南省