毕业设计论文(网络棋牌游戏大厅的设计与实现)
本 科 毕 业 设 计 (论文)
题 目:网络棋牌游戏大厅的设计与实现
学生姓名:周思海 学 号:10082322 专业班级:通信工程10-3班 指导教师:顾朝志 2014年 6月20日
网络棋牌游戏大厅的设计与实现
摘 要
随着中国社会经济的不断增长,信息技术的飞速发展,人们对于日常休闲娱乐需求与日俱增。网络棋牌游戏以其群众基础广泛,简单易学,单局游戏时间短暂等特点,逐渐被大家推崇和喜爱。
本课题综合考虑了C++语言稳定性良好、执行效率高、开发周期长,以及Lua语言代码简单、可移植性高、能与C++紧密结合等特点,通过Lua与C++语言的交互,实现PC端网络棋牌游戏大厅的设计,使得系统兼具稳定性好、执行效率高、开发周期短和日常维护方便等优点。作为整体系统中的一部分,本课题主要负责游戏登陆界面以及游戏大厅部分的设计与实现。游戏登陆界面需要验证账号密码,验证成功后,跳转到游戏大厅,大厅内分为用户信息、热门游戏、普通游戏、辅助系统、通知公告五个模块,通过大厅用户可以了解到全方面的游戏信息,轻松地进入各种游戏并且选择房间或者进入后台网站进行充值等操作。
关键词: C++语言;lua语言;登陆界面;游戏大厅
Design and implementation of network chess game lobby
Abstract
With the rapid development of China 's growing social economy , information technology, people growing demand for daily recreation . Internet chess game with its masses of broad-based, easy to learn, single game time is short and so on , gradually respected and loved by everyone .
This topic considering the C + + language good stability, high efficiency , long development cycles and Lua language code is simple, portable high , with C + + in close connection with other characteristics, through interaction Lua and C + + language , to achieve the PC network design chess game lobby , making the system both good stability, high efficiency , short development cycle and facilitate daily maintenance. As part of the overall system , the subject is primarily responsible for the game login screen and the design and implementation of parts of the game lobby . Game login screen need to verify the account password, authentication is successful, jump to the games hall, the hall is divided into user information, popular games, common games, support system , Announcement five modules , you can learn all aspects of the game through the lobby Users information and easily into a variety of games and choose the room or into the background site recharge operation.
Keywords: C + + language; lua language; login screen; games hall
目 录
第1章 绪论 .......................................................................................................................... 1
1.1 课题研究背景和意义 ............................................................................................... 1
1.2 课题现状与发展趋势 ............................................................................................... 1
1.3 论文组织结构 ........................................................................................................... 1
第2章 C++编程语言与轻量级脚本语言lua语言概述 ...................................................... 3
2.1 C++语言概述............................................................................................................. 3
2.1.1 C++语言优点分析.......................................................................................... 3
2.1.2 C++语言缺点分析.......................................................................................... 3
2.2 lua语言特点概述 ...................................................................................................... 3
2.2.1 lua语言优点分析 ........................................................................................... 3
2.2.2 lua语言缺点分析 ........................................................................................... 4
2.3 C++中嵌入lua语言技术概述 .................................................................................. 4
2.4 本章小结 ................................................................................................................... 4
第3章 系统分析 .................................................................................................................... 5
3.1 总体需求分析 ........................................................................................................... 5
3.2 系统性能分析 ........................................................................................................... 5
3.3 可行性分析 ............................................................................................................... 7
3.3.1 经济可行性 .................................................................................................... 7
3.3.2 技术可行性 .................................................................................................... 7
3.4 本章小结 ................................................................................................................... 7
第4章 系统设计与实现 ........................................................................................................ 8
4.1 系统功能模块设计 ................................................................................................... 8
4.1.1 游戏登陆模块 ................................................................................................ 8
4.1.2 大厅用户信息显示模块 ................................................................................ 9
4.1.3 大厅热门游戏模块 ...................................................................................... 10
4.1.4 大厅普通游戏房间模块 .............................................................................. 10
4.1.5 大厅辅助系统模块 ...................................................................................... 11
4.1.6 大厅通知公告模块 ...................................................................................... 11
4.2 数据库设计 ............................................................................................................. 11
4.3 系统的实现 ............................................................................................................. 12
4.3.1 界面布局设计 .............................................................................................. 12
4.3.2 主要代码实现 .............................................................................................. 17
4.4 本章小结 ................................................................................................................. 19
第5章 系统测试 .................................................................................................................. 19
5.1 系统功能测试 ......................................................................................................... 19
5.1.1 游戏登陆模块测试 ...................................................................................... 19
5.1.2 大厅用户信息显示模块测试 ...................................................................... 20
5.1.3 大厅热门游戏模块测试 .............................................................................. 21
5.1.4 大厅普通游戏房间模块测试 ...................................................................... 22
5.1.5 大厅辅助系统模块测试 .............................................................................. 23
5.1.6 大厅通知公告模块测试 .............................................................................. 24
5.2 本章小结 ................................................................................................................. 25
第6章 总结与展望 .............................................................................................................. 27
6.1 课题工作总结 ......................................................................................................... 27
6.2 下一步工作展望 ..................................................................................................... 27
致 谢 .................................................................................................................................... 28
参考文献 ................................................................................................................................ 29
第1章 绪论
1.1 课题研究背景和意义 棋牌文化在中国已经有几百年的历史,大家在工作之余,晚饭之后便会三五成群开始棋牌对弈。棋牌对于年龄、时间以及地点的要求非常低,这使得其成为中国社会最常见的娱乐形式。随着社会经济的发展,网络信息技术的日益完善提高,人们对于日常休闲娱乐需求与日俱增,在学习工作之余,大家总会在网络上选择一些游戏作为休闲娱乐,放松身心的载体。因此网络棋牌游戏以其方便快捷、群众基础广泛,简单易学,单局游戏时间较短等特点,逐渐被大家推崇和喜爱。其中网络棋牌游戏登陆和大厅部分作为与用户交互最直接的一部分,如何能够吸引用户,顺利引导其进入游戏显得尤为重要。
作为运营的商业项目,由于用户量将和效益直接相关而显得至关重要。只有用户数量庞大,项目有收益才能称为合格的项目。无论是游戏本身、登陆界面或者是游戏大厅一切都应该精益求精,力求吸引住每一位客户,争取使得用户帮助宣传。因此美观的界面、便捷的操作,作为网络棋牌游戏大厅部分最不可忽视部分,对于吸引用户、增加用户量、减少用户流失有重要的意义。
1.2 课题现状与发展趋势
目前我国的网络游戏主要包含2大类,一种是我们要研究的传统线上棋牌休闲类游戏,而另一种是以动作/回合角色扮演为代表的网络RPG游戏。现在我们重点分析棋牌休闲类游戏。
网络游戏本身就是一个投入较低、回报巨大的行业,而且棋牌游戏在中国有着扎实的群众基础,这使其成为了中国网络市场内最赚钱、最具竞争力的的游戏类型之一,,从最早的联众、边锋到JJ斗地主、新锐棋牌游戏平台快乐之都等,越来越多的成熟棋牌游戏平台出现在人们的视野中。
由以上几点不难看出,经过最近几年的发展,国内的在线棋牌游戏很早之前就摆脱了单调无趣的雏形,现在出现在大家视野中的棋牌娱乐平台界面精美,后台辅助系统功能完善、游戏精彩鲜活。这些都预示着网络棋牌游戏必然将在网络游戏市场内大放异彩、经久不衰。
1.3 论文组织结构
本文讲述的是网络棋牌游戏大厅的设计与实现。第一章前言,本章主要介绍了此系统
1
的背景与意义以及当前研究的情况与未来发展趋势;第二章讲述的是本系统开发过程中所需要的基本语言与技术及其各自的特点;第三章是对整个系统的需求分析;第四章讲述了对于此游戏系统的设计与实现;第五章是对本系统内各模块的整体测试;第六章是对于课题的总结以及对于下一步工作的展望。还包括对引用文献的说明等。
第2章 C++编程语言与轻量级脚本语言lua语言概述
2.1 C++语言概述
C++语言是一种使用频率非常广泛的计算机编程语言。它是一种静态数据类型检查的并且支持多重编程范式的通用的程序设计语言。它提供了对象、类,以及继承的概念,奠定了面向对象语言的基础[1]。C++不仅支持过程化程序设计、数据抽象、面向对象的程序设计,还支持泛型程序设计等多种程序设计风格。
2.1.1 C++语言优点分析
几乎所有的计算环境中对于C++的使用都非常普及,无论是个人电脑或者Unix工作站以及大型计算机中对于C++的使用都很频繁。众所周知,C++是建立在C语言的基础之上的,C语言的成功无形中对于C++的普及产生了巨大的帮助,然而C++的流行却远不仅仅是这一个原因。C++有许多优点:
① C++语言的适用程序范围极其广泛。它几乎可以用于所有的应用程序,无论是文字
处理的应用程序或者是科学应用程序全部可以由其完成。
② C++继承了C语言中的高效性,并与面向对象编程方式的功能进行了集成。
③ C++语言在其标准库中为开发者提供了大量方便快捷的功能。
2.1.2 C++语言缺点分析
虽然C++语言拥有普及范围广泛、高效等众多的优势,然而在具体游戏应用的开发和使用中还是存在部分的不足之处:
对于在线运营的网络游戏应用程序来说,日常地更新和维护显得至关重要,如果游戏全部使用C++进行开发,更新维护时便需要更新执行文件,这对于频繁的更新来说显得过于复杂繁重。
C++语言编译过程中所需时间长,使得项目开发周期无形中便会变长。
C++学习难度比较大,对于刚刚接触C++的技术人员很难立刻进行项目的研发工作。
2.2 lua语言特点概述
Lua是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能[2]。Lua[3]是由标准C编写而成,代码简洁优美,并且几乎可以编译、运行在所有操作系统和平台上。
2.2.1 lua语言优点分析
第2章 C++编程语言与轻量级脚本语言lua语言概述
Lua作为一种小巧的轻量级脚本语言,相对于传统的编程语言来说具有很多优势: ① 轻量级:Lua[4]语言的官方版本内仅仅包括一个精简的核心和最基本的库。从而
使得Lua语言体积小、启动速度快,非常适合嵌入在其他程序中。
② 可扩展:Lua语言并不像其它许多庞大且全面的语言一样,包含很多的功能,例
如图形界面、网络通讯等。但是Lua却提供了非常方便使用的扩展接口和机制:
由其C或C++的宿主语言提供这些拓展功能。
Lua语言正是以其轻便简洁、在大型项目中易于理解和维护等特点,使其使用率在逐年上升,成为最受欢迎的语言之一。
2.2.2 lua语言缺点分析
Lua语言的有点是足够小和简洁,然而它最大的不足之处也正是这几个字。虽然Lua语言简洁,却依然存在一些不足之处:
Lua为了追求简洁,语言自身没有带有过多的库,使得在编程过程中需要使用的库需要第三方提供。
Lua语言不支持多线程,使得程序在同一时间内无法运行多个任务。
Lua语言内没有continue关键字,导致一些本来简单的循环将会变得异常难以书写。 Lua与C语言的接口风格。相对于Python和Perl使用的接口,Lua的接口风格和汇编语言更加接近,对于刚刚接触Lua语言的人来说,使用起来会觉得不习惯。
2.3 C++中嵌入lua语言技术概述
实际工程开发过程中,我们使用tolua++将C++与Lua进行绑定,使其进行交互[5],通过运用tolua++可以大幅度简化二者一体化的过程。
tolua++是一种第三方的软件包,可以为Lua提供面向对象的特性,这样我们就可以使用Lua来编写使用C++语言库的脚本文件[6]。通过编写干净整洁的C++头文件,tolua++会自动的将代码转化为可以供Lua访问C++接口[7]的相关代码。通过运用Lua自己的API和标记方法,tolua++可以将C++里面的变量、函数、常量、类以及方法映射到Lua里面。在tolua++的帮助下可以快速生成对应的C++文件,节省大量开发时间。
2.4 本章小结
本章介绍了本系统开发过程的所需要的技术,简单分析了C++和Lua语言在本系统中的优缺点,最后介绍了C++与Lua交互所需要的tolua++技术,以及二者进行交互后的在系统开发、理解和维护中的优势。
第3章 系统分析
第3章 系统分析
在以前,棋牌游戏都是大家茶余饭后三五成群聚在一起的消磨时间的方式,而如今随着信息技术的飞速发展,网络已经成为人们生活中不可或缺的重要组成部分。所以为了顺应时代的发展,棋牌游戏也需要走进网络,这样才能更方便的走进人们的生活。网络棋牌游戏的开发主要是为了丰富人们的日常生活,缩短了大家娱乐时存在的时间和空间上的距离。
3.1 总体需求分析
网络棋牌游戏登陆界面和大厅是用户进入游戏必须经过的中间过程,首先用户必须先通过登陆界面进行账号密码的匹配验证,只有验证成功以后才能进入到游戏大厅界面,游戏大厅内的布局尤为重要,不仅要求简单明了,还需要展示尽可能多的有许多游戏和系统的信息给用户。
游戏登陆窗口以及大厅界面是系统内最直接与用户进行交互的部分。随着信息的发展与软件应用的普及,大家对于软件的要求也在逐步提高,客户并不会仅仅考虑一款软件的实用性,对于软件界面给人的视觉感受,客户要求也在提高。使得软件并不仅仅有操作上的便捷,同时兼具视觉上的享受。任何一款软件如果失去了美观的界面,创新性、操作感即使再好也难以得到用户的垂青。任何一款软件的成功都是在界面、操作所有方面都具有吸引力,因此界面[8]设计一定会占据成功因素的很大一部分比例。
本系统设计重点:
美观:如果把软件和人做比较,那么软件的界面便相当于人的外表与气质,因此软件界面的美观程度将直接影响用户对于软件的第一印象,美观的界面对于减少客户流失起到至关重要的作用。
布局合理:软件所有功能菜单的布局,按键的位置大小,都必须严格考虑其是否符合多数用户的操作习惯。如果功能按键布置不合理将直接影响用户的操作体验,使用户产生厌烦心理。
操作简洁:作为棋牌游戏的登陆与大厅部分本身并不需要太多的操作[9],唯一的要求就是操作简洁,系统各部分之间的链接恰当,毕竟作为棋牌游戏,需要面向的是所有年龄段的用户,对于一些上了年纪的用户来说,太复杂的界面会带给其来诸多不便,影响游戏心情。
3.2 系统性能分析
网络棋牌游戏为了丰富用户的生活、吸引用户便需要在游戏本身外引入很多辅助的系统,例如包含有经验等级、昵称、头像的人物信息系统等等。因此根据工作流程和实际的需求,把本课题分为以下几个模块:
游戏登陆模块:用户输入正确的账号密码与后台数据进行比较,账号密码匹 配正确则进入游戏大厅界面,否则系统提示“密码错误”等提示。
大厅用户信息显示模块:此模块用于展示用户的头像和等级,另外包含有背包、人物信息、好友和任务等按钮,点击相应按钮弹出对应的窗口并显示相关信息。
大厅热门游戏模块:大厅热门游戏模块主要用于运营时的宣传,运营商可以把刚刚上线或者玩家较多的游戏放在此处,给用户一个快速进入游戏的渠道,简化用户进入游戏的流程。
大厅普通游戏以及房间模块:此模块是用户进入游戏的通道,进入游戏大厅时,用户可以在此模块选择自己感兴趣的游戏,点击游戏之后,游戏选择界面变为房间选择界面,选择不同房间进入不同的牌桌开始游戏。
大厅辅助系统模块:此模块主要提供给用户一些后台网站的接口,充值等功能都是在后台网站内进行,点击相应功能,会自动打开该后台网站。
大厅通知公告模块:此模块展示游戏相关的最新公告,使用户快速了解最新的优惠活动和及时参加系统组织的限时比赛等等。
总体用例图如图 3-1所示。
图 3-1 总体用例图
3.3 可行性分析
本系统是为了解决传统棋牌游戏过程中玩家时间和空间难以统一的问题。本文接下来将从经济可行性和技术可行性两方面对系统进行分析。
3.3.1 经济可行性
1.支出
(1)基本投资:
硬件:PC机
软件:WindowsXP/7系统、Sqlyog、Scite;
(2)其他一次性支出:主要为软件设计和开发费用,软件开发的过程中,投入软件设计和开发费用包括:购买书籍资金、正版VC++6.0安装盘、需求分析费用。
(3)经常性的支出:主要是服务器费用和软件后期维护费用。软件开发完成并投入后期使用时,对软件产品的后期维护产生的费用。
2.效益
网络棋牌游戏的收益一般都非常可观,一般来说,只要达到1000左右的用户量,项目本身便不会亏本。对于一些推广程度较高,用户量很大的城市来说,一款网络棋牌游戏月入百万千万并非难事。
3.3.2 技术可行性
本系统的底层全部由C++开发,包括有网络部分、可供调用的接口以及前端界面布局规则等等,然后将C++函数接口暴露给lua,前端通过规定好的规则用.cs文件剪切图片并且进行界面布局,并且全部使用易于学习和使用的脚本语言lua语言进行开发。可以大幅度缩短工程周期,使得系统更加灵活简洁,并且利于后期维护。
3.4 本章小结
本章首先进行了系统的总体需求分析,确定了需求重点,然后对本系统的性能进行了分析,最后又从经济可行性和技术可行性两方面分析了项目的可行性。
第4章 系统设计与实现
4.1 系统功能模块设计
由于作者仅对该游戏系统部分功能模块进行设计与实现,即六个功能模块:游戏登陆模块、大厅用户信息显示模块、大厅热门游戏模块、大厅普通游戏房间模块、大厅辅助系统模块、大厅通知公告模块。各个功能模块之间没有必要的联系,它们之间完全可以独立开来。
4.1.1 游戏登陆模块
模块概要设计:
游戏登录模块包括:用户名和密码的录入,用户名和密码的获取,用户名和密码的匹配,错误信息提示。
(1) 用户名和密码的录入:通过编辑框控件输入用户名和密码。
(2)用户名和密码的获取:将控件中的值传递给控件变量。
(3)用户名和密码的匹配:将获取到的用户名和密码到数据库中去匹配,核对。
(4)错误信息提示:根据用户名密码匹配结果和检查控件是否为空给出不同的错误提示信息。当用户名密码不匹配时弹出对话框显示用密码输入错误;当控件中内容为空时提示用户名/密码不能为空。系统登录功能如图 4-1所示。
2. 设计流程和思想:
用户登录模块,首先用户输入用户名和密码,验证用户名或者密码是否为空,如果用户名或密码为空,则提示为空并等待用户填写完整;然后再判断用户名和密码是否与数据库中的记录相匹配。若不匹配则清空控件等待用户再次输入;若匹配成功则进入游戏大厅界面。
图 4-1 用户登录功能图
4.1.2 大厅用户信息显示模块
1.模块概要设计:
用户信息显示模块包括:用户头像信息,用户等级信息,个人信息窗口,好友以及任务窗口。
用户头像信息:主要用于显示用户系统默认或者的自己上传的头像。
用户等级信息:通过经验值进行等级的判断,然后显示登记信息。
个人信息窗口:展示个人的所有信息,经验,账户金币,还包括密码的修改等。
好友窗口:展示用户在系统内添加的好友。
任务窗口:展示用户当前正在进行或者未完成的任务。
信息显示模块功能如图 4-2所示。
设计流程和思想:
用户信息显示模块,当用户登陆成功后,跳转到大厅,系统自动获取用户等级、经验、头像和账户金币等信息,头像、等级信息以及账号金币会直接显示在游戏大厅界面,同时头像旁边会有人物信息、背包、好友和任务按钮,点击之后会弹出相应窗口。
图 4-2 信息显示模块功能图
4.1.3 大厅热门游戏模块
1.模块概要设计:
热门游戏模块主要提供进入热门游戏的通道,可以缩短查找游戏的的过程。
2.设计流程和思想:
考虑到任何游戏平台都会存在需要重点推出的游戏或者用户量最多可以带来最大收益的游戏类别,本模块主要提供热门游戏的按钮,使得用户在游戏大厅内可以一目了然的了解当前最火热的游戏。
4.1.4 大厅普通游戏房间模块
1.模块概要设计:
此模块是整个游戏系统的核心,系统捏所有种类的游戏以及每个游戏内的房间信息都在这里显示,供用户选择。
2.设计流程和思想:
本模块分为两层并且包含“返回”、“下一页”和“上一页”三个按钮,第一层为游戏层,游戏层会直接显示在游戏大厅内供用户选择,此时“返回”按钮状态为不可点击,点击具体游戏后会进入下一层:下一层为房间层,这一层显示时会覆盖掉游戏层,同时“返回”按钮变为可点击状态,此时点击房间会直接进入游戏,点击“返回”按钮则返回游戏层。此外,每页显示的游戏和房间的最大个数为9个,当游戏或者房间个数超过9个的时候,会自动分为两页,同时“下一页”按钮变为可点击状态,进入下一页后,“上一页”按钮变为可点击状态,点击则进入上一页。
4.1.5 大厅辅助系统模块
1.模块设计概要:
此模块主要提供几个按钮,包括游戏大厅、比赛详情、我要充值、元宝换金币和道具商城。点击之后会进入相应的辅助系统。
游戏大厅:即大厅初始界面,展示游戏信息。 比赛详情:用来展示系统不定期举行的各类比赛。
我要充值:此功能由系统后台网站提供,游戏客户端仅仅提供网站链接。 元宝换金币:此功能由系统后台网站提供,游戏客户端仅仅提供网站链接。 道具商城:此功能由系统后台网站提供,游戏客户端仅仅提供网站链接。 2.设计流程和思想:
本模块仅仅是在大厅界面提供几个按钮,点击游戏大厅后,界面会回到游戏列表;点击比赛详情,界面会显示系统内最新的比赛信息;点击我要充值、元宝换金币、道具商城按钮,则会自动打开游戏后台网站。 4.1.6 大厅通知公告模块
1.模块设计概要:
此模块主要用于向用户展示游戏平台的相关通知及、常维护的公告以及活动信息,使用户第一时间掌握游戏平台动态。
2.设计流程和思想:
通知公告部分调用C++底层封装好的函数,打开后台网站链接,显示网站内通知公告内容;最新活动则是通过定期更改图片来展示给用户。
4.2 数据库设计
本课题在整体系统中仅仅占一部分,针对本系统的用户登录部分,使用SQLyog进行数据库搭建。
用户账户信息表主要包括账号和密码,表的基本情况如表 4-1所示。
表 4-1 用户登录表
字段名 Account Password
描述 用户账号 用户密码
数据类型 Char Char
数据长度 20 20
11
NULL Primarykey N N
Y N
表的具体实现情况如图 4-3。
图 4-3 账户信息数据设计图
4.3 系统的实现
本系统底层函数全部由C++封装,在具体开发时分为两部分:界面布局设计,功能的代码实现。具体开发步骤如流程图 4-4所示。 4.3.1 界面布局设计
本系统界面布局规则由c++[10]在底层规定,通过 .cs文件进行图片分割和页面布局。 首先,美术工作人员提供提供设计好的大厅整体效果拆分图,如图 4-5所示。然后通过.cs文件将完整大图中的所有资源按照像素位置拆分为一个个独立的部分。以“返回”按钮为例,代码实现如下:
Skin = "Lobby_Go_Back" //返回 {
Texture = "ui/boke/skin/lobby1.opf" Face = "Button: Enabled" { }
12
Position = 261 848 Size = 68 27 Border = 0
}
Face = "Button: Highlighted" { }
Face = "Button: Pressed" { }
Face = "Button: Disabled" { }
Position = 471 848 Size = 68 27 Border = 0 Position = 401 848 Size = 68 27 Border = 0 Position = 331 848 Size = 68 27 Border = 0
具体代码含义解释:
Skin = "Lobby_Go_Back" :是对于整个“返回”按钮的定义,使得在进行布局的时候可以轻松找到该按钮。
Texture = "ui/boke/skin/lobby1.opf" :是找到所需要的在目录为“ui/boke/skin”内的名字为“lobby1”图片资源。
Face = "Button: xxxx" :这是按钮不同状态的图片定义,"Button: Enabled"为按钮正常情况的状态图片,"Button: Highlighted"为鼠标移动到该按钮上面时的状态图片,Face = "Button: Pressed"为点击按钮之后的状态图片,"Button: Disabled"为按钮不可点击时的状态图片。Face内Position为拆分图片左上角的X轴和Y轴像素位置,Size为剪切图片资源的长和宽的像素大小,Border则表示去掉图片的边缘部分。
当所有图片资源全部剪切分割完毕之后,便开始通过.cs文件进行界面的整体布局,以
13
“返回”按钮为例,代码实现如下:
UI {
LoadSkin = "ui/boke/skin/lobby_skin" Layout {
Frame = "Lobby Frame" {
Frame = "Game Frame" {
Left = 0.0 241.000000 Right = 0.0 781.000000 Top = 0.0 144.000000
14
Left = 0.000000 0.000000 Right = 1.000000 0.000000 Top = 0.000000 0.000000 Bottom = 1.000000 0.000000 Alpha = 1.000000 Skin = "operate"
Color = 1.000000 1.000000 1.000000 Font = "Global 15" Shadow = false Alignment = "Center" Resizeable = false Moveable = false Receives Events = true Receives Bound = false Layer = 0
Bottom = 0.0 617.000000 Alpha = 1.000000 Receives Events = true Layer = 0
}
}
}
}
Button = "Lobby_Go_Back Button" //返回 { }
Left = 0.0 0.000000 Right = 0.0 68.000000 Top = 0.0 4.000000 Bottom = 0.0 31.000000 Alpha = 1.000000 Skin = "Lobby_Go_Back" State = "Enabled"
Animation Time = 0.000000 Receives Events = true Layer = 0
主要代码含义解释:
LoadSkin = "ui/boke/skin/lobby_skin" :载入路径为“ui/boke/skin”的名为lobby_skin.cs的配置文件。
Left、Right、Top、Bottom :内部两个参数分别表示该Frame或者Button相对于父亲模块的位置和相对位移。其中位置和位移可以使用比例或者像素两种表示方法。
Alpha :表示该对象初始状态是否显示,参数为1表示可见,参数为0表示隐藏。 Skin :表示该对象使用的图片资源在图片分割配置文件内的名称。 Color :表示该图片的颜色,可以通过参数进行控制。
15
Font :表示该对象内的字体及大小。
Alignment :表示该对象的对齐方式,参数可以为“Left”、“Right”和“Center”。
Moveable :表示该对象是否可以被鼠标拖动,参数为“True”或“False”。
Receives Events :表示该对象是否允许接受鼠标点击,参数为“True”或“False”。
Layer :表示该对象所处的层级,参数较大的显示在前面。
Button = "Lobby_Go_Back Button" :表示该对象的属性为Button按钮。
State :表示该对象的初始状态。
Animation Time :表示该对象鼠标点击的响应时间。
图 4-4 开发流程图
图 4-5 大厅整体效果拆分图
4.3.2 主要代码实现
页面布局完成之后,便需要编写代码进行具体功能的实现。下面介绍一些大厅内部功能的主要代码实现。
1. 大厅内按钮响应
首先在初始化内通过调用封装好的函数找到之前已经完成的布局文件,代码如下: local layoutdir = base.ClientHelp.GetUILayoutDir();
_ui:LoadLayout(layoutdir .. "Lobby_Layout");
之后再通过代码找到页面布局的每一部分,从而通过代码控制该部分的功能以及是否显示,以返回按钮代码为例:
GoBackBt = _ui:FindButton(mainframe, "Lobby_Go_Back Button");
//首先在布局文件中中找到“返回”按钮GoBackBt
if(GoBackBt ~= nil)then end
//给GoBackBt添加响应函数OnGoBackButton函数
之后在OnGoBackButton函数内添加具体我们想实现的功能,这样点击“返回”按钮之后
ui.setListener(GoBackBt, ui.actions.key, OnGoBackButton);
便会响应我们编辑好的OnGoBackButton函数内的事件。
热门游戏普通游戏区分
在游戏表内每个普通游戏和热门游戏都会有一个RootID,其中所有普通游戏的RootID的值都是小于10000,而热门游戏的值则大于10000,这样遍历游戏的时候便可以通过比较RootID的值将普通游戏和热门游戏分开。代码实现如下:
for _,_entery in base.ipairs(gameshowlist) do
end
游戏及房间代码设计
游戏大厅内游戏和房间设计相同,这里以游戏为例。游戏每个页面最多显9个,点击每个游戏进入相应的游戏房间。代码控制时需要设置每个游戏的位置,并且要给每个游戏添加按钮的属性。代码设计如下:
for i = 1, 9 do
ui.setListener( button, ui.actions.key, OnItem(i) ); button:SetAlpha(1.0); local index = (i-1)%3; local index_h = math.floor((i-1)/3); local region = button:GetRegion(); local bottom = region:GetRelativeBottom().mRelative; region:SetLeft(region:GetRelativeLeft().mRelative, region:GetRelativeLeft().mAbsolute local button = _ui:AddButton(gametreeFrame, string.format("itme%d", i)); _ui:CopyUILayout(button, model_item); if(_entery:GetRootID()>=10000)then base.table.insert(hotgamelist, _entery); else end base.table.insert(normalgamelist, _entery); + index*(10+174));
region:SetRight(region:GetRelativeRight().mRelative,
region:GetRelativeRight().mAbsolute + index*(10+174));
region:SetTop(region:GetRelativeTop().mRelative, region:GetRelativeTop().mAbsolute + index_h*(6+141));
region:SetBottom(region:GetRelativeBottom().mRelative,
region:GetRelativeBottom().mAbsolute + index_h*(6+141));
local itemcontent = {}; itemcontent.Item = button; table.insert(itemlist, itemcontent); end
4.4 本章小结
本章主要首先对系统的各个功能模块进行了具体的设计,然后对所需要的数据库进行了分析设计,最后从系统界面布局和主要代码实现两个方面详细介绍了系统的具体实现过程。
第5章 系统测试
5.1 系统功能测试
黑盒测试也叫做功能测试,它是用来检测每个功能是否都能正常使用的一种测试方法
[11]。黑盒测试过程中并不考虑软件的内部逻辑结构,该测试主要是针对软件界面感受以及软件功能进行测试。
黑盒测试的时候