基于Pygame的中国象棋的制作(China Chess)

一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : 3435673055@qq.com

Time of completion:2022.11.25
Last edited: 2022.11.30

f431d0905e9c401cad522857cdc057bc.jpeg

目录

​编辑

 

基于Pygame的中国象棋的制作(China Chess)

象棋简介

一:效果展示

二:所需配置 

1.环境配置

2.图标配置

三:代码展示

四:价值展望

五:作者有言


 

 

基于Pygame的中国象棋的制作(China Chess)

象棋简介

        中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。

        中国象棋是中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规则简明易懂。中国象棋在中国的群众基础远远超过围棋,是普及最广的棋类项目,中国象棋已流传到十几个国家和地区。

        中国象棋使用方形格状棋盘,圆形棋子共有32个,红黑二色各有16个棋子,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。 

一:效果展示

5d20bd7077d04d41818bc859feb08182.png

a7304b99f738431e8504e46399301794.png

二:所需配置 

1.环境配置

pygame

wrapt

colorama

astroid

pylint

2.图标配置

cbe1ef9e103446d8b7638ee060ff0818.png

d0817846e4ef42438c2288d2467d42d9.png

三:代码展示

对打开页面的初始化设置,可以自由更改所打开Gui框的大小与字幕。

    def start_game(self):
        MainGame.window = pygame.display.set_mode([constants.SCREEN_WIDTH, constants.SCREEN_HEIGHT])
        pygame.display.set_caption("李创奇 - 中国象棋")
        MainGame.button_go = Button(MainGame.window, "重新开始", constants.SCREEN_WIDTH - 100, 300)  
        self.piecesInit()

通过pygame 的相关函数对棋盘进行绘制

    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_dial_y2], 1)
        pygame.draw.line(MainGame.window, constants.BLACK, [speed_dial_start_x, speed_dial_y2],
                         [speed_dial_end_x, speed_dial_y1], 1)
        pygame.draw.line(MainGame.window, constants.BLACK, [speed_dial_start_x, speed_dial_y3],
                         [speed_dial_end_x, speed_dial_y4], 1)
        pygame.draw.line(MainGame.window, constants.BLACK, [speed_dial_start_x, speed_dial_y4],
                         [speed_dial_end_x, speed_dial_y3], 1)

通过某方“将”或“帅”的缺失判断游戏的胜利与失败

    def VictoryOrDefeat(self):
        txt =""
        result = [MainGame.player1Color,MainGame.player2Color]
        for item in MainGame.piecesList:
            if type(item) ==pieces.King:
                if item.player == MainGame.player1Color:
                    result.remove(MainGame.player1Color)
                if item.player == MainGame.player2Color:
                    result.remove(MainGame.player2Color)

        if len(result)==0:
            return
        if result[0] == MainGame.player1Color :
            txt = "失败!"
        else:
            txt = "胜利!"
        MainGame.window.blit(self.getTextSuface("%s" % txt), (constants.SCREEN_WIDTH - 100, 200))
        MainGame.Putdownflag = constants.overColor

四:价值展望

        中国象棋,不仅仅是茶余饭后的娱乐消遣,其本身更具有文化特征和教育功能

        象棋是极严密的逻辑思维,每动一子都可能影响全盘局势和应变机会,充满了思维辩证哲学。如一昧进攻往往收效甚微,防守反击却能收获奇效,这一点在《梅花谱》中尤为明显,后手屏风马阵型工整可破先手中炮。

        象棋是最好的智力体操,其总体思路或行棋落子,都是复杂综合的心智活动。人们往往忽视它的教育启智功能和对良好心理素质的培养作用。

        象棋可培养人良好的意志品质。其比赛规则的“摸子走子,落子无悔”,就要求弈棋者通盘慎重,作决定要果断。举棋不定是缺乏自信心和果断性的表现。悔棋是棋品和规则所不容许的,是出尔反尔没有定见的表现。

        象棋可培养良好的记忆力和空间想象力。棋艺提高到一定阶段,常可见下盲棋,即只用口说着法而不见棋秤与棋子。著名象棋宗师胡荣华就曾创盲目1对14人的记录。棋艺与记忆及想象之关系极为密切,没有人棋艺高而心智差的,二者相辅相成,互相促进。

        中国象棋是模拟的古代战争、直线战争、陆地战争、平面战争。在中国古代,象棋被列为士大夫们的修身之艺。现在,则被视为是怡神益智的一种有益身心的活动。象棋集文化、科学、艺术、竞技于一身,不但可以开发智力,启迪思维,锻炼辨证分析能力和培养顽强的意志,而且可以修心养性,陶冶情操,丰富文化生活,深受广大群众的喜爱。古今中外男女老少皆宜,由于用具简单,趣味性强,大街小巷常常可见纹枰对弈的中国象棋爱好者。

        中国象棋已有几千年历史、充满东方智慧的中国象棋在中国的群众中基础远远超过围棋,一直是普及最广的棋类项目。

        中国象棋属于“象棋C语言”(象棋China语言),从这个角度分析看待,其它象棋的产生,基本都调用了这部“象棋C语言”的一些关键模块及对话语句。

而好笑的是象棋C语言是使用python实现的

五:作者有言

 

如果需要代码,请私聊博主,博主看见回。

如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羁旅少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值