WEB平台的背单词应用设计与实现.docx
- 文档编号:25433022
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:26
- 大小:4.27MB
WEB平台的背单词应用设计与实现.docx
《WEB平台的背单词应用设计与实现.docx》由会员分享,可在线阅读,更多相关《WEB平台的背单词应用设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。
WEB平台的背单词应用设计与实现
摘要
由于网络相关技术的快速发展,现代人对于英语的学习也开始发生了很大的改变,比如六级单词冲关等,非常成功的实现了使用网络工具帮助用户进行英语学习。
本论文在解析其他单词平台的基础上,自主开发了一款背诵单词的软件。
从编码测试,架构设计,需求分析等等方面进行了细致的介绍。
该软件包括服务器后期平台架构的组成,相应客户端页面实现。
该应用已在局部范围内上线运营,本应用与相应背诵单词软件相比较而言,还有很多需要完善的地方。
关键词:
背单词,网络背单词,单词学习
ABSTRACT
Duetotherapiddevelopmentofnetwork-relatedtechnology,modernpeoplehavebeguntolearntheEnglishlanguagehasundergonegreatchanges,suchassixwordswashedoff,etc.,toachieveaverysuccessfultooltohelpusersusethenetworkforEnglishlearning.
Thispaper,basedonanalyticalplatformsotherwords,recitethewordsofaself-developedsoftware.Carriedoutadetailedpresentationfromtheencodingtests,architecturedesign,requirementsanalysis,etc.,.Thecompositionofthelatterpartofthesoftware,includingserverplatformarchitecture,thecorrespondingclientpageimplementation.
Theapplicationison-lineoperationsinthelocalarea,theapplicationandthecorrespondingsoftwarecomparisontorecitethewords,therearemanyneedstobeperfected.
Keywords:
Wordback,thenetworkbackword,wordlearning
总结
展望
1绪论
1.1课题背景及意义
一个专用来解决英语学习者在学习英语的过程中遇到的记忆单词困难的背诵单词WEB平台。
软件采用循环记忆以及图片声乐配合记忆的方法,再结合艾宾浩斯遗忘曲线规律,极大的客服了英语学习过程中的枯燥问题,帮助英语学习者快速的进入到一个相应的学习状态中去,以期形成永久记忆。
别致的图文声三位一体记忆单词系统,新颖独特的图片单词群记忆功能,对艾宾浩斯遗忘曲线原理的完美理解与运用,用好本平台将会极大提升英语学习者在学习过程中的效率。
1.2国内外研究状况
1.1.1WEB2.0对英语教育及学习的影响
伴随着WEB2.0时代的到来,人们学习英语的习惯也悄然发生着变革。
人们学习英语从以前的仅仅在网络上浏览相关信息资料进一步发展到通过自己建立相应网站帮助自己或者他人学习外语,逐渐使用RSS对应技术来下载订阅必要的外语资料在这些地方WEB2.0发挥了巨大的辅助学习作用。
近些年我国教育部向全国不同高校推荐了几套大学英语教材,里面都包含有我们将要体积的网络在线学习系统,很多都是用了有“全天候的开放式的教育辅导资料”+“网络自测题库”+“主流的学习管理系统”+“学生与老师的互动”等等。
为学生的进一步发展创造了条件。
在WEB2.0时代主流思想和相应理论的指引下学习WEB2.0,运用了如RSS,SNS,WIKI,BLOG等媒介工具,来进行学习活动。
像英语这种语言,其信息传播功能展示了其与网络的强大结合点,学友们建立的英文网站,以多形式展现了丰富全面的英语百科知识,以全民性的环境来促进大家在日常生活中对英语的学习,以师生互动网络互动的方式提高传播率,这种帮助英语学习者学习,主动提高英语学习过程中的积极性,展示出这种新的英语学习模式的强大优势。
2.1.1目前的记忆单词应用:
托词
新形式的网络教育,产生与互联网出现以后,高速的网络联通状态使传统的教育形态发生了改变。
大家接受外语教育的形式在这以后极大的改变,这些探索和尝试的掘金者,为新兴的服务产业带来了新的发展机遇。
托词是一款专为英语薄弱者提供词汇突破的一种服务,同时它也是一款用于背单词的软件,它包括两个网页以及客户端两个方面,依据客户端收集的用户记忆单词反应速度来更好的评估对单词的记忆掌握程度。
托词在一些细微的应用上采用了一些心理学原理,不仅设置了冲关倒计时,还只计算用户在托词上的学习时间而不去计算他的在线时间。
跟以往的背单词应用相比,托词拥有自己独立的算法,它不仅全方位记录了每位用户在学习过程中的处理事件行为,从而个性化的为每位用户提供他继续的服务需求。
1.2.3现在背单词应用的特点
现在的背单词应用多了很多互动共享的功能,例如,不少的背单词应用都具有好友排行榜以及单词本功能;在学习过程中为使用者提供相应的视频,图片,以及配套的解释资料,在线管理者也可以根据广大客户的使用情况才用特点算法进行具体的分析,并对使用者提供适用建议与使用帮助。
1.3课题研究内容
1.3.1研究目标
利用现有的网络在线背诵单词应用的基础之上,独立研发一款与众不同的网络背诵单词应用。
1.3.2任务
WEB平台下的网络应用应具有的功能:
在线实时记录用户背诵单词情况。
创造竞争压力,制定用户学习排行榜。
用户生词本用来记录用户的学习情况。
系统与用户交互,自行选择需要学习的板块。
1.3.3应用的开发环境
操作系统:
Windows7及以上;
项目框架:
JDBC+Struts2+DWR;
编程语言:
JAVA1.6;
集成环境:
Eclipse+Tomcat6.0;
1.3.4核心技术问题
1背诵单词的过程中选择怎样的模块策略。
2实时性与交互性,用户需实时从服务器读取单词数据,用户过多可能导致服务器崩溃。
3算法对用户背诵单词状况的分析。
1.4论文框架结构
论文第一章是绪论部分,说明本文需要阐释的课题,其中包括论文课题背景及来源,还有论文中设计的一些概念问题和各国研究状况对比。
本文第二章将要进行应用的需求分析。
第二章颇为详尽的阐述了开发此系统的所有要求,例如有非功能性要求。
用户的各种需求都被需求用例图详尽的阐述,比如背诵单词,学习单词发音等。
兼容性以及稳定性是非功能性需求非常看重的。
本文的第三章隆重介绍了课题所涉及到的相关技术及原理。
包括有JAVA2EE框架和Struts2框架等。
本文的第四章用来做总体系统设计。
着重讲了系统总体逻辑,之后阐述了整个系统的设计功能,包括数据库的搭建,整体架构的铺设。
本文的第五章是用来详细的阐述整个系统。
系统的三个方面,包括生词本的记录操作,测试新单词,记忆单词等等都做了十分详尽的说明。
之后又详细的介绍了系统采用的算法策略;如安全选择策略,实时性策略,同步策略,单词切换策略等等。
本文的第六章用来进行了系统的测评。
此章中展示了应用的测试用例,最后进行应用的总体测评。
2需求分析
2.1系统建设总体目标
开发此应用依据<<英语等级考试-词汇大冲关>>的教材,这里面的单词按照<<词汇大冲关>>的分类,分成了30关,相当于每天一关。
本WEB应用会保存用户背诵单词情况。
本应用不支持注册功能,用户能够自行选择已解锁的一关背诵单词,如果之前一关的单词测试没有通过则不能到下一关去,突出闯关的特点。
2.2功能性需求
如图2.1所示。
1`用户可以依据此背诵单词的APP:
(1)单词测评。
词库里的单词可以依据用户自己的意愿来测试。
(2)词库选择。
词库里的单词按照一定数量进行分组,用户选择相应的关卡来背诵单词。
(3)单词的背诵。
选择了单词关卡后,用户才可以按照关卡里的单词进行背诵。
2管理单词本的一些需求:
(1)检查生词本。
可以根据自己的需要来检查生词本。
(2)单词删除。
可以自由删除掉生词本里已掌握的单词。
(3)添加生词。
在本APP的应用中,遇到不会的单词,可以随时添加到生词本。
3本应用的功能:
(1)用户必须登录APP,才能使用本软件背诵单词等。
(2)不同的用户可以通过排行榜参与竞争,参与排名,可以在排行榜上查到自己的资料。
(3)用户可以通过网站分享自己的学习心得。
4其他功能:
(1)单词读音初始是默认的。
用户按照自己的意愿来设置声音的开关。
(2)系统自动统计用户对单词的背诵情况。
2.3非功能性需求
1.稳定性相关:
系统在长时间较多用户使用的情况下,不会出现系统无故崩溃等现象,日常操作不出现无故错误。
2.兼容性相关:
本软件支持多种类型的浏览器:
360安全浏览器,FireFox,Safari。
3.易掌握性相关:
用户上手简单,操作起来非常容易。
4.性能相关:
系统对于用户背诵单词的响应时间处于可接受的范围。
2.4小结
本章阐述了系统功能性要求与非功能性要求的方方面面。
例如一些排行榜,生词本,背诵统计等等。
而非功能性要求考虑到了稳定性与兼容性等方面。
2相关原理技术
图2基本框架图
整个游戏三个模块:
单挑模块,辩论模块,作战模块。
由于时间有限以及水平的限制,我们目前只是实现了前两个模块的演示版本。
在游戏中,每个玩家可以申请一个账号,每个账号代表一个玩家。
在游戏中玩家可以根据自己的喜好选择游戏模式,单挑模块的游戏模式是两个玩家之间的单挑,每个玩家出三个武将卡(根据游戏不断搜集),然后双方按照一定的规则进行,当对方的三个武将全部死亡的时候那一方就算输。
辩论模块则是双方每人6张牌,根据一定的规则进行辩论驳之后,谁先出完手中的牌谁就算获胜。
单兵作战模块则是根据最终粮草值的多少决定胜负。
玩家随着通过不断的游戏可以提高自己的级别,从而换取更多的武将卡,进而获得更多的用户体验。
而整个游戏最重要的却是游戏的网络模块和社交模块。
由于整个游戏的社交性,使得这款游戏的传播与发展十分迅速。
如果有一个玩家玩这个游戏并且获得了很好的用户体验,他就会把这个游戏介绍给他的其他朋友并且朋友之间可以在游戏中互相交流。
在游戏的技术上,首先是Android游戏框架,我们整个游戏是基于Android平台开发的,所以说使用到了Android的游戏开发的相关知识,游戏的界面形成是利用的Android中的surfaceview类,不同界面之间传输消息是使用的Handler机制,Handler机制是Android中特有的用于不同界面之间进行消息的传输。
其次,在编写第二个辩论模块的时候我们使用了rokon引擎。
rokon是一款专门用于开发Android平台下的手机游戏的引擎,它是基于openGLES进行开发的游戏引擎,可以实现很多复杂的物理效果。
在辩论模块的游戏中主要使用了Rokon的基本框架RokonActivity取代了Android里面的Activity,由于Rokon功能比较强大,所以很多工作实现起来相比较于在Android上直接实现要简单许多。
在Rokon中大量的使用了精灵(sprite)的概念,游戏中每一幅图都是一个精灵。
很多Android中需要创建线程去完成的工作在使用了rokon引擎之后也比较容易完成,因为许多相对底层的工作都已经被事先做好,开发者只要直接调用就可以。
最后在游戏的网络模块使用了客户端/服务器的架构,即c/s架构,实现了不同玩家通过网络进行相互对战。
这种客户端/服务器的架构是最传统并且使用度最高的一种网络模式。
目前市面上的网络游戏除了网页游戏之外大都使用这种架构。
该架构主要是基于socket链接实现的,通过socket将客户端与服务器实现一个链接,双方可以互相发送信息,并将处理的结果反馈回去。
比如,当双方的牌比较完之后,会将比较结果反馈给服务器,服务器经过信息处理之后,将结果在返回给玩家,玩家就可以看到究竟是谁输谁赢。
游戏最初的设想是要加上社交模块的,玩家可以在游戏之中交朋友并且可以与朋友进行交流或者交换彼此的卡片。
加上社交功能之后游戏更加完善,可是由于水平的限制,目前还没有实现这一功能,在将来我们会把这个游戏做的更好更完善。
这就是整个游戏大体的框架。
4系统设计
4.1功能模块设置
整个游戏主要分为三个模块:
单挑模块,辩论模块,网络连接。
单挑模块是每个玩家的生命值都为5,并且每个武将手中有五张牌,双方按照一定的规则(见策划案)进行游戏,最终生命值为0的玩家输掉比赛。
辩论模块则是每个玩家手中都有6张牌,双方按照辩论驳等一系列规则进行游戏,先将手中的牌发完的一方获得比赛的胜利。
网络连接是实现不同玩家之间的网络对战,玩家通过选择网络对战模式可以和其他玩家进行PK。
该游戏的网络连接使用的是c/s架构,即客户端/服务器架构,主要用到的知识是socket编程。
这三个模块之外还有两个模块,是作战模块和社交模块。
作战模块是区别于单挑模块和辩论模块的一种新的玩法,主要模拟的是战场上的带兵打仗,在一定的时间段之内,最后谁的兵力多,粮草值丰富,谁就获胜。
社交模块则是为了突出游戏的社交性,通过玩家之间的交流可以激发玩家游戏的兴趣,玩家之间可以交换已经拥有的卡片,并且使得游戏传播速度更快。
4.2游戏UI界面的设计
UI的意思是用户界面(userinterface),就是游戏与玩家交互的界面。
优秀的用户界面可以增强用户体验,使得玩家获得身临其境的紧张感,带入感强烈。
而游戏中UI的设计除了美工之外,更加离不开内部的程序逻辑。
只有内部的逻辑正确,游戏的画面才能正确的布局,每一张图片出现在应该出现的位置,这些工作都需要游戏逻辑去完成,而由于游戏中画面繁多,游戏状态不停改变,并且游戏的界面不停地转变。
因此逻辑的实现是一项比较难完成的工作。
在《三国志》这个游戏的单挑模块,我们使用了Android中的一个SurfaceView类,surfaceView类主要有surfaceChanged,surfaceCreated,surfaceDestroyed三个方法组成。
surfaceHolder类的一个起到控制作用的类,它主要对surfaceview的大小,格式等信息进行控制,并且主要用于监听SurfaceView的状态。
该类主要保存的是view的像素数据,Android系统通过surfaceHolder与surfaceview打交道。
surfaceHolder对其进行监听的接口是Callback接口。
当创建一个surfaceview时需要响应三个方法,这三个方法分别是:
publicvoidsurfaceCreated(SurfaceHolderholder);
publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,intheight);
publicvoidsurfaceDestroyed(SurfaceHolderholder);
当程序执行的时候,首先调用的是一个surfaceCreated方法,该方法的作用就是创建一个surfaceview界面,一般的程序会在重写这个方法时开启一个线程,从而让游戏进入开始界面,并且保证线程不断地执行,在玩家进行其他操作之前整个游戏一直保存在开始界面,直到玩家碰到某个按钮后,程序会产生一个碰撞检测,那时游戏才会从一个Surfaceview变换到另一个surfaceview,并且重新调用一个surfaceCreated方法。
在游戏中刚进入游戏时是一个开始界面,由玩家自己选择会进行哪个操作。
如果玩家选择了单挑模块,程序会自动进入游戏,如果玩家选择了辩论模块,游戏会进入另一个模块,整个游戏就是采用这种方式实现的。
surfaceChanged方法是在SurfaceView的状态发生改变时才会调用的。
比如,当游戏进入暂停状态时就是一种游戏状态的转变,此时游戏进入了暂停状态,这时候操作系统就会调用该方法进行相应的操作,当暂停结束之后,程序会再一次的回到游戏之中,这样,就不会影响整个游戏的进程。
surfaceDestroyed则是在游戏界面转换到另一个界面时调用的,他的作用是当一个界面被关闭或者是从一个界面转移到另一个界面时,会自动调用这个方法,将本界面占用的内存资源全部删除,并且将整个游戏之前开启但是现在不再需要的线程全部关闭。
这样就可以节省很多内存空间,使得游戏和其他程序运行更加流畅。
在安卓游戏开发中,这三个方法不同的变换使用,就构成了整个游戏的基础架构,在游戏运行时,三个方法不断地被调用,整个游戏就顺畅的运行,无论是暂停,开始还是结束都十分顺畅,这样循环往复,就构成了一个游戏的整体。
在我们《三国志》这个游戏中,当我们需要进入某个游戏模块时,会相应的调用不同的SurfaceView里面的方法,当进入单挑模块时,代表单挑模块的SurfaceView就是会进行这样的改变。
当游戏从开始界面跳转到单挑界面时,代表开始界面的SurfaceView就会进入调用surfaceDestroyed方法关掉已经开启的线程和占用的内存资源,然后代表单挑模块的SurfaceView就会调用其中的surfaceCreated方法,创建一个新的游戏界面,这样玩家就进入了单挑界面。
整个游戏的大体工作流程就是这样的,当关闭整个游戏的时候,会自动调用surfaceDestroyed,从而销毁整个程序所占的内存空间,这样就避免了资源的浪费,不会影响其他软件的运行。
打开游戏之后,首先进入的是MenuView界面,即菜单界面。
在MenuView的surfaceCreated中启动一个menuThread线程,该线程的作用是调用draw方法不断地绘制游戏开始界面,开始界面上包含很多按钮,其中最上面的五个分别是:
演武场,辩论台,练兵场,征兵所,寄售行。
这五个按钮是游戏的核心功能,前三个就代表着游戏的两个模块:
单挑模块和辩论模块。
左边的按钮则是代表玩家的一些基本信息,包括玩家的等级,装备以及手中的卡牌数等。
右边则是涉及到一些网络的按钮。
这些按钮每一个都对应着一个碰撞检测,每一次当玩家按下去的时候都会产生相应的调用,并且进入另一个界面。
该界面呈现在屏幕上便是开始界面,在开始界面上有一个onTouch函数,该函数的作用是实现手机触屏,当点到演武场按钮时,就进入单挑模块,当点到辩论台按钮时就进入辩论模块。
如图3:
图3游戏的开始界面
进入单挑模块之后,会出现以下布局:
上方是吕布头像,并且有五张从大到小排列的牌。
下方是赵云头像,也有从大到小顺序排列的五张牌。
右下角是出牌,委任,强退三个按钮。
中间的部分是出牌区,电脑和玩家发出的牌都显示在出牌区中。
该界面的显示主要由gameView实现。
gameView中的draw方法主要完成背景的绘制以及玩家手中牌的绘制,武将(赵云,吕布)头像的绘制。
onTouch方法主要是实现牌的跳出,玩家点一下纸牌,被点中的牌就跳出来。
其中用到的方法主要是改变坐标值,点击一张纸牌,纸牌的纵坐标y就会减去15,体现在屏幕上就是纸牌跳出来。
当第二次点击的时候,纸牌的坐标会加上15,纸牌又回到原来的位置。
如此循环,实现了选择纸牌的方法。
当点击出牌的时候,会调用Desk类中的onTouch方法,被选中的牌的坐标值会改变,当下一次程序再执行绘制方法draw的时候,就会将被选中的纸牌绘制在出牌区。
这样就实现了出牌的方法,如图4:
图4玩家出牌图
在经过比较函数之后,会进行玩家生命值的绘制。
生命值的绘制的方法主要是运用两个变量:
blood_pc和blood_npc,两个变量的初始值都是5,每进行一次比较,两个变量的值都会改变。
在绘制的时候根据变量的值绘制不同的血量,当其中一个玩家的血量为0时,(含图)会调用draw方法,绘制单挑胜利或者单挑失败的画面。
当绘制完成之后,游戏会给sanguoActivity这个类通过Handler发送一个消息,告诉该类显示一个新的游戏界面,这样游戏会返回到开始界面。
当玩家再次游戏的时候可以选择相应的界面进行游戏。
单挑模块的作用是一样的,当点击了辩论按钮时,游戏就会自动进入辩论模块,辩论模块中的布局和单挑模块的布局大体一致,只是游戏模式从武将的金戈铁马变成了文官的唇枪舌剑。
效果如图5和6:
图5游戏单挑界面
图6游戏辩论界面
5系统实现
5.1游戏音效光效的实现
游戏的声效和光效对整个游戏的用户体验很重要,因为一个游戏除了优美的界面和正确的逻辑算法之外,光效和音效也是决定一个游戏成功与否的关键。
因为好的光效和音效可以增加玩家的带入感,如果一个游戏在出完牌之后没有任何动作,就会显得没有任何带入感,相反,如果在每张牌出完之后如果出现一道漂亮的刀痕或者火花之类的特效则显得生动许多。
当一方的牌小于对方的时候,如果说只是血量上减少的话,这样效果会很不明显,游戏会很难吸引玩家,如果在输的那一方的头像上画上一个刀疤,再加上一声呻吟的音效。
在一些著名的游戏中光效和声效都起到了显著的作用,例如著名的游戏《魔兽争霸》中各种魔法的特效,刀光剑影以及诡异的音效,真的像是将玩家带入了魔兽世界中一样。
这样会更加生动,同时也让胜利的一方获得一种优越感,从而更加集中精力的玩游戏。
可见游戏的光效和声效是十分重要的。
如图7:
图7游戏特效
游戏中光效的实现方法是首先创建一个Bitmap[]数组,动画特效的实现是连续的播放几张相似却不同的画面,从而产生动画的效果,在游戏中也是这样。
先将游戏中不同的几帧图片存放在一个数组中,然后当游戏触发一个动画特效(发出一套牌)时,程序会相隔一段时间然后一帧帧的绘制出每一张图片,这样就会产生一个动画的效果。
比如游戏中当赵云发出一套牌的时候,程序会调用虎威这个Bitamp数组,然后就会产生一个动画。
如图8:
图8游戏光效效果图
5.2游戏部分算法实现
游戏的算法是游戏的核心部分。
只有正确的算法才能支撑整个游戏的算法,如果算法不正确,游戏就难以继续运行下去,在这个模块主要是游戏中游戏基本功能的算法实现,也是整个程序运行的基础。
Card类的设计:
Card类的作用是创建card对象,每一个card对象都代表一套牌,游戏中的牌型主要有单牌(即一张牌),同点(两张牌一样,三张牌一样,四张,五张牌一样),顺子(三顺子,四顺子,五顺子)。
在游戏中每一种牌的类型就是一个对象,每当选中要发出的牌并且点击出牌按钮时,就会触发一个碰撞检测,然后程序会自动创建一个card对象。
首先在Card类中编写了一个构造函数:
publicCard(),其中传入方法的参数是pokes数组,该数组主要的作用是记录选中了哪张牌。
还有两个Bitmap对象,其中一个是传入的纸牌背面的图片,另一个则是传入的纸牌正面的对象。
最后一个传入的参数是确定该card对象究竟是玩家手中的card还是电脑手中的card。
该构造函数的作用是初始化Card类中的变量,并且用来创建Card对象。
除了构造函数之外,还有两个paint方法,之所以使用两个paint方法主要是因为在双方发出牌之后有一个比较,用来比较双发发出的牌的数量是否一样。
此时牌应该是反着的,玩家是看不见牌的,此时会调用第一个paint方法进行一次绘制,绘制的是纸牌的背面。
而当比较完双方发出的纸牌的数量且发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WEB 平台 单词 应用 设计 实现