- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析课程论文
论文名称 24 计算问题
学 院 教育信息技术学院
学生姓名 莫怡琳、阮淑贞、陈鑫奕
学 号 2014210972、2014210970、2014210946
2017 年 1 月 3 日
目录
24 计算问题
一、问题描述
24 点游戏是指任意输入 1-9 的四个数,通过加减乘除四则运算连接,使得计算结果为
24,而使用计算机模拟该游戏,就是让程序随机产生数字,由用户组合成表达式,交给程序
进行结果判断。
二、前端分析
1、功能需求
(1)模式选择:根据玩家人数选择单人模式或者双人模式
(2 )用户登录/注册:允许用户登录、注册,确保账号安全
(3 )随机:自动产生随机数,供用户选择
(4 )验证:对用户输入的表达式进行判断
(5 )计算:对随机产生的数字求解,得出符合要求的表达式
(6 )记录:能够根据玩家的输赢情况,实时更新玩家等级
(7 )存储:存储并动态更新用户的相关信息,包括用户名、密码、游戏等级
2 、工具选择
工具:DW,语言:php,用本机 localhost 做服务器和测试端
(1)交互性强,用户能够通过鼠标、键盘等输入与网页进行交互
(2 )界面编写容易,div+css 可以实现网页布局
(3 )数据存储读取方便,能够实时与AppServ 自带的数据库链接
(4 )24 点游戏本身适合做成网页版
1
三、详细设计及说明
1、模式选择:选择不同的模式将会跳转至不同游戏界面
单人模式
双人模式
帮助:游戏规则:选择单人模式将独自完成任务,每完成一关将会上升一个等级, 回答错误
将会下降一个等级;选择双人模式胜利者将上升一个等级,失败者将下降一个等级。
2、登录/注册界面
登录:与数据库连接,验证用户名密码是否一致,用 post 方法获取表单提交的数据,将数
据库的信息与之匹配,登录成功则跳转至游戏界面,并为用户创建 session ,保存用户名与
等级;否则提示用户名密码错误,重新回到登录界面。
注册:用户名已经存在的不能被注册,保证用户名的唯一,新注册的用户等级为 0 。
2
3、单人模式游戏界面
用户信息:利用登陆界面传递的 session 获取用户名和密码
开始游戏:产生 4 个随机数
新一轮:即下一关,页面刷新,用户等级实施更新
提交:对用户输入的表达式进行验证,给出“回答正确”或者“回答错误”的结果,实施更
新用户等级
退出:返回模式选择界面
无解:计算是否有符合 24 要求的表达式,对用户的答案判断,如果存在符合的表达式,则
会显示表达式的个数和其中一个解,并实施更新用户等级
3
4 、双人模式游戏界面
用户信息:利用登陆界面传递的 session 获取用户名和密码
开始游戏:产生 4 个随机数
新一轮:即下一关,页面刷新,用户等级实施更新
提交:对用户输入的表达式进行验证,给出“回答正确”或者“回答错误”的结果,实施更
新用户等级
退出:返回模式选择界面
无解:计算是否有符合 24 要求的表达式,对用户的答案判断,如果存在符合的表达式,则
会显示表达式的个数和其中一个解,并实施更新用户等级
抢答:每个用户分别有抢答按钮,当一个用户抢答之后,通过 cookie 将 js 中的变量传递给
php,所有的输入都被看成是该用户的输入,因此达到了区分用户的目的
5、数据库存储
4
四、算法设计思想
核心算法
1、验证算法:
数据结构:堆栈
算法时间复杂度:O (n)
(1)将表达式分为数字栈和符号栈两部分存储,并且以#作为开始符和结束符
(2 )定义优先级关系表
(3 )根据表决定运算顺序
如果即将压栈的符号的优先级小于栈顶的符号,则弹出数字栈栈顶的两个数字进行运算,否
则压入符号栈,直到完成表达式的计算。例如:
5
(4 )计算表达式的值
文档评论(0)