一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : 3435673055@qq.com
Time of completion:2022.11.25
Last edited: 2022.11.30
目录
基于Pygame的中国象棋的制作(China Chess)
象棋简介
中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。
中国象棋是中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规则简明易懂。中国象棋在中国的群众基础远远超过围棋,是普及最广的棋类项目,中国象棋已流传到十几个国家和地区。
中国象棋使用方形格状棋盘,圆形棋子共有32个,红黑二色各有16个棋子,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。
一:效果展示
二:所需配置
1.环境配置
pygame
wrapt
colorama
astroid
pylint
2.图标配置
三:代码展示
对打开页面的初始化设置,可以自由更改所打开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实现的
五:作者有言
如果需要代码,请私聊博主,博主看见回。
如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……