资源简介
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-BDD100K大规模多样化驾驶视频数据
- Instant Pygame for Python Game Development How
- Biopython Tutorial
- Think Python 2nd
- 一个小小的表白程序(python)
- Python课堂笔记(高淇400集第一季)
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
评论
共有 条评论