论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > DELPHI >

A450vc++四国军棋系统+论文

服务器模块:

Ø       游戏通信类,由CServer类实现。负责处理游戏中客户与服务器之间的网络连接细节,从而使得对于客户和服务器之间的数据传输可以忽略通信细节。模块描述如图4-6。 内容来自论文无忧网 www.paper51.com

paper51.com

图4-6  游戏通信类模块描述 内容来自论文无忧网 www.paper51.com

Ø       游戏协议类,由CServerProtocol类实现。游戏协议类负责解析客户/服务器端所传输的协议,同时根据不同的协议调用不同的操作函数,并根据用户状态变化维护用户信息。模块描述如图4-7。

内容来自论文无忧网 www.paper51.com

paper51.com

图4-7  游戏协议类模块描述

http://www.paper51.com

Ø       游戏逻辑类负责处理游戏逻辑,在军棋游戏中包括计算得分,计算赢等。游戏逻辑类CServerLogic和游戏协议类分离的优点是可以只通过修改逻辑类来改变为不同的网络游戏,如修改为“象棋逻辑”即可以成为象棋游戏,修改为“升级逻辑”即可以成为升级游戏。

内容来自www.paper51.com

Ø       用户管理类,直接在CCServerFrameView中实现。

copyright paper51.com

Ø       数据库类,采用SQL Server 2000数据库,只是用来保存玩家的资料等一些数据。采用MFC ODBC数据库编程,在程序中为CServerFrameSet类。正如MFC提供的其他类库很好地对相应的Win32 API作了封装,MFC提供的ODBC类库也相应地对ODBCAPI作了封装,通过提供一种高级接口而避免直接使用ODBC API所涉及的种种繁琐处理,简化了对ODBC数据库的应用程序编程。模块描述如图4-8。 内容来自论文无忧网 www.paper51.com

paper51.com

图4-8  数据库类模块描述

copyright paper51.com

第五章 程序编码

内容来自www.paper51.com

5.1 数据结构 内容来自论文无忧网 www.paper51.com

Ø       用17×17的数组表示军棋的棋盘,如下:

内容来自论文无忧网 www.paper51.com

intBOARD[17][17] = { copyright paper51.com

    {-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1}, 内容来自www.paper51.com

    {-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1},

paper51.com

    {-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1}, 内容来自www.paper51.com

    {-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1}, 内容来自www.paper51.com

    {-1,-1,-1,-1,-1,-1,0,0,0,0,0,-1,-1,-1,-1,-1,-1}, 内容来自www.paper51.com

    {-1,-1,-1,-1,-1, 0,0,0,0,0,0,0,-1,-1,-1,-1,-1},

copyright paper51.com

    {0,0,0,0,0,0, 0, 0, 0, 0,0,0,0,0,0,0,0},

copyright paper51.com

    {0,0,0,0,0,0, 0,-1, 0,-1,0,0,0,0,0,0,0}, 内容来自论文无忧网 www.paper51.com

    {0,0,0,0,0,0, 0, 0, 0, 0,0,0,0,0,0,0,0}, 内容来自www.paper51.com

    {0,0,0,0,0,0, 0,-1, 0,-1,0,0,0,0,0,0,0}, paper51.com

    {0,0,0,0,0,0, 0, 0, 0, 0,0,0,0,0,0,0,0},

http://www.paper51.com

    {-1,-1,-1,-1,-1, 0, 7, 3,4,5, 3, 0,-1,-1,-1,-1,-1}, copyright paper51.com

    {-1,-1,-1,-1,-1,-1,10, 0,1,0, 9,-1,-1,-1,-1,-1,-1},

内容来自www.paper51.com

    {-1,-1,-1,-1,-1,-1, 8,10,0,1, 5,-1,-1,-1,-1,-1,-1}, 内容来自www.paper51.com

    {-1,-1,-1,-1,-1,-1, 6, 0,4,0, 3,-1,-1,-1,-1,-1,-1},

内容来自论文无忧网 www.paper51.com

    {-1,-1,-1,-1,-1,-1, 2, 7,6,1,11,-1,-1,-1,-1,-1,-1}, 内容来自www.paper51.com

    {-1,-1,-1,-1,-1,-1,11,12,11,2,2,-1,-1,-1,-1,-1,-1},

copyright paper51.com

};

