资源简介
Python项目案例开发从入门到实战源代码第15章 中国象棋代码.rar
代码片段和文件信息
from tkinter import *
from tkinter.messagebox import *
import time
root = Tk()
# 创建一个Canvas,设置其背景色为白色
cv = Canvas(root bg = ‘white‘ width = 720 height = 800)
chessname=[“黑车““黑马““黑象““黑仕““黑将““黑仕““黑象““黑马““黑车““黑卒““黑炮“
“红车““红马““红相““红仕““红帅““红仕““红相““红马““红车““红兵““红炮“]
imgs= [PhotoImage(file=‘bmp\\‘+chessname[i]+‘.png‘)for i in range(022) ]
chessmap = [[-1-1-1-1-1-1-1-1-1-1]for y in range(9)]
#定义一个字典
dict_ChessName={}
LocalPlayer=“红“ #LocalPlayer记录自己是红方还是黑方
first=True #区分第一次还是第二次选中的棋子
IsMyTurn = True
rect1=0
rect2=0
firstChessid=0
def IsAbleToPut(id x yoldxoldy):# 实现判断是否能走棋返回逻辑值,这代码最复杂。
# oldx oldy 棋子在棋盘原坐标
# x y 棋子移动到棋盘的新坐标
print(id“QQQ“dict_ChessName[id])
qi_name = dict_ChessName[id][1] #取字符串第二个字符,“黑将“变成“将“
#“将“ “帅“走棋判断
if (qi_name == “将“ or qi_name == “帅“):
if ((x - oldx) * (y - oldy) != 0):
return False;
if (abs(x - oldx) > 1 or abs(y - oldy) > 1):
return False;
if (x < 3 or x > 5 or (y >= 3 and y <=6)):
return False;
return True;
#“士“走棋判断
if (qi_name == “士“ or qi_name == “仕“):
if ((x - oldx) * (y - oldy) == 0):
return False;
if (abs(x - oldx) > 1 or abs(y - oldy) > 1):
return False;
if (x < 3 or x > 5 or (y >= 3 and y <=6)):
return False;
return True;
#“象“走棋判断
if (qi_name == “象“ or qi_name == “相“):
if ((x - oldx) * (y - oldy) == 0):
return False;
if (abs(x - oldx) != 2 or abs(y - oldy) != 2):
return False;
if (y < 5 and qi_name == “相“ ):#过河
return False;
if (y >= 5 and qi_name == “象“ ):#过河
return False;
i = 0; j = 0;#ij必须有初始值
if (x - oldx == 2):
i = x - 1;
if (x - oldx == -2):
i = x + 1;
if (y - oldy == 2):
j = y - 1;
if (y - oldy == -2):
j = y + 1;
if (chessmap[i][j] != -1):#憋象腿
return False;
return True;
#“马“走棋判断
if (qi_name == “马“ or qi_name == “马“):
if (abs(x - oldx) * abs(y - oldy) != 2):
return False;
if (x - oldx == 2):
if (chessmap[x - 1][oldy] != -1):#蹩马腿
return False;
if (x - oldx == -2):
if (chessmap[x + 1][oldy] != -1):#蹩马腿
return False;
if (y - oldy == 2):
if (chessmap[oldx][y - 1] != -1):#蹩马腿
return False;
if (y - oldy == -2):
if (chessmap[oldx][y + 1] != -1):#蹩马腿
return False;
return True;
#“车“走棋判断
if (qi_name == “车“ or qi_name == “车“):
#判断是否直线
if ((x - oldx) * (y - oldy) != 0):
return False;
#判断是否隔有棋子
if (x != oldx):
if (oldx
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1120 2018-08-02 10:51 第15章 中国象棋代码\2018-08-02.txt
文件 119298 2009-07-25 18:53 第15章 中国象棋代码\bmp\棋盘.png
文件 1370 2009-07-25 18:07 第15章 中国象棋代码\bmp\红仕.png
文件 1512 2009-07-25 18:07 第15章 中国象棋代码\bmp\红兵.png
文件 1499 2009-07-25 18:07 第15章 中国象棋代码\bmp\红帅.png
文件 1634 2009-07-25 18:07 第15章 中国象棋代码\bmp\红炮.png
文件 1564 2009-07-25 18:07 第15章 中国象棋代码\bmp\红相.png
文件 1544 2009-07-25 18:07 第15章 中国象棋代码\bmp\红车.png
文件 1452 2009-07-25 18:07 第15章 中国象棋代码\bmp\红马.png
文件 1439 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑仕.png
文件 1475 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑卒.png
文件 1618 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑将.png
文件 1646 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑炮.png
文件 1594 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑象.png
文件 1508 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑车.png
文件 1432 2009-07-25 18:07 第15章 中国象棋代码\bmp\黑马.png
文件 14634 2018-08-02 10:25 第15章 中国象棋代码\mychess V2.2-1.py
目录 0 2018-11-07 19:54 第15章 中国象棋代码\bmp
目录 0 2018-11-07 19:54 第15章 中国象棋代码
----------- --------- ---------- ----- ----
156339 19
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论