- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析课程论文论文名称 24计算问题 学 院 教育信息技术学院 学生姓名 学 号2017 年 1 月 3日目录一、问题描述1二、前端分析11、功能需求12、工具选择1三、详细设计及说明1四、算法设计思想4核心算法4辅助算法5五、问题及解决6六、总结反思7七、小组分工7八、小组互评7九、编程日记811月29日编程日记812月6日编程日记8 12月7日编程日记9十、源代码924计算问题一、问题描述 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、模式选择:选择不同的模式将会跳转至不同游戏界面单人模式双人模式帮助:游戏规则:选择单人模式将独自完成任务,每完成一关将会上升一个等级,回答错误将会下降一个等级;选择双人模式胜利者将上升一个等级,失败者将下降一个等级。登录/注册界面登录:与数据库连接,验证用户名密码是否一致,用post方法获取表单提交的数据,将数据库的信息与之匹配,登录成功则跳转至游戏界面,并为用户创建session,保存用户名与等级;否则提示用户名密码错误,重新回到登录界面。注册:用户名已经存在的不能被注册,保证用户名的唯一,新注册的用户等级为0。单人模式游戏界面用户信息:利用登陆界面传递的session获取用户名和密码开始游戏:产生4个随机数新一轮:即下一关,页面刷新,用户等级实施更新提交:对用户输入的表达式进行验证,给出“回答正确”或者“回答错误”的结果,实施更新用户等级退出:返回模式选择界面无解:计算是否有符合24要求的表达式,对用户的答案判断,如果存在符合的表达式,则会显示表达式的个数和其中一个解,并实施更新用户等级双人模式游戏界面用户信息:利用登陆界面传递的session获取用户名和密码开始游戏:产生4个随机数新一轮:即下一关,页面刷新,用户等级实施更新提交:对用户输入的表达式进行验证,给出“回答正确”或者“回答错误”的结果,实施更新用户等级退出:返回模式选择界面无解:计算是否有符合24要求的表达式,对用户的答案判断,如果存在符合的表达式,则会显示表达式的个数和其中一个解,并实施更新用户等级抢答:每个用户分别有抢答按钮,当一个用户抢答之后,通过cookie将js中的变量传递给php,所有的输入都被看成是该用户的输入,因此达到了区分用户的目的数据库存储四、算法设计思想核心算法验证算法:数据结构:堆栈算法时间复杂度:O(n)(1)将表达式分为数字栈和符号栈两部分存储,并且以#作为开始符和结束符(2)定义优先级关系表(3)根据表决定运算顺序如果即将压栈的符号的优先级小于栈顶的符号,则弹出数字栈栈顶的两个数字进行运算,否则压入符号栈,直到完成表达式的计算。例如:计算表达式的值运行结果:计算算法:穷举法:嵌套循环操作算法时间复杂度:O(n^3)(1)对运算符号进行编码(2)打乱四个数的顺序(3)计算每一种情况可能出现的运算(两种):两两运算、三个和剩下一个运算(4)对于符合条件的情况输出表达式运行结果:辅助算法随机产生数 自定义“function getRandNum()”产生随机数组的函数,采用“document. getElement- ById(i).value”,通过获取button的id,对它的value值进行赋值,并且通过循环,每产生一个随机数就与之前产生的随机数比较,确保随机数不相同。实施更新用户等级 使用mysql_query(UPDATE )语句与数据库交互,借助于核心算法的判断算法进行相应的加减,同时改变SESSION的值,使之与数据库关联,点击“新一轮”时页面刷新,由于一开始程序就必须显示SESSION,所以就达到了等级的实时更新。五、问题及解决1、变量传递问题:程序大部分是通过触发按钮onclick执行事件,因此事件发生采用的是js函数,但是由于核心算法部分是用php来实现的,所以存在js与p
您可能关注的文档
- 白内障治疗新进展.ppt
- 消毒隔离医学课件.ppt
- 广州信联智通实业股份有限公司日化用品包装容器扩产项目建设项目环境影响报告表.pdf
- 广州信联智通实业股份有限公司研发中心建设项目建设项目环境影响报告表.pdf
- 杭州福膜新材料科技股份有限公司新能源功能性薄膜研发中心建设项目环境影响报告表.pdf
- 泰州经济开发区总部经济园一期新建工程项目环境影响报告表.pdf
- 烤瓷装饰板加工项目环境影响报告表.pdf
- 普祥中医肿瘤医院使用放射性同位素与射线装置项目公示版.pdf
- 沈阳路久沥青新材料科技有限公司项目环境影响报告表.doc
- 南京浦口水务建设集团有限公司浦口区2017年排水管道建设工程项目环境影响报告表.pdf
文档评论(0)