基于python的游戏设计与实现-基于Python的网络中国象棋游戏设计与实现...

基于python的游戏设计与实现-基于Python的网络中国象棋游戏设计与实现...

2023年7月15日发(作者:)

基于python的游戏设计与实现-基于Python的⽹络中国象棋游戏设计与实现基于Python的⽹络中国象棋游戏设计与实现 摘要中国象棋是⼀种家喻户晓的棋类游戏,随着互联⽹时代的到来,⼈们的娱乐⽅式也逐渐向PC端和移动端上发展。本⽂将传统的中国象棋游戏和当下的互联⽹技术结合作为重点,围绕基于UDP的SOCKET编程实现⽹上双⼈对战游戏进⾏阐述。⽹络中国象棋采⽤C/S架构,分为服务器端和客户端,在进⾏游戏时,服务器端⾸先启动,当客户端成功连接服务器端后即可⾛棋;在服务器端和客户端中,⼜分为三个部分,分别是局⾯表⽰,⾛法⽣成和建⽴连接三⼤部分,分别实现游戏的各个功能,本⽂采⽤了Python语⾔,充分发挥了其易读易维护,清晰化⼀的语⾔风格,开发出功能完善界,界⾯美观的中国象棋游戏。关键词⽹络中国象棋游戏;Python;socket Design and Implementation of Online Chinese Chess Game Based on Python AbstractChinese chess is a well-knownchess game. With the advent of the Internet era, peoples entertainment has gradually evolved toward the PC and article focuses on the combination of traditional Chinese chess games and current Internet technologies. The onlinedouble-play game is implemented around the UDP-based SOCKET k Chinese Chess adopts C/Sarchitecture and is divided into server and client. When playing the game, the server first starts, and when the clientsuccessfully connects to the server, it can move; In the server side and the client side, it is divided into three parts. They arethe situational representation, the three major parts of the game generation and the establishment of the connection,respectively, to achieve the various functions of the game, This article adopts the Python language, which makes full use ofits easy-to-read, easy-to-maintain, clear-cut language style, and develops a Chinese chess game with perfect functions andbeautiful interface. Key wordsNetwork Chinese Chess Game; Python; socket ⽬ 录 1 绪论1 1.1研究背景1 1.2⽹络象棋的发展背景1 1.3研究意义2 2 相关技术介绍2 2.1 Python简介2 2.2 Socket简介2 2.3 UDP简介2 3 需求分析2 3.1 局⾯表⽰2 3.2 ⾛法⽣成33.3 ⿏标响应3 3.4 双⼈对弈4 4 系统实现4 4.1程序流程设计4 4.2 服务器端5 4.2.1 主程序5 4.2.2 ⽤户界⾯8 4.2.3 ⾛法⽣成114.2.4 悔棋16 4.2.5 发送与接收消息18 4.2.6 画对⽅棋⼦20 4.2.7启动新线程21 4.2.8 开始新游戏21 4.2.9 求和与认输22 4.2.10 退出游戏23 4.3 客户端24 4.3.1 主程序25 4.3.2 ⽤户界⾯26 4.3.3 坐标的转换26 5 系统测试与总结27 5.1 系统测试27 5.1.1 运⾏效果测试27 5.1.2 系统功能测试27 5.2 总结与展望28 参考⽂献29 1 绪论 1.1研究背景 在21世纪的今天,互联⽹技术已然⼴泛深⼊到了⼈们⽣活与学习的⽅⽅⾯⾯。互联⽹技术涉及的领域更是种类繁多。与此同时,随着计算机⾛进了千家万户,⽤它在互联⽹上进⾏游戏已经成为了当今⼤多数⼈的娱乐选择和休闲⽅式[1]。⽽这种⽅式也使得⼀些古⽼的中国益智游戏重焕⽣机,中国象棋便是其中之⼀。通过⽹络,即使远在天边的棋友亦可相互切磋,增长技艺,在这个⼤平台上交到朋友。本⼈⾝为⼀名学⽣,在家庭的熏陶下,对中国象棋从⼩就有很⾼的兴趣,在系统学习了Python语⾔后,想通过这次毕业设计,将中国象棋这个游戏同互联⽹结合起来,实现能够在⽹络上进⾏双⼈对战的功能,⼀来是⾃⼰的兴趣使然,⼆来也对曾经学过的知识进⾏⼀次巩固。1.2⽹络象棋的发展背景 伴随互联⽹时代的到来以及娱乐⽅式的转变,众多民间益智游戏相继被“移植”到了⽹络当中,中国象棋也不例外。如果想⽤传统的⽅法和⼀位异地的朋友下棋⽆疑是 意见困难的是,这时候互联⽹的便利性和同步性优点就显现了出来。在⽹络上互不相识的棋友们可以随时对弈切磋,⽆疑对中国象棋的发展带来了重⼤的积极作⽤,这是值得肯定的[2]。然⽽中国象棋在新时代中却也⾯临着诸多的问题。随着IT⾏业的逐步成熟,⼈⼯智能应运⽽⽣,在棋坛当中最著名的事件便是2016年AlphaGo的横空出世[3],横扫当今围棋各路⾼⼿。同样的,⼈⼯智能在中国象棋领域也基本上形成“统治”地位[4]。可以说象棋软件的棋⼒是与⽇俱增,这本是棋坛的好事⼀桩,然⽽许多⼈却对软件形成了很强的依赖程度,在⽹上使⽤软件来与其他⼈对弈,就和考试作弊⼀样,不仅⾃⼰的棋⼒⽆法提升,还⼤⼤打击了对⽅对象棋的兴趣,这与给棋⼿们带来便捷,相互提⾼象棋技艺的宗旨相悖,造成了很恶劣的风⽓。当代年轻⼈正处于信息爆炸的时代,⾝边的新事物层出不穷,⾯临的选择越来越多,中国象棋在青少年圈的印象⼤多都是街摊边的中⽼年⼈所玩的游戏,从⽽在⼼⾥产⽣抵触⼼理[5],会感觉玩象棋是“掉价”的,在这⼀⽅⾯缺乏对青少年的正确引导。1.3研究意义 进⼊信息时代以来,计算机⾛进了千家万户,地球变成了地球村,本设计正是借着互联⽹的便捷性与同步性,着⼿建⽴⼀个基于Python的⽹络中国象棋游戏[6],既摆脱了单机版的乏味性和依赖性,⼜能在切磋较量中提升棋艺,获得友情,创造⼀个良好的竞技风⽓,提供⼀种休闲娱乐的⽅式,这便是我想设计⼀款中国象棋⽹上对弈游戏的初衷。2 相关技术介绍 2.1 Python简介 Python是⼀门跨平台、开源、免费的解释型⾼级动态编程语⾔,作为⼀门动态语⾔它更适合初学编程者,具有简洁、可读性⾼、易于学习等突出优点。在2019年⼀⽉的编程语⾔TOP20中,Python语⾔排⾏第三[7],成为了最受欢迎的程序设计语⾔之⼀。2.2 Socket简介 Socket是套接字的英⽂名称,是⽹络编程的⼀个抽象概念,当前的任何⽹络通信都是通过Socket来完成的,同样的⽹络版中国象棋也不例外。通常⽤⼀个Socket表⽰“打开了⼀个⽹络连接”[8]。⽽打开⼀个Socket需要知道⽬标计算机的IP和端⼝号,再制定协议类型。2.3 UDP简介 UDP协议(User Datagram Protocol)是⽤户数据报协议,是⾯向⽆连接的协议,属于传输层的协议[9]。只需知道对⽅的IP地址和端⼝号即可直接发送数据包,但是不保证传输的可靠性。使⽤UDP的双⽅分为服务器端和客户端。UDP的优势相对于TCP协议来说,UDP没有发送数据之前的连接建⽴过程,⽽且传输速度更快,所以对于不要求可靠到达的数据就可以使⽤UDP协议[10]。UDP存在的问题UDP不能知道是否有报⽂丢失以及接收⽅到达的报⽂数据的顺序是否和发送时的顺序⼀样。即传输数据不可靠[11]。3 需求分析 3.1 局⾯表⽰ 局⾯表⽰即绘制棋盘和棋⼦[12]。根据⾏棋⽅的不同,绘制棋⼦时⼰⽅在南,敌⽅在北。棋⼦、棋盘显⽰需要的图⽚资源如下所⽰,构成⼀套还不错的棋具。图 1 棋盘初始化效果 3.2 ⾛法⽣成 ⾛法⽣成即根据中国象棋的⾏棋规则对各个棋⼦进⾏⾛棋限制,判断是否可以⾛棋。在违规⾛棋后提⽰“不符合⾛棋规则”。3.3 ⿏标响应 在⾏棋过程中,需要⽤户进⾏⿏标点击才可以移动棋⼦,⿏标响应是⼈机交互不可缺少的⼀部分[13]。本设计利⽤Python的GUI库tkinter中的event类进⾏⿏标响应。当⽤户点击棋盘时,event类会⽣成event.x和event.y对象,分别表⽰相对于棋盘左上⾓(即左上⾓坐标为0,0),⿏标点击位置像素横坐标和像素纵坐标。这样我们再进⾏⼀步坐标转换即可实现⿏标响应[14]。3.4 双⼈对弈 本设计分为服务器端和客户端两部分,连接完成后需要实现双⼈交替⾛棋,即⼀⽅进⾏⾛棋后,向对⽅发送⾛棋信息,对⽅接收信息后,将信息转化为⾛棋动作表⽰在棋盘上[15],然后对⽅再⾛棋,形成循环直到⼀⽅获得游戏胜利、认输、求和或退出游戏。4 系统实现 本设计是基于UDP的Socket编程⽅法来制作的⽹络中国象棋程序,分为服务器端和客户端两⼤块。服务器端为红⽅,客户端为⿊⽅。4.1程序流程设计 程序的总体流程如下图所⽰。此流程是不进⾏悔棋、求和、认输、重新开始情况下的流程。如果进⾏上述操作,则相应执⾏悔棋、求和、认输、重新开始的功能。图 2 中国象棋总流程 程序的功能图如下图所⽰ 图 3 中国象棋功能图 4.2 服务器端 4.2.1 主程序 服务器端的程序界⾯如下图所⽰ 图 4 服务器端程序界⾯ 主程序实现的功能如下 (1) 创建Windows窗⼝对象root。(2) 设置⼰⽅是红⽅还是⿊⽅。(3)初始化游戏棋盘chessmap。(4)加载棋盘与棋⼦。(5)添加显⽰提⽰信息的标签Label。(6)绑定Canvas的⿏标和按钮的左键单击事件。(7)创建UDP通信服务器端的Socket,绑定在8000端⼝。(8)启动新线程接收客户端发送过来的新消息。代码如下 -*- coding utf-8 -* from tkinter import * from ebox import * import socket import threading import osroot Tk 中国象棋服务器端(红⽅) 创建⼀个Canvas,设置其背景⾊为⽩⾊ cv Canvasroot, bg white, width 720, height800 chessname[“⿊车“,“⿊马“,“⿊象“,“⿊仕“,“⿊将“,“⿊仕“,“⿊象“,“⿊马“,“⿊车“,“⿊卒“,“⿊炮“, “红车“,“红马“,“红相“,“红仕“,“红帅“,“红仕“,“红相“,“红马“,“红车“,“红兵“,“红炮“] imgs[PhotoImagefilebmpchessname[i].pngfor推荐访问:我和我和我和

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689408715a243329.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信