基于MASM32的斗地主游戏开发与实现

Scavengers

发布日期: 2019-04-15 11:40:47 浏览量: 356
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

1 环境要求

  • 操作系统:Windows 10 (64 位)

  • IDE:Visual Studio 2015/2017

  • 汇编开发工具包:MASM32

2 实现原理

2.1 项目架构目录

  1. ./Landlords
  2. ├── 头文件
  3. ├── resource.h
  4. ├── cardgroup.inc
  5. ├── cards.inc
  6. ├── client.inc
  7. ├── game.inc
  8. ├── player.inc
  9. └── server.inc
  10. ├── 源文件
  11. ├── cardgroup.asm // 存储牌组(出牌时选择的手牌)
  12. ├── cards.asm // 管理扑克牌操作(洗牌、发牌)
  13. ├── client.asm // 管理客户端的各种操作
  14. ├── game.asm // 控制整个游戏进行过程
  15. ├── player.asm // 管理玩家操作(抽牌、出牌)
  16. ├── scene.asm // 管理游戏界面与点击事件
  17. └── server.asm // 管理服务器的各种操作
  18. └── 资源文件
  19. ├── xxx.bmp // 各种图片资源
  20. └── landlord_gui.rc // 资源管理文件

2.2 程序模块设计

2.2.1 游戏逻辑

  • 可以等概率地洗牌、发牌

  • 可以判断哪位玩家成功叫得地主,并将三张地主牌发给此玩家

  • 每轮游戏均从地主开始按照逆时针顺序轮流出牌,出牌情况会告知所有玩家

  • 每次出牌结束后,更新所有玩家的数据与界面显示

  • 当一个玩家牌数为0时,游戏结束,判定胜方(地主or农民)并进行游戏结束提示

2.2.2 网络通信

  • 网络通讯自定义了基于TCP的应用端传输协议,用于游戏过程中信息的传输与解析

  • 服务器采用轮询的方式接收所有玩家的传入数据,通过解析报头判断数据包的命令,根据命令进行判断处理后将包重新加上处理完的报头发送给所有玩家

  • 客户端采用异步方式接受服务器传入的数据,也可以将玩家操作之后的新数据传给服务器

2.2.3 界面设计

  • 在游戏开始时,界面上会弹出一个输入框,用户输入服务器所在ip地址进行连接

  • 在游戏过程中,界面上会显示三张地主牌,玩家自身的手牌,玩家自身的角色(地主还是农民),所有玩家的出牌情况,其他玩家的手牌数量

  • 在游戏过程中,玩家可以点击按钮进行叫地主的操作与出牌的操作

  • 当游戏结束后,界面上会弹出提示框,告知玩家游戏结束信息,同时会展示其他玩家手牌

  • 当游戏结束后,玩家可以点击提示框的确认按钮继续游戏,也可以关闭窗口离开游戏

3 操作说明

3.1 程序的生成与使用

  • 在client.asm文件中将client_main设置为程序入口点,设置子系统为窗口,汇编生成exe文件

  • 在Debug目录下找到生成的exe文件,分别拷贝三份到另一个目录下(重命名为player1.exe、player2.exe、player3.exe)

  • 在server.asm文件中将server_main设置为程序入口点,设置子系统为控制台,汇编生成exe文件

  • 在Debug目录下找到生成的exe文件,拷贝到另一个目录下(命名为server.exe)

  • 先启动server.exe,显示Game Start!则表示服务器运行正确

  • 依次启动player1.exe、player2.exe、player3.exe,输入ip地址与服务器进行连接

  • 进行游戏

    • 叫地主环节:点击一分按钮叫地主,点击不叫按钮放弃叫地主
    • 出牌环节:点击手牌进行选择,点击出牌按钮出牌,点击不出按钮过牌
    • 游戏结束:点击提示框上的确定按钮继续下一轮游戏

4 程序的运行截图

4.1 服务器

4.2 客户端

ip地址输入框

叫地主界面

游戏界面

结束界面

上传的附件 cloud_download 基于MASM32的斗地主游戏开发与实现.zip ( 570.09kb, 1次下载 )
error_outline 下载需要15点积分

发送私信

坚持了才叫梦想,放弃了就只是妄想

8
文章数
24
评论数
最近文章
eject