内容来自论文无忧网 www.paper51.com

-1表示棋盘以外的位置 paper51.com

0  表示棋盘内位置,但无棋子 http://www.paper51.com

1  工兵

copyright paper51.com

2  排长 paper51.com

3  连长

内容来自论文无忧网 www.paper51.com

4  营长 内容来自论文无忧网 www.paper51.com

5  团长 paper51.com

6  旅长

copyright paper51.com

7  师长 内容来自www.paper51.com

8  军长 http://www.paper51.com

9  司令

http://www.paper51.com

10炸弹

copyright paper51.com

11地雷

内容来自论文无忧网 www.paper51.com

12我方军旗

paper51.com

13上方盟友或敌方的棋子 paper51.com

14左边敌方的棋子 内容来自www.paper51.com

15右边敌方的棋子

内容来自www.paper51.com

16上方军旗

paper51.com

17左方军旗

内容来自www.paper51.com

18右方军旗

copyright paper51.com

为了处理工兵的走法的方便,将四个转角斜对的位置恒置为0,这样在为工兵寻找路径时会方便一些。 copyright paper51.com

Ø       游戏协议 内容来自论文无忧网 www.paper51.com

以char(20)作为一次信息的起始点,终点。“+”在字符串中用空格代替。以一字符串作为向服务发出的请求信息,服务器也以相应的一字符串发送回客户端作为应答。

paper51.com

对话:

paper51.com

A+桌子号+聊天内容

copyright paper51.com

坐下: http://www.paper51.com

B+桌子号+方位

内容来自www.paper51.com

调度完成: copyright paper51.com

C+桌子号+方位+(棋盘数据)[用一维数据形式表示6×5的二维数组,数据之间用空格开。 内容来自www.paper51.com

开始游戏:(只由服务器发出) 内容来自www.paper51.com

D+对战类型 copyright paper51.com

下棋:

http://www.paper51.com

E +桌子号+方位+起点(x,y)+终点(x,y) copyright paper51.com

吃:(只由服务器发出)(包括移动)

内容来自论文无忧网 www.paper51.com

F +起点(x,y) + 终点(x,y) copyright paper51.com

被吃:(只由服务器发出) 内容来自www.paper51.com

G +起点(x,y) + 终点(x,y)

内容来自www.paper51.com

炸:(只由服务器发出)

paper51.com

H +起点(x,y) + 终点(x,y)

paper51.com

输:离开:(包括断线)投降: http://www.paper51.com

I +方位 copyright paper51.com

求和:

copyright paper51.com

K +桌子号+方位 copyright paper51.com

注册: paper51.com

L +用户名+密码

paper51.com

注册成功: 内容来自www.paper51.com

M + 用户名 copyright paper51.com

登录:

http://www.paper51.com

N + 用户名+密码 paper51.com

登录结果:

copyright paper51.com

O + 1/0 copyright paper51.com

离开: paper51.com

P + 桌子号 + 方位 内容来自www.paper51.com

请求接收信息: paper51.com

Q + 桌子号 + 方位

http://www.paper51.com

碰: paper51.com

R + 起点(x,y) + 终点(x,y) 内容来自www.paper51.com

5.2主要界面

内容来自论文无忧网 www.paper51.com

服务器界面如图5-1所示。

http://www.paper51.com

内容来自论文无忧网 www.paper51.com

图5-1  服务器启动界面 paper51.com

客户端大厅界面如图5-2所示。 内容来自www.paper51.com

paper51.com

图5-2  客户端大厅界面

http://www.paper51.com

军棋游戏界面,如图5-3所示: 内容来自www.paper51.com

http://www.paper51.com

图5-3  军棋游戏界面 http://www.paper51.com

5.3重要模块程序实现 http://www.paper51.com

Ø       客户端三拆分窗口的实现

内容来自论文无忧网 www.paper51.com

BOOLCMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

copyright paper51.com

{ 内容来自www.paper51.com

    if(NULL==m_wndSplitter.CreateStatic(this,1,2)) 内容来自论文无忧网 www.paper51.com

       returnFALSE; 内容来自论文无忧网 www.paper51.com

    if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTableView),CSize(620,800),pContext)) http://www.paper51.com

    return FALSE; 内容来自www.paper51.com

    if(NULL==m_wndLeftSplitter.CreateStatic(&m_wndSplitter,2,1, 内容来自论文无忧网 www.paper51.com

       WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,1)))

