如果我要实现这些功能,我需要学习哪些知识?克服哪些难点?

yahagogo 2010-10-24 07:56:20
Java文字、语音聊天功能我能实现,假设我还想实现以下功能:

A不仅能和B进行语音聊天,而且A可以打开一个文本编辑窗口,在这个文本编辑窗口里,A可以和B可以同时编写一段文字。比如,A在文本编辑窗口写下 public static ,B在另一端几乎能同时看到A写下的 public static,同时,B可以修改这些文字,比如B再写下: void main(String args[]),那么,A也能几乎在同时看到B写下的这段文字。其次的功能是,在这个文本编辑窗口中,A可以用画笔工具对文本进行注释,比如,A在文字下划红线,B也能同时看到。同样,B在文本编辑窗口的空白处画一个圆圈,A也能看到。
其实概括起来就是,A能和B同时处理一段文字,达到协同合作的目的。
然后我的疑问是:如果我要实现这些功能,我还需要学习哪些知识?克服哪些难点?目前我能模仿着别人实现Java多人聊天的功能,利用Socket传输数据等。
不知道我的想法是不是异想天开了,希望得到大家的指点。
还有,自己比较穷,没多少分。全部奉上了。
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
soli11722984 2010-10-25
  • 打赏
  • 举报
回复
怎么说得像多年前的MSN的一个画板的功能呢(现在不知那功能被放到哪去了,反正用的人不多,国内…………)

现在MSN也应该还有的,不过。。。。。。偶也好久没耍过那个了
strustfan 2010-10-25
  • 打赏
  • 举报
回复
局域网聊天器应该可以借鉴一下
yahagogo 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 soli11722984 的回复:]

怎么说得像多年前的MSN的一个画板的功能呢(现在不知那功能被放到哪去了,反正用的人不多,国内…………)

现在MSN也应该还有的,不过。。。。。。偶也好久没耍过那个了
[/Quote]
哦?是吗?Java的实时性是不是很差?
yahagogo 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 strustfan 的回复:]

局域网聊天器应该可以借鉴一下
[/Quote]

嗯。借鉴过了。通过因特网聊天的也实现了。
yahagogo 2010-10-24
  • 打赏
  • 举报
回复
我记得Google Wave也有一个类似的功能。我想知道这是怎么利用Java实现呢?
yahagogo 2010-10-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 syhnyf 的回复:]

要实现你所说的功能的熟悉JAVA GUI(比如:Griphices 、List、Image......等实现文本内容)、线程 和Socket服务器转发功能。其实这些还是主要的懂得套接字原理、思想,熟练线程处理就OK了
[/Quote]

现在有什么现有的产品可供参考吗?我要怎么实现实时转发的功能,即我要怎么保证我每写一个字,客户端都能尽快地发送给服务器,经过服务器中转发送给另一方呢?如果实现了实时通信,这样客户端的CPU负担会不会很重呢?
syhnyf 2010-10-24
  • 打赏
  • 举报
回复
要实现你所说的功能的熟悉JAVA GUI(比如:Griphices 、List、Image......等实现文本内容)、线程 和Socket服务器转发功能。其实这些还是主要的懂得套接字原理、思想,熟练线程处理就OK了
yahagogo 2010-10-24
  • 打赏
  • 举报
回复
没有呀。大家帮帮忙哝。
yahagogo 2010-10-24
  • 打赏
  • 举报
