Python实现人机中国象棋游戏

特别鸣谢以下更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com

初中毕业读什么技校 http://cntkd.net

茂名一技http://www.enechn.com

ppt制作教程步骤 http://www.tpyjn.cn

兴化论坛http://www.yimoge.cn

电白论坛 http://www.fcdzs.com

永城信息港 http://www.1l4u.com

茂名一技有什么专业 http://www.jeob.cn

茂名市高级技工学校 http://www.szsyby.net

初中毕业读什么技校 http://www.ausq.cn


导语

哈喽!哈喽!我是木木子!今日游戏更新——中国象棋上线啦!

中国象棋是一种古老的棋类游戏,大约有两千年的历史。

是中华文明非物质文化经典产物,艺术价值泛属于整个人类文明进化史的一个分枝。

在中国,可以随处在大街上、小公园儿里等地方经常看到一堆人围在一起下棋,这就足以说明中国象棋的流行性以及普遍性有多高!

早前曾有统计,14、15个中国人当中,就有1个会下中国象棋。中国象棋的受众,可能数以亿计!

今天教大家制作一款中国象棋and想学象棋的话也可以来看看当作新手村吧~

1.游戏规则&基本玩法

1.1 基本玩法

中国象棋的游戏用具由棋盘和棋子组成,对局时,由执红棋的一方先走,双方轮流各走一招,直至分出胜、负、和,对局即终了。轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。双方各走一着,称为一个回合。

1.2 行棋规则

2.素材文件

3.主要代码

chinachess.py 为主文件;constants.py 数据常量;pieces.py 棋子类,走法;computer.py 电脑走法计算;button.py按钮定义。

目前电脑走法比较傻,有兴趣的朋友可以对computer.py 进行升级!不过这针对大部分的新手刚开始学象棋的话完全够用了哈~哈哈哈 如果你新手入门玩儿的过电脑就说明你入门了!

3.1 Chinachess.py 为主文件

import pygame
import time
import Xiangqi.constants as constants
from Xiangqi.button import Button
import Xiangqi.pieces as pieces
import Xiangqi.computer as computer

class MainGame():
window = None
Start_X = constants.Start_X
Start_Y = constants.Start_Y
Line_Span = constants.Line_Span
Max_X = Start_X + 8 * Line_Span
Max_Y = Start_Y + 9 * Line_Span

player1Color = constants.player1Color
player2Color = constants.player2Color
Putdownflag = player1Color
piecesSelected = None


button_go = None
piecesList = []


def start_game(self):
    MainGame.window = pygame.display.set_mode([constants.SCREEN_WIDTH, constants.SCREEN_HEIGHT])
    pygame.display.set_caption("Python代码大全-中国象棋")
    MainGame.button_go = Button(MainGame.window, "重新开始", constants.SCREEN_WIDTH - 100, 300)  # 创建开始按钮
    self.piecesInit()


    while True:
        time.sleep(0.1)
        # 获取事件
        MainGame.window.fill(constants.BG_COLOR)
        self.drawChessboard()
        #MainGame.button_go.draw_button()
        self.piecesDisplay()
        self.VictoryOrDefeat()
        self.Computerplay()
        self.getEvent()
        pygame.display.update()
        pygame.display.flip()


def drawChessboard(self): #画象棋盘
    mid_end_y = MainGame.Start_Y + 4 * MainGame.Line_Span
    min_start_y = MainGame.Start_Y + 5 * MainGame.Line_Span
    for i in range(0, 9):
        x = MainGame.Start_X + i * MainGame.Line_Span
        if i==0 or i ==8:
            y = MainGame.Start_Y + i * MainGame.Line_Span
            pygame.draw.line(MainGame.window, constants.BLACK, [x, MainGame.Start_Y], [x, MainGame.Max_Y], 1)
        else:
            pygame.draw.line(MainGame.window, constants.BLACK, [x, MainGame.Start_Y], [x, mid_end_y], 1)
            pygame.draw.line(MainGame.window, constants.BLACK, [x, min_start_y], [x, MainGame.Max_Y], 1)


    for i in range(0, 10):
        x = MainGame.Start_X + i * MainGame.Line_Span
        y = MainGame.Start_Y + i * MainGame.Line_Span
        pygame.draw.line(MainGame.window, constants.BLACK, [MainGame.Start_X, y], [MainGame.Max_X, y], 1)


    speed_dial_start_x =  MainGame.Start_X + 3 * MainGame.Line_Span
    speed_dial_end_x =  MainGame.Start_X + 5 * MainGame.Line_Span
    speed_dial_y1 = MainGame.Start_Y + 0 * MainGame.Line_Span
    speed_dial_y2 = MainGame.Start_Y + 2 * MainGame.Line_Span
    speed_dial_y3 = MainGame.Start_Y + 7 * MainGame.Line_Span
    speed_dial_y4 = MainGame.Start_Y + 9 * MainGame.Line_Span


    pygame.draw.line(MainGame.window, constants.BLACK, [speed_dial_start_x, speed_dial_y1], [speed_dial_end_x, speed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值