内容来自论文无忧网 www.paper51.com

       returnFALSE; http://www.paper51.com

    if(!m_wndLeftSplitter.CreateView(0,0,RUNTIME_CLASS(CCGameHallFrameView),CSize(380,300),pContext)||

copyright paper51.com

    !m_wndLeftSplitter.CreateView(1,0,RUNTIME_CLASS(CHtmlViewEx),CSize(380,500),pContext))

内容来自论文无忧网 www.paper51.com

    return FALSE; paper51.com

    pWebView=(CHtmlViewEx*)m_wndLeftSplitter.GetPane(1,0);

copyright paper51.com

    pServerTreeView=(CCGameHallFrameView*)m_wndLeftSplitter.GetPane(0,0) http://www.paper51.com

    pTableView=(CTableView*)m_wndSplitter.GetPane(0,0);

内容来自www.paper51.com

    pServerTreeView->pTable=pTableView;

http://www.paper51.com

    pWebView->Navigate2("http://free2.e-168.cn/zhou207",0,NULL);

内容来自www.paper51.com

    return TRUE; paper51.com

}

copyright paper51.com

Ø       客户端初始化及连接 内容来自www.paper51.com

voidCClient::ClientInit()

内容来自论文无忧网 www.paper51.com

{ http://www.paper51.com

    if(WSAAsyncSelect(m_hSocket,m_hWnd,CLI_MESSAGE,FD_READ|FD_WRITE|FD_CLOSE|FD_CONNECT)>0) 内容来自论文无忧网 www.paper51.com

    {

copyright paper51.com

       AfxMessageBox("Errorin select");

http://www.paper51.com

    }

http://www.paper51.com

} http://www.paper51.com

BOOLCClient::InitAndConnect(HWND hWnd, UINT port, CString strServer)

paper51.com

{

内容来自www.paper51.com

    m_hWnd=hWnd;

内容来自www.paper51.com

    m_uPort=port; 内容来自www.paper51.com

    m_strServer=strServer; paper51.com

    if(m_hSocket!=NULL)

copyright paper51.com

    { copyright paper51.com

       //先将以前打开的套接字关闭 copyright paper51.com

       closesocket(m_hSocket);

内容来自www.paper51.com

       m_hSocket=NULL;

内容来自www.paper51.com

    } 内容来自论文无忧网 www.paper51.com

    //创建面向连接的socket

copyright paper51.com

    m_hSocket=socket(AF_INET,SOCK_STREAM,0);

http://www.paper51.com

    ASSERT(m_hSocket!=NULL); copyright paper51.com

    ClientInit();

http://www.paper51.com

    //设置连接信息:网络协议+IP地址+端口 paper51.com

    m_addr.sin_family=AF_INET; http://www.paper51.com

    m_addr.sin_addr.S_un.S_addr=inet_addr(m_strServer.GetBuffer(0));

内容来自www.paper51.com

    m_addr.sin_port=htons(m_uPort);

内容来自www.paper51.com

    //连接服务器 copyright paper51.com

    int ret=0;

copyright paper51.com

    int error=0; http://www.paper51.com

    ret=connect(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));

copyright paper51.com

    if(ret==SOCKET_ERROR) http://www.paper51.com

    { 内容来自www.paper51.com

       //连接失败

内容来自论文无忧网 www.paper51.com

       if(GetLastError()!=WSAEWOULDBLOCK) 内容来自www.paper51.com

       { 内容来自www.paper51.com

           AfxMessageBox(_T("请确认服务器确实已经打开并工作在同样的端口!"));

copyright paper51.com

           returnFALSE; 内容来自论文无忧网 www.paper51.com

       }

copyright paper51.com

    } copyright paper51.com

    return TRUE; 内容来自论文无忧网 www.paper51.com

}

paper51.com

------分隔线----------------------------
联系方式