回复
自己先顶一个。
课 题 组装我的计算机 教材版本 宁夏教育厅教研室编著 教材 七年级上册 【课前准备】 教学内容 第一单元 计算机及其工作原理 实践活动《组装我的计算机》 宁夏教育厅教研室 编写 电子工业出版社出版 信息技术七年级(上) 教学目标 知识与技能目标: 认识电脑的基本部件:显示器、主机、键盘、鼠标、主板、内存、硬盘,各部件的接口。 学会简单的拆机,懂得拆电脑的常识 在观察实物及动手实践的基础上,使学生对计算机硬件系统有直观的认识,了解计算机的硬件组成,并简单的了解其功能。 过程与方法目标:通过任务驱动法,在教师引导与学生动手实践过程中,掌握以上知识与技能目标。 情感态度与价值观目标:培养学生自主合作学习、观察、以及总结归纳的能力。使得学生通过正确的拆装电脑认知,克服心理障碍,敢于拆电脑。 知识目标定位比较准确,只是在用词上作了修改,使其更为恰当。 能力目标定位过高,通过练习之后,大部分学生能够较为熟练地掌握操作方法,所以作此修改。 情感目标能够实现。 组装我的计算机教学设计全文共5页,当前为第3页。组装我的计算机教学设计全文共5页,当前为第1页。学情分析 组装我的计算机教学设计全文共5页,当前为第3页。 组装我的计算机教学设计全文共5页,当前为第1页。 学生对于日常可见的电脑又初步的认识,但对主机箱里的部件认知不足。能够亲手动手拆装电脑,可以极大的满足学生的兴趣,同时可以纠正"组装电脑只有专业人员才可以的"错误认知。 结合实际学情进行分析,从而纠正学生的认知,对电脑内部部件有新的认识。 重点难点 重点:电脑的拆装。 难点:了解计算机的硬件组成。 重点把握准确 难点突破巧妙 教学方法 任务驱动法、引导法、讲授法 教学方法选用适当 学习方式 自主学习 合作学习 学习方式灵活运用 课前准备 螺丝刀 提前安排准备 课时安排 1课时 课时安排量度适当 【课堂教学】 教学环节 教师活动 学生活动 设计意图 教学反思 问题导入 (2分钟) 我们面前摆放的是什么呢?有没有同学打开过主机箱,看看里面是什么呢? 那么今天我们就把主机箱打开,来看看计算机内部都是由那些组件组成的。 这就是我们今天要学习的内容—组装我的计算机. 学生根据教师的引导回答:电脑主机箱 明确本节课的课堂任务,积极性较高。 教师简单明了的问题引入课程,营造学习氛围,激发学生动手拆装计算机的兴趣。 问题设计极端明确,让学生清楚自己本节课的主要学习任务,抓住了学生学习心理,效果非常好。 任务一: 组装我的计算机教学设计全文共5页,当前为第2页。计算机 组装我的计算机教学设计全文共5页,当前为第2页。 硬件 (5分钟) 观看微课程《计算机硬件》 思考: 1、硬件有哪些? 2、计算机各部件名称及主要功能。 拓展: 仔细观察主机箱,简单了解外围各个几口。 学生接受教师布置的学习任务,认真学习微课程,完成导学案,小组商讨后进行成果展示。 培养学生自主学习、合作学习、及团结协作意识。 采用微课程的方式布置学习任务,增强学生的学习兴趣降低学习难度,设计巧妙。 拆机注意事项讲解 (2分钟) 拆装电脑时要注意以下三点: 1、防止人体所带静电对电子器件造成损伤,在安装前,应先消除身上的静电,比如用手摸一摸自来水管等接地设备。2、对所有部件要轻拿轻放,尤其是不能磕碰,尽量不要捏板卡上的元件、印刷线路和引脚处,也不能随意乱放,强度不大的冲击都可能会损坏部件。3、用螺丝刀拧螺丝时,应做到适可而止,不可用力过猛,在开始遇到阻力时便立即停止。 学生齐读 并认真牢记 动手摸桌子、椅子的腿 通过对注意事项的强调,清楚学生的心理障碍,敢于动手去拆机 对注意事项提前强调,可以减少学生心理上的顾虑,为学生拆机做好准备。 任务二:动手拆机 (15分钟) 拆机算计的一般顺序是: 1、机箱盖 2、电源 3、硬盘 4、主机板 5、CPU 6、内存 请同学们按照导学案中的提示,动手尝试拆机,拆机过程中遇到问题互相帮助,或者向老师求助。 教师评价和总结。 学生积极完成任务,互相帮助,完成快的小组帮助其他小组。 通过以小组为单位,培养学生合作学习,共同进步的能力 强调拆机的一半步骤,让学生互帮互助完成任务,老师给予适当的帮助和指导。 巩固练习 (1分钟) 对于拆下来的硬件,让学生说出它们的名称 课后巩固和提高。 实践与巩固,提高并深化 师生互动 比一比 (10分钟) 比一比,哪个小组装机最快 积极动手参加 巩固提高 动手时间 课堂小结 (3分钟) 根据学生对课堂任务完成情况进行总结,对学生的作品予以肯定和鼓励,并提炼本节课的知识点 总结本课的知识要点,梳理它们之间的关系。 帮助学生梳理本节课知识要点。 采用板书来梳理知识要点,进行课堂总结。 【板书设计】 组装我的计算机 计算机硬件 拆装机注意事项 拆计算机 【课后反思】 一、教学中
c#数据库系统心得体会 数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数 据库应用系统,去解决各行各业信息化处理的要求。下面是带来的,仅供参考。 c#数据库系统心得体会一: 这次数据库课程设计用的是Microsoft Visual FoxPro 6.0 ,而我们平时用的Microsoft SQL Server 20xx,虽然对VFP完全陌生,但在老师的指引下,我们近乎完美的完成了课程设计。当然 过程是艰辛的。 面对着完全陌生的操作环境VFP,许多同学开始埋怨,要求用SQL,用我们学过的ASP等来 完成设计。但我们慢慢发现用VFP做课程设计其实很有优势,于是它的这个优势激发了我 们去了解它的欲望。老师先将VFP中基本的建数据库,建表以及建表单等向我们演示了一 遍,我们也仿照着做了,发觉并不是很难。但想到这次课程设计做的是一套学生学籍和 成绩管理系统,我们又开始茫然了。那天,老师给我们看了一段可以让文字循环移动的 代码,这使我们产生了好奇心理,有了快速了解它的冲动。因为用面向对象的语言做特 效,这还是第一次。下课之后我把那段我们不了解的语言写的特效代码发到了VFP论坛上 请人帮忙解释,最后我们完全理解了那段代码的意思。 这次课程设计我们克服了炎热的天气(学校机房之前没装空调……后来设计完才装……),也 克服对新知识的恐惧感以及畏难情绪。我们懂得了团队合作的重要性,也懂得了团队中 如何交流、如何分工,如何集体讨论难点。我们充分利用了网络资源(技术论坛,共享的 实例等)。 我们喜欢这次课程设计的感觉,喜欢编程,喜欢团队交流。 c#数据库系统心得体会二: 在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开 发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计, 可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基 本方法,进一步提高我们综合运用所学知识的能力。 当我们这组决定做大学生就业咨询系统时,我们并没有着手写程序。而是大家一起商量 这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典。当这 些都准备好了之后,我们进行模块的分工。每个人都有自己的模块设计,而且写出来的 代码要求可以实现相应模块的功能,得到理想的效果。当每个人都把自己的分工做好了 ,最后会由一个人把这些全部组合搭建在一起。我们使用的是Html和php相互嵌套使用, 当一个系统做好了之后,我会好好地把程序都看一遍,理会其中的奥秘。 我所负责的是数据库的备份和还原还有一些界面的实现。还记得自己刚接触html的时候 ,觉得很感兴趣,所以有一段时间几乎到了痴迷的程度。然而Php是我刚接触不久的一种 编程语言。不过觉得它的功能真的很强大,可以开发出很多大型的系统。但是在做备份 和还原的时候,要考虑的东西还是很多的。当我遇到错误的时候,感到很受打击。值得 欣慰的是,在同学的帮助和大量参考书的查阅下,我把自己的模块做好了。这就是我收 获最大的地方。而且,我明白了遇到困难永不放弃的重要性,我知道了团队合作的重要 性,我领悟了只有坚持不懈才会取得胜利。 知识的获得是无止境的,只要你想学,只要你行动,没有什么会难倒我们的。回首这一 个多星期的课程设计,我很欣慰。因为我有了动力,有了勇气。谢谢老师对我们的不懈 帮助,谢谢学校给了我们这一次实践的机会,也谢谢组员们的关怀。这些美好的回忆美 好的东西将永远伴随着我。 c#数据库系统心得体会三: 数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设 计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开 始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与 大家共勉。 首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到m icrosoft 公司的.net产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系 ,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub, var 看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称".net是用于创建下 一代应用程序的理想而又现实的开发工具",而且主推c#语言,由于对c语言的一贯好感 ,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的 ,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一 遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很 耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sql server20xx,以前学a
语音识别的MATLAB实现 声控小车结题报告 小组成员:关世勇 吴庆林 一、 项目要求: 声控小车是科大华为科技制作竞赛命题组的项目,其要求是编写一个语言识别程序并适当改装一个小型机动车,使之在一个预先不知道具体形状的跑道上完全由声控来完成行驶比赛。跑道上可以有坡面,坑, 障碍等多种不利条件,小车既要具有较快的速度,也要同时具有较强的灵活性,能够克服上述条件。 二、 项目分析: 由于小车只要求完成跑道上的声控行驶,所以我们可以使用简单的单音命令来操作,如“前”、“后”、“左”、“右”等。 由于路面有各种不利条件,而且规则要求小车尽可能不越过边线,这就决定了我们的小车不能以较高的速度进行长时间的快速行驶。所以我们必须控制小车的速度和行进距离。 由于外界存在噪声干扰,所以我们必须对噪声进行处理以减小其影响。 鉴于上诉各种要求,我们决定对购买的遥控小车进行简单改造,使用PC机已有的硬件条件编写软件来完成语音的输入,采集,处理和识别,以实现对小车的控制。 三、 解决思路与模块: 整个程序大致可划分为三个模块,其结构框图如下图所示: 整个程序我们在Visual C++ 环境下编写。 四、 各模块的实现: 1 声音的采集: 将声音信号送入计算机,我们利用了声卡录音的低层操作技术,即对winmm.lib进行API调用。具体编程时这一部分被写在一个类中(Soundin类)。 在构造函数中设定包括最大采样率(11025),数据缓存(作为程序一次性读入的数据,2048),声卡本身所带的一些影响采样数据等的各种参数; 调用API函数waveInGetNumDevs(返回UNIT,参数为空)检察并打开声音输入设备,即声卡;并进而使用waveInGetDevCaps得到声卡的容量(在waveInCaps中存有该数据,对其进行地址引用,从DWORD dwFormats得到最大采样率、声道数和采样位); 创建一个叫WaveInThreadEvent的事件对象,并赋予一个Handle,叫m_WaveInEvent,开始利用线程指针m_WaveInThread调用自定义的线程WaveInThreadProc; 对结构WAVEFORMATEX中WaveInOpen开始提供录音设备。注意设备句柄的得到是通过对HWAVEIN 型数据m_WaveIn的引用。 由于通过这种方式进行录音的文件格式是.wav,所以要先设置录音长度,以及对头文件进行一些设置:包括buffer的地址为InputBuffer的初始地址,大小为录音长度的两倍,类型。使用waveInPrepareHeader为录音设备准备buffer。然后使用waveInAddBuffer函数为录音设备送出一个输入buffer。最后使用waveInStart(m_WaveIn)打开设备。 程序中WaveInThreadProc需要提出另外说明,因为通过这个线程我们可以实现采样和数据提取。该线程首先定义一个指向CsoundIn类的指针pParam,并将其宏定义为PT_S。而线程参数即为空指针pParam。使用WaitForSingleObject将录音过程设置为一旦开始就不中止(除非中止线程)。在此线程中做如下两个工作:将数据送入buffer,并将数据传入某个参数(其调用一个函数,将buffer中的数据送入该函数的参数*pt),而这些数据正是我们要利用和处理的数字化的语音信息。 2 声音的预处理: 声音信息的预处理主要包括音头和音尾的判断,声音的预加重,分帧处理和窗化处理。 A 音头音尾的判断与提取: 这是该项目的一个难点。由于我们的声音信号不是连续给出的,而且现场还有噪声的存在,所以我们必须通过适当的方法来判断采集的数据是不是我们所要的声音控制信号。这又是该项目的一个重点。若声音指令信号提取的不恰当,那么我们采样所得的数据就和我们实际的语音信号就会有很大的出入,这样不但会延迟语音识别的时效性,而且会降低对这些声音信号的识别率。对声音信号的提取,主就是确定音头、音尾的位置。常用的方法有过零率和短时距能量等几种。我们这里采用的就是过零率这个方法。首先对噪声取样,从这些噪声样本中得到噪声的上下限,将实时信号与这个门限进行比较,得到过零率。 定义过零率Zcr如下: 其中: 利用过零率的大小来判断是否有声音信号进入,若 ( 为预设的过零率值),则表示有声音信号进入,就找到了音头。在找到音头的情况下,若 ,则表示声音结束,也就找到了音尾。在环境噪声较大且比声音指令小的多的情况下可以对这个门限加一修正。音头和音尾之间的部分就是我们用以作为识别用的声音指令信号了。由于一般情况下人们所发出的单音都有一定的时间长度而大的噪声则大多是突发的,持续时间较短,所以我们可以再对所得到的声音指令信号做一次筛选,若得到的声音信号的长度小于预设值,就可认为是噪声干扰,舍弃;若得到的声音信号的常到大于预设值,则将其作为有用信号存储。实验表明,利用过零率和预设长度相结合起来提取声音指令信号的方法很有效的。 B 语音信号的预加重: 我们所采用的预加重的方法是较为常用的网络: 传递函数为: 得到的信号为: 预加重的目的在于滤除低频干扰,尤其是50Hz或60Hz的工频干扰,将对于语音识别更为有用的高频部分的频谱进一步提升。在计算短时能量之前应用该滤波器,还可以起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。 C 分帧处理 在计算各个系数之前要先将语音信号作分帧处理。语音信号是瞬时变化的,但在10~20ms内是相对稳定的,而我们设定的采样频率为11025所以我们对预处理后的语音信号S1(n)以300点为一帧进行处理,帧移为100个采样点。 (N=300) D 窗化处理: 为了避免矩形窗化时对LPC系数在端点的误差,我们采用了汉明窗函数来进行窗化。即: 其中: 3 语音数据的特征提取: 语音信号的特征有多种度量标准,我们采用的是比较常用的倒谱特征。 语音信号是一种典型的时变信号,然而如果把观察时间缩短到几十毫秒,则可以得到一系列近似稳定的信号。人的发音器官可以用若干段前后连接的声管进行模拟,这就是所谓的声管模型。全极点线性预测模型(LPC)可以对声管模型进行很好的描述,每段声管对应一个LPC模型的极点。一般情况下,极点的个数在12-16个之间就可以足够清晰地描述语音信号的特征了。 语音信号经过预处理,它的每个样值均可由过去若干个样值的线性组合来逼近,同时可以采用使实际语音抽样与线性预测抽样之间的均方差最小的方式,来解出一组预测的系数 。这就是LPC所提取出来的信号的初始特征。 预测值时域表达式为: 其中, 为加权系数,即LPC系数。预测的误差为: 使 在均方误差最小的条件下,可求得唯一的 ,此过程即为LPC分析过程。 这里采用的是Levinson-Durbin法。由上面的式子有: 其中, 为待分析与引信号的自相关序列: 因此:Levinson-Durbin算法为: 1. 初始化: 2. 迭代计算:对于 3. 最后就算: 以上式中的 为反射系数。 ; 为最小预测误差,随着阶数的增加而减少; 为模型增益常量。 在语音识别系统中,很少直接使用LPC系数,而是由LPC系数推导出另一种参数:线性预测倒谱系数(LPCC)。倒谱实际上是一种同态信号处理方法,标准的倒谱系数计算流程需要进行FFT变换、对数操作和相位校正等步骤,预算比较复杂。在实际计算中,他不是由原始信号x(n)得到,而是由LPC系数 得到的。 LPC系数算出后,就可以直接进行倒谱系数 的计算,其迭代算法如下: 1.初始化: 2.迭代计算: 这里C(0)实际上就是直流分量,在识别中通常是不用的,也不去计算。 综合考虑识别误差和识别速度的影响,我们在计算LPC 时,LPC系数的阶数Q值取为8,而LPCC系数的阶数P值取为12。 4 DTW 算法: 语音识别程序的核心部分即采用合适的算法来识别不同的语音信号,在特定人语音识别算法中,对于孤立词语语音识别而言,最为简单的方法是采用DTW(Dynamic Time Warping,动态时间弯折)算法,该算法基于动态规划)(DP)的思想,解决了发音长短不一的模本匹配问题,是语音识别中出现较早、较为经典的一种算法。我们这里采用的就是DTW算法。 我们用R表示已存的参考模板,T表示待识别的测试模板,R(1),R(2) ,…,R(m),T(1),T(2),…,T(n)分别表示参考模板和测试模板中的各语音帧,d[T(n),R(m)]表示这两帧特征矢量之间的距离(DTW算法中通常采用欧氏距离)。为了比较R和T之间的相似度,可以计算他们之间的距离D[T,R],距离越小则相似度越高。D[T,R]的计算通常采用的是动态规划的方法。 将R和T的各个帧号分别在直角坐标系的横轴和纵轴上标出,则如下图可得到一个网格,网格中各点表示R和T中的一帧的交汇点。DP算法可以归结为寻找一条通过此网格中若干格点的路径,使得沿路径的累积距离达到最小值。 为了使路径不至于过分倾斜,可以约束斜率在0.5-2范围内,如果路径已经通过了格点( ),那么下一个通过的格点( )只能是下列三种情况之一: 搜索最佳路径的方法如下: 搜索从( )开始,网格中任意一点只可能有一条路径通过。对于( ),其可达到该格点的前一格点之可能是 ( ),( ),( ),那么( )一定选择这3个距离中的最小者所对应的格点作为其前续格点。若用( )代表此格点,并将通过该格点的路径延伸而通过( ),这时此路径的累积距离为: 其中的 由下式决定: 这样可以从初始点出发依次搜索直到搜索到终点 便可得到最佳路径。 五、整个系统的软件流程图: 见右图。 六、硬件 用四个c1108型三极管来控制小车遥控手柄的前、后、左、右触点的通断。从计算机的并口引出四根信号线,与三极管相连,与前、后、左、右一一对应。若判断出指令信号后,则相应的信号线上输出高电平,该电路导通,发送无线信号。若无指令,则信号线上输出低电平,电路断路,不发送无线信号。电路示意图如下:(由于四条线路基本是一致的,这里只画出了其中的一根信号线与外电路的连接示意图) 七、实现功能与技术指标: 1. 软件上可以识别前、后、左、右、停等语音指令,并发出相应的控制信号。 2. 硬件上可以实时的收发无限信号,并控制小 车作相应的动作。 3. 语音识别正确率大于95%,从发出语音指令 到执行该指令的延时小于100ms。 八、与原设计方案的比较: 我们的整个方案基本是按照原设计方案来进行的,各项指标也基本达到了预定目标。 九、经费使用情况: 主要分为两部分: 第一, 由于我们都没有学过语音识别方面的知识,所以一开始我们就买了一些参考书和资料。 第二, 在软件部分初步成型后,在对小车进行改装时购买了一些电子元器件以及其他一些工具。 十、致谢: 感谢华为研究所为我们提供这样好的锻炼机会,我们从中学到了很多书本上学不到的知识。 感谢铁伟涛同学为我们提供方案支持。 感谢我的导师魏衡华老师和314实验室的所有负责人为我们提供PC机和其它硬件条件以及方便的实验环境。 感谢所有的评委老师在开题和中期评审中给我们提供很多宝贵的意见。
要求: 本次课程设计利用《软件设计基础-VB》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。 要求: 1、对系统进行功能需求分析 2、设计合理的数据结构和系统框架 3、界面设计美观、清楚、合理 4、编程简练,程序功能齐全,能正确运行 5、具有一定的创新性 6、说明书、流程图要清楚 7、课题完成后必须按要求提交课程设计报告 任务: 题目描述与功能要求 题目描述:“打冰雹”游戏是指从窗口顶部落下多个圆球表示的“冰雹”,用户使用鼠标来指引箭头表示的“枪”瞄准其中一个圆球,单击鼠标射击。如果打中圆球则加分,没打中减分。若累积有5个圆球一直未被击中而落到地面(用水平黑线表示),则失败。用户玩游戏的目标是尽量短的时间内得尽量多的分数,同时避免圆球落地。 功能要求:(1)设计图1.26(课本)所示的窗口界面。程序启动时,自动进入游戏状态,10个不同颜色的圆球从窗口顶部向下运动。用户使用鼠标指向其中一个圆球,然后单击。如果击中圆球则加1分,未击中则减1分,分数显示在“得分”文本框中。“所用时间”文本框中显示当前已用的时间。被击中的圆球立即消失,新的圆球从顶部落下。 (2)要求同时显示10个圆球,每个圆球的颜色和下落速度各不相同。窗口底部的箭头一直指向鼠标指针的方向。单击鼠标射击时,显示一条从箭头发出到达鼠标指针的直线表示子弹轨迹。 (3)程序共有4个难度等级,分别是“简单”、“中等”、“较难”和“高级”。默认的难受为“中等”。不同的等级对应不同的总体下落速度。在游戏过程中,随时可以通过“选择难度”组合框来改变难度级别。 (4)游戏开始时,提供的“能量”数是5。如果有一个圆球落到地面,则减1。当能量为0时,显示如图1.27所示的消息框。然后,程序自动将难度改为“简单”让用户重新开始,这时能量恢复为5,得分从0开始。 (5)圆球落地后立即消失,新的圆球从顶部落下,窗口上始终保持有10个圆球。 游戏过程中,当得分达到25时,显示如图1.28所示的提示;当得分达到50时,显示如图1.29所示的提示;当得分达到100时,显示如图1.30所示的提示,并自动将难度设为“较难”,当得分达到150时,自动将难度设为“高级”。 3.课程设计说明书 ⑴功能描述;本题目的程序设计由三个窗体组成。 窗口一:为开始界面,主要实现游戏的开始、退出以及游戏规则介绍功能。 窗体二:为游戏界面,内设置游戏进行,可通过对combol的选择改变难易程度。 窗体三:为结束界面,主要目的,提醒玩家通关成功 (2)详细设计 总体流程图: 各功能模块流程图: 窗体一:开始界面 窗体二:游戏界面 窗体四:结束界面 ⑷代码实现 本题目的程序设计由三个窗体组成。分别由五个Timer,五个TextBox,一个ComboBox,七个Line,十个shape十个Label,一个medio player等控件组成。窗体2为主要窗口,它的设计如下: 窗体2中控件列表 序号 控件名称 控件类型 功能 1 Label 标签 对文本框与组合框进行说明 作为提示,装饰界面 2 TextBox 文本框 显示程序运行的结果即得分Text1、剩余能量Text2、所用时间Text3(0)、Text3(1)、Text3(2)的数值 3 ComboBox 组合框 显示选择难度 4 Timer 定时器 在程序运行的过程中不断地累积时间,当达到给定的时间间隔时,自动地引发名为Timer的事件。Timer1控制冰雹下落的并通过combo-click选择不同的难程度掉冰雹的速度,timer2.timer3是记录玩游戏所用时间分别控制秒和毫秒 5 Picture 图片框 通过图片加载,装饰页面picture1是游戏中界面,picture2休息界面 6 Shape 形状 显示多种不同的形状,装饰窗体,这里即圆形 7 Line 直线 在窗体上显示一条直线。 Line2到Line7是做指针用的,Line1是作为冰雹没有打中落下去让冰雹消失 8 medieplayer 播放器 当鼠标击打冰雹时,放出声音 各窗体的代码介绍 form1—开始界面 作用:“进入应用程序”。 所用控件:4个标签,1个时钟,3个command 设计思路:用时钟控制label1的运动。单击command开始按钮可进入后面窗体,退出按钮可关闭窗体,帮助按钮查看游戏规则。 核心代码如下: 窗体1—开始界面 Private Sub Command1_Click() Form2.Show Unload Form1 Timer1.Enabled = True’开始按钮,控制游戏的开始 End S

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