【C#大作业】你画我猜——设计文档

1 系统功能说明

该系统采用C/S架构,是一种可以联机进行你画我猜的游戏程序,玩家登录后,可选择进出房间,聊天,画图,猜图等功能。

玩家首先用不可重名的用户名登录,之后会进入房间大厅,在大厅里玩家可以自由选择想进入的房间,也可以在大厅与其他玩家进行即时聊天。

进入房间后,聊天窗口会提示玩家进出房间的消息并刷新玩家列表。第一个进入房间的玩家,会默认成为画题的一方,系统会给其作画题目;之后进入的玩家都是猜画的一方,仅能知晓题目的字数。

玩家均有用户列表,退出房间,即时聊天功能。画家额外拥有刷新题目,五种不同颜色画笔以及擦除的作画功能。猜画玩家专享答题窗口,将猜测的答案发送出去后,系统会提示其正误。只要有一名玩家猜中,此回合游戏就结束,系统将对每个玩家进行弹窗通告某个用户猜对了,并且猜对的玩家成为画题人。若作画玩家中途退出,将任选一名玩家为新的作画人。

2 运行环境说明

编译环境:visual studio 2019;

采用TCP模式,C/S架构,服务端使用WCF服务库,客户端使用WPF应用(.NET Framework);

系统实现多台计算机联机画板和联机通信。

3 系统概要设计

3.1 系统总体功能设计

用户登录:
用户名不能为空,不能重复; 大厅有四个游戏房间,房间下面有对应的房间信息(房间号和、房间人数),玩家可随意进入;

大厅聊天:
用户user发送消息送到服务器,服务器遍历在线玩家列表发送给所有玩家;
房间内聊天、房间内猜题:用户user发送消息到服务器,服务端遍历该房间内玩家列表将消息发送给所有玩家;

墨迹的发送:
画板新增墨迹之后对墨迹进行打包转化成string类型发送到服务端,服务端发送给该房间内所有玩家,然后进行转化,添加到画板上;

题目的刷新:
画题人点击刷新按钮,服务端会读取题库随机返回一个题目,同时对房间内所有玩家题目部分进行相应的更新;

猜题:
猜题人猜题,服务端返回相应的提示(正确或者错误),如果正确,所有用户都会收到该用户猜对的信息,猜对的玩家成为新的画题人,其余玩家猜题,画板清空,题目刷新。

玩家退出房间:
如果是画题人退出房间,在剩余的猜题人中选取一个成为画题人并更新其面板,清空墨迹信息。房间用户收到退出提示,大厅房间信息更新;

退出系统:
如果玩家在游戏房间内退出系统,先执行退出房间,再执行退出系统,大厅消息栏提示用户退出。

3.2 系统接口设计

##服务端实现的接口:
[OperationContract(IsOneWay = true)]
void Login(string userName); //登录系统

[OperationContract(IsOneWay = true)]
void Logout(string userName); //登出系统

[OperationContract(IsOneWay = true)]
void Talk(string userName, string message); //大厅聊天

[OperationContract(IsOneWay = true)]
void InRoom(string username, string roomname); //进入游戏房间

[OperationContract(IsOneWay = true)]
void Room_Talk(string userName, string message); //房间内聊天

[OperationContract(IsOneWay = true)]
void sendink(string username, string ink); //传送笔迹

[OperationContract(IsOneWay = true)]
void Guess_talk(string username, string message); //猜题框消息

[OperationContract(IsOneWay = true)]
void Gusee_win(string username); //猜测正确

[OperationContract(IsOneWay = true)]
void change_hua(string username); //改变画题人

[OperationContract(IsOneWay = true)]
void Refersh_Timu(string username); //刷新题目

[OperationContract(IsOneWay = true)]
void RoomOut(string username); //用户退出房间
客户端实现的接口:
[OperationContract(IsOneWay = true)]
void ShowLogin(string loginUserName, int[] roomcount); //显示新用户登录游戏,进入大厅

[OperationContract(IsOneWay = true)]
void ShowLogout(string userName); //显示用户退出游戏

[OperationContract(IsOneWay = true)]
        void ShowTalk(string userName, string message); //在大厅发消息显示消息内容

[OperationContract(IsOneWay = true)]
void InitRoomUsersInfo(string RoomUsersInfo, string ink, bool hua_or_cai, string timu); //初始化房间玩家列表

[OperationContract(IsOneWay = true)]
void ShowInRoom(string username); //显示用户进入房间

[OperationContract(IsOneWay = true)]
void ShowOutRoom(string userName); //显示用户退出房间

[OperationContract(IsOneWay = true)]
void Showlabel(string labelname, int roomusercount); //大厅界面显示四个房间的人数

[OperationContract(IsOneWay = true)]
void Show_Room_Talk(string userName, string message); //显示在房间里聊天的消息

[OperationContract(IsOneWay = true)]
void Show_Room_Talk_error(string message); //显示在房间里聊天的消息

[OperationContract(IsOneWay = true)]
void Show_Guess_Talk(string userName, string message, string daan); //显示猜测聊天框中的聊天消息

[OperationContract(IsOneWay = true)]
void Showink(string ink); //显示墨迹信息

[OperationContract(IsOneWay = true)]
void Show_Guess_win(string username); //显示用户猜中

[OperationContract(IsOneWay = true)]
void Show_Refersh_Timu(string username, string Timu); //刷新题目后,在各个玩家界面显示

[OperationContract(IsOneWay = true)]
void Show_Cannot_login();//提示用户不能登录

[OperationContract(IsOneWay = true)]
void InitNewchutiren(string timu); //初始化新的出题人界面

[OperationContract(IsOneWay = true)]
void change_hua_or_cai(bool hua, string username); //改变画题人和猜题人

4 系统详细设计

4.1 登录界面模块设计

4.1.1 模块描述

用户可以使用不同的用户名称进入游戏,若用户昵称已存在,则不能进入游戏。登录成功后“开始游戏”按钮变成不可点击状态,同时登录界面隐藏,大厅界面出现。

4.1.2 模块UI

图4-1 玩家登录界面
在这里插入图片描述

4.1.3 模块类设计

要实现登陆,首先需要用户名,登录成功与登录失败时控件的显示以及提示的消息

4.2 大厅界面模块设计

4.2.1 模块描述

游戏大厅有四个游戏房间,房间下方显示房间信息(房间号、实时房间人数),玩家可以在游戏大厅任意选择一个游戏房间开始游戏;

右边是聊天界面,玩家可以在这里与其他在线玩家进行即时聊天。

4.2.2 模块UI

图4.2 玩家进入大厅,右边有即时聊天窗口,玩家可任人选房间进入游戏
在这里插入图片描述

4.2.3 模块类设计

A. 大厅房间的实时显示
在这里插入图片描述

B. 大厅的即时聊天窗口的提示及互动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
C. 用户点击房间并进入房间的按钮事件
在这里插入图片描述
D. 初始化新进房间的用户界面
在这里插入图片描述
在这里插入图片描述
E. 用户在大厅退出游戏及其提示
在这里插入图片描述

4.3 游戏房间模块设计

4.3.1 模块描述

房间的主要功能:玩家列表的显示、画板的实现、题库的实现、猜测聊天窗口和房间聊天窗口的交互实现。

4.3.2 模块UI

图4.3-1第一个进入房间的玩家默认作为画家,有画笔和擦除,刷新题目,即时聊天,退出房间等功能
在这里插入图片描述
图4.3.2 后来的玩家作为猜画人,能退出房间,即时聊天,有猜题专栏
在这里插入图片描述

4.3.3 模块类设计

A. 玩家列表

  string[] users = RoomUsersInfo.Split('、');

    this.userlist.Items.Clear();
    for (int i = 0; i < users.Length; i++)
    {
        this.userlist.Items.Add(users[i]);
    }

B. 房间聊天的交互式实现
在这里插入图片描述
在这里插入图片描述
C. 猜测聊天框的实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

D. 笔刷墨迹信息的交互实现
在这里插入图片描述
在这里插入图片描述
E. 题库的设计原理及实现
在这里插入图片描述

5 功能运行效果

5.1 登录

图5-1-1 登录注册界面
在这里插入图片描述

5.2 大厅

图5-2-1 玩家进入大厅通告,大厅聊天
在这里插入图片描述
图5-2-1 大厅玩家退出通知
在这里插入图片描述

5.3 进入房间

图5-3-1 第一个玩家进入房间,画笔及擦除功能,换题功能,聊天功能,退出功能
在这里插入图片描述

图5-3-2 后来的玩家为猜题玩家,有专享的答题窗口
在这里插入图片描述

5.4 玩家画图

图5.4-1画家作画
在这里插入图片描述

图5.4-2画家擦除
在这里插入图片描述

图5.4-3画家换题,并清空画布
在这里插入图片描述

5.5 猜题

图5.5-1 玩家猜题错误
在这里插入图片描述

图5.5-2 玩家猜中
在这里插入图片描述

图5.5-3其他玩家界面显示有玩家猜中
在这里插入图片描述

图5.5-4 猜中人当画家
在这里插入图片描述

图5.5-5 原画家退出,系统随机选一人当画家
在这里插入图片描述

  • 10
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值