达内生产实习报告

2024-09-06 版权声明 我要投稿

达内生产实习报告(推荐8篇)

达内生产实习报告 篇1

一直以来我们专业的生产实习就是在校内,而今年我们终于有机会在校外实习了。去IT培训学校实习两周,对于我这种酷爱计算机的人是多么好的体验机会。作为数学类专业的学生,如果一味的学习理论,不能去实践理论,那是多么悲哀呀。当得知有这样的机会时,很多同学都积极参加了。就这样,大家带着新鲜好奇、实践理论的心情离开学校来到了达内实习了。

实习的第一天,有老师就带领我们熟悉了将要使用的操作系统——LINUX操作系统,这个系统以前我根本没有接触过,当时就想只有好好学了。老师介绍了在终端的许多操作,并且将连接主机的方式以及一些在终端上的简单操作等等告诉我们,大概因为是新知识,所以很多同学都不断练习以达到熟练。实习的第一天我们花了很多时间在熟练基础上,说实话真的有些累,但是,了事谈到说,作为IT工作的人比我们更辛苦,我忽然觉得自己在达内的实习很充实。我总想,我们要成功就一定要别人更努力。

实习的第二天,我们见到了接下来给我们上课的老师,他是项目经理,据说他带的班和学生是基地里最多的。经理常说,要学好计算机,好的代码你要敲上300遍。他的同学在百度上班,那个我们最熟悉的百度首页他同学就敲过几百遍,才有现在的完美首页。听了经理的介绍,忽然觉得自己在学校敲的代码次数太少了,在接下来的日子了,我会每天都对前一天的项目代码多敲几遍。

一个行业你要喜欢它,也会喜欢它的文化,经理上课的第一天就讲了IT行业的发展史。IT行业分别经历了PC机时代、软件时代、互联网时代和移动终端时代,到今天已经是大数据时代了。当然,最为IT人知晓的代码“Hello World”,这一语句可是很多IT家的墓志铭。在我们的很多教材里,第一个程序代码就是输出“Hello World”。

在之后的一些天里,我们开始学习六个项目,它们分别是:满天星、水底世界、弹跳板、雷电游戏、斗地主。暴力五子棋。

学习开始,我们跟着老师一步一步往下走,跟着在键盘上忙碌的敲代码、调整程序。邓经理讲课很细心,思维新颖逻辑严谨罗列着他所要讲的内容,娴熟的敲打他已积累如山的代码,还时不时的讲讲笑话和他的一些事情,当没听懂需再讲一遍时,他还是笑迎喜面的再讲一遍,同学们都很喜欢邓老师,我也是如此。每次做项目前,项目经理就会先做项目驱动,把我们所以做出的项目展示,并且讲解它的一些来由。比如项目“满天星”,美丽的星空是一位编程的男生送给心爱的女友的,他为她摘天上的“漫天星”。在满天星下,项目经理还要求下大家自己动手设计出自己不一样的星空下的“小村庄”。要知道IT对于我最大的吸引力就在于此,我可以有自己独特的想法去完成一项任务。我用各种不同画出草坪、房屋、花朵。。。每一座房屋都是自己拼出来的(因为所学知识有限)。作品大家做好后就可以上传到老师那里展示了,看到自己的成果大家评价高,那是多么令人兴奋的事。

每天都是这样,老师认真的讲着,我认真的听着,一个星期以来,老师介绍了几个项目,每个项目的驱动都特别有意义。接下来对于老师所讲的项目更是感兴趣,对于与邓老师在一起的时间我更是倍感珍惜,在计算机领域中,是心灵的一种进化,也是心灵的一种提升。

达内实习的时候,我们不仅仅学的是项目本身,我们很多有趣的知识。比如经典游戏的内涵,以及扑克牌数目的各种含义等等。当然,想要做成功一个项目必须先了解它的需求分析。为了能让大家能明白项目开发的过程,经理会把项目所涉及的计算机语言知识先讲解,然后再带领大家一步一步完成项目。当大家按着经理的指导敲出一个又一个不一样的实物和动感时,那种喜悦,那种成功的感觉是只一味读书所没有的。最令大家有成功感的,不仅仅如此。为了能让大家熟悉每天的新知识,经理会给我们布置作业,那就是在简单程序的基础上运用自己的想法敲出完整的项目或者结合自己的想法敲出不一样的项目。

实习快要结束的时候,我们接到新的任务,那就是在LINUX操作系统上完成个人的实

训总结ppt,我很喜欢达内,在这里,环境优良,为我们每人准备了一台电脑,天气热,为我们安了空调,怕我们上火,哈哈,老师在上课期间怕影响我们上课静静的为我们倒水,严厉之中透漏着温柔,呵斥之中透漏着关怀。

在这里,我不是一个人而是家庭中的一员,和同学一起上下课,下了课一起打打闹闹的去吃饭,在业余时间还和老师聊聊天,或许这对于别人来说,这是人生中当学生时代最平常不过的事了,可对于我真的很珍贵,我很开心,我现在发现我也不是一个真的很喜欢独处的人,不能彻底的改变,但事实却在改变。

实习时间慢慢的在减少,而程序却相反——越来越难,越来越繁。因为一个小环节与大家拉开了距离,在一个庞大的项目中是不允许任何一处掉链子的。看到同学们早已“轻车熟路”操作自如了,而我却不知所措,立刻就有了压力。一天下来感受最深的就是那种巨大的差距。学校所学与实际应用中的脱节

在达内为期两周的实习时间已悄然离去,刚来时的那种新鲜好奇早飞到了九霄云外,更多的是离开时的那种不舍和对自己及所学的反思。

通过实际项目的开发我有以下几点收获:

1.多向老师、同学虚心请教,也别说自己学的不怎么样,不然会大大减少自己的自信,从而与大家的差距越来越大。

2.编程以前一定要对整个项目有仔细的了解,最好能写好需求分析,这样在实际操作时就会更加调理,而且不会遗漏东西。

3.做任何项目都离不开团队合作。所以我们一定要注意团队合作意识,多和小组内的人交流。

4.在编程中一定要规范,绝对不可以随性

达内生产实习报告 篇2

1 合理安排教学内容。

抓好学生的基础训练技术。学校应社会需要而开设的车工生产实习课程教学的任务是培养学生全面牢固地掌握本工种的基本操作技能;会做本工种中级技术等级工件的工作:学会-定的先进工艺操作;能熟练地使用、调整本工种的主要设备;独立进行一级保养;正确使用工、夹、量具、具有安全生产知识和文明生产的习惯;养成良好的职业道德。从技工院校车工生产实习课程教学的特点分析, 依教学大纲要求, 开展车工生产实习教学。第一学期, 重点抓好学生基础训练, 由车工入门知识开始, 从车床操作到车外圆、切槽和切断, 车削圆柱孔、车圆锥、威形面和表面修饰, 并且能够熟练操作校实习工厂的车床, 初步掌握90*和45*外圆刀、切断刀、镗孔车刀和钻头的刃磨, 较合理地选择切削用量, 第二学期要求学生独立完成普i西三角螺纹、梯形内、外螺纹的车削及套类零件的加工。第三学期, 要求学生熟练掌握车蜗杆、多线螺纹和偏心工件的车削方法, 加工形面较复杂精度较高产品, 提高学生加工零件的质量、速度及车刀的刃磨水平。第四学期至第六学期, 让学生掌握中、高级技术等级的综合工件的工艺步骤和加工方法等。抓好学生产品意识, 提高学生综合加工作业, 能够独立完成零件综合加工工艺分析, 制定合理的工艺步骤:并让学生下企业参观, 参预生产。实现产教结合, 把学到的知识应用于生产实践中。

2 采用分层次教学管理模式, 利用现代化的教学设备, 因材施教

2.1 实习教学目标分层。

技工院校生在车工生产实习操作能力方面必然会出现三种进度情况。也就是我们通常所说的学优生、中等生、后进生。根据学生的个别差异及其他具体特点, 因势利导地采用不同的教育方法、措施:而车工生产实习教学中采用的分层次教学就是依据这一思想, 从不同层次学生的实际情况出发, 针对学生各方面的具体差异, 本人根据学生学习的接受能力和技能水平, 按教学大纲和教材对不同层次的学生提出相应的教学要求。避免常规教学时采用“一刀切”的方法进行教学。在教学中赋予学生不同程度的目的要求, 通过分层次教学达到因材、因人掌握不同层次的知识水平, 在“基础培训+强化练习”的教学模式下, 引导、提高学员车工操作技能。

2.2 通过实习学生分层, 作好授课分层与辅导分层在车工生产

实习实施目标教学中, 承认学生在发展过程中客观存在的差异, 促使每个学生在原有的基础上都得到应有的发展。首先, 经过与学生在实习期间的接触、交流, 观察 (三周) 。本人就初期的学员机床编组进行重新调整, 并从学生中选定代班、机台长、量保。代班参预车工生产实习现场管理与人员调配, 组织学员互动、交流, 并带动全班学员学习热情。机台长, 负责本机台人员互动、交流, 并作好本机台量具与工具的领用与交接, 督促本机台学员进度, 由该机台学优生担任。量保, 负责全班学员刀、夹、工具、量具的领用。其次, 根据我校现有设备、设施等教学条件下, 本人按学生情况进行分组, 每台机床确保都有操作技能较好的学生、中等水平的学生、基础及动手能力较差的学生的组合。针对基础差的学生, 进-步的分解实习课题, 详化操作卡片上各课题的操作步骤与演示, 做到注释详尽, 分析讲解透彻、演示到位, 对此类学生实施一对一的辅导教学。对于操作技能较好的学生, 引导并培养其开拓思维, 独立思考, 独立作业, 勇于刨新的意识, 允许他们加工高精度、难度的练习的同时, 通过让其依据本阶段实习课题, 制定作业图纸, 独立分析加工工艺及工步, 通过学生间的相互讨论, 分析, 最终选定一种加工方案, 并在实习指导教师的监, 由其中-位学优生进行作业加工。并就加工完成后, 由学生间互动点评, 最后再由实习指导教师给予指导与评价。借此激发其积极性, 引导学习意愿, 与独立作业能力。通过实习学生分层, 作好授课分层与辅导分层, 就是以学生的发展为根本宗旨对学生进行施教。

2.3 利用现代化的教学设备, 实现因材施教

利用多媒体课件中的动画和电影片段, 可以将教师从传统的费时费力又不出效果的教学方法中解脱出来。车工生产实习教学中, 应尽量采用先进的教学手段和直观的教学方法以及现代化的教学设施, 通过传统的教学模式与采用现代化教学设备教学模式相结合对学生进行施教。车工生产实习传统教学模式是以指导教师讲授完后直接去车床上进行训练, 操作起来很难让学生有感性上的认识。而采用现代化教学设备进行施教, 通过借鉴远程教育教学模式, 从而联系车工生产实习教学特点出发, 就传统教学模式的来看, 着重培养学生的动手能力及独立工作能力, 实质是技能操作指导课, 而在讲授过程中往往都要借助实物来进行, 但并不是所有的实物都可以搬到课堂里, 并且一些专业工艺的操作过程如果要做示范的话也是在课堂教学中很难实现的而利用录像等现代传播媒体, 可以将机械产品的生产过程真实、直观地反映在电视屏幕上, 为学生提供模拟操作环境。为此, 本院将投影仪、录像机等设备放置于车工生产实习车间教学黑板俩面的学生休息场内。将车工生产实习教学大纲所要求的培训课题分解。从而制作出满足不同教学要求课题所需要的视频片段也能更有针对性的对实习过程中接受能力差异的学生进行个别辅导, 实现学生分层、授课分层、辅导分层达到因材施教的目的。

2.4 培养学生的识图及编制加工工艺能力

学生在掌握了一定的基本操作后, 要进行一些难度较大的综合练习, 这是巩固提高学生基本操作和锻炼他们提升自我力的好机会。老师这时需要让每个同学真正掌握后再开始实习操作, 这样既提高了同学们的识图能力, 又为同学们的思维能力打下了基础。

2.5 参观机械厂, 了解加工的过程.认识到车工的重要性

当学生的知识, 技术水平达到一定程度后, 学生的理解、领悟能力在不断的提升。他们渴望对机械加工有更多的了解, 这时候应带领学生到设备齐全工艺先进的正规机械厂参观, 让学生对整台设备的生产从零件下料到设备出厂有完整的认识。让他们认识到从备料、工艺路线的划分、热处理的安排、工料的质、各工序的安排、调试等过程中, 车工所起的作用。

总之, 车工实习的目的。是使每-位学生能掌握车工基本的加工方法和操作技能, 从而使自己成为-个对社会有用之才。我认为车工实习教学要培养学生掌握扎实的车床操作技能的同时, 促进学生能力的发展。生产实习指导教师必须开拓思路, 采取新的教学方法, 开辟新的教学途径, 调动学生的学习意愿, 让学生感受到学习本课程的必要性, 使学生能自然地掌握知识, 并且养成探索的习惯。从车工实习教学特点出发, 把握好教学活动过程中的操作环节, 充分利用现代化教学设备, 提高教学质量, 实现因材施教的教育目的。

参考文献

[1]孟庆元.专业学习兴趣的培养与车工技能的形成[M].辽宁教育行政学院学报, 2009 (04) .[1]孟庆元.专业学习兴趣的培养与车工技能的形成[M].辽宁教育行政学院学报, 2009 (04) .

[2]胡新华.中等职校车工技能分组交叉教学中尝试运用项目教学法2008 (24) .[2]胡新华.中等职校车工技能分组交叉教学中尝试运用项目教学法2008 (24) .

达内科技公司实习日报表 篇3

不知不觉,我们在达内实习已经一周了,经过这六天来的培训,我已经初步形成了java编程的思想。从刚开始的零基础,一步一步深入到java的核心,付出了很多,也收获了很多。

先谈一下我对java的认识吧。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java的语言特点是简单、面向对象、解释、健壮、安全、可移植、高性能。从最初的第一个简单小应用程序——只打印一行字到简单的局域网信息传递编程的实现,我们每个人都在不断摸索、进步中。与以往不同的是,我们不是单纯的只讲解理论知识,达内老师特别注重我们的实际操作能力的培养。每天,我们都是一边学习Core Java基础知识,一边上机练习具体应用程序的编写,以此来及时加深巩固所学的知识。

我们着重学习了面向对象编程。重点学习了类及其三大特点的应用,创建对象、使用对象的方法,List、Set、Map三大集合的实际应用,线程和输入输出流以及网络编程的相关知识的具体应用程序的编程。同时老师还引导我们学习了通过查询JDK API来更大范围的使用、掌握类。通过这段时间的实习,让我明白了,学习一门编程语言,首先要从简单的认识,再到深入的了解,要通过java程序应用,也就是上机来提高我们对java程序语言学习的兴趣。达内实习的严格、规范性让我明白了怎样从一个学生转变成一个员工的过程。

达内培训总结 篇4

我2010年毕业,第一年做的是销售的工作,做了一年,没有什么业绩,我逐渐认识到自己的特定不适合做销售,于是我决定来济南达内培训自己比较喜欢的编程,我做这一决定并不是心血来潮,而是经过深思熟虑的。我当初的想法是学完编程就去一家日资企业工作,期间锻炼自己的编程能力和外语能力,为以后更好的发展打下基础。但刚来达内的时候我心里很没有底,因为自己以前并没有接触过java,只是在大学期间有一点c语言基础,对于自己能否学好java非常没有信心。但我觉得,既然自己决定的事就要自己负责,况且每一个高手都从菜鸟走过来的,所以我下决心要好好学。达内的项目经理非常负责,有什么不会的问就可以,即使有时候项目经理也不能解决,我们还可以发邮件直接询问授课老师。在头一个月,我觉得很吃力,有些问题怎么想也搞不懂,弄得我非常焦躁,可是我坚信只要坚持就可以成功,所以遇到不会的问题我会先自己思考,实在想不出就问其他基础好的同学,就这样日复一日,我的困惑虽然还有,但自己心里有底了,觉得java可以学好。多谢同学的帮助,我真的认为到这个学校其实学习氛围才是最重要的,我们遇到问题可以互相讨论,没有人觉得不好意思,通过互帮互助我们学到了很多java编程的捷径和陷阱,我们每个人都在进步,这种感觉很棒。这种状态一直持续到做项目,项目一开始,我觉得没有头绪,思维跟不上老师的步伐,此时我对之前建立起来的自信产生了怀疑,但老师及时开导我们,他说,一开始都会这样,只要你踏踏实实去做,一步一个脚印,不管做多做少,都是一种进步,我听老师的话,每一个问题,每一个细节,我都经过独立思考,期间虽然很痛快,但我渐渐有了自己的头绪,这使我信心倍增。之后的每一天我都觉得过得好快,经过八天的努力,我也基本把全部项目的功能完成了!自己觉得非常自豪,回想一下,四个月前我还是一无所知的脑残,现在竟然可以独立完成当当网这么复杂的项目,我真的觉得自己这四个月没有虚度,同时也对以后的IT之路充满自信!真的非常感谢我的同学,老师,项目经理,没有他们我不可能取得如此的成绩。

达内项目经理岗位职责 篇5

1.保证每天学员的出勤率,统计好迟到率 2.准备好每天8:45到9:00的串讲 3.确保学员在课堂上的学习氛围 4.帮助学员解决问题

5.保证学员更好的好的完成学习任务,保证就业率 6.提高自己的业务能力,熟悉掌握公司的教学课程 7.正常开启教学设备,保证授课正常

8.带学员进行分析问题,培养学员解决问题的能力 9.提高自己的面授的能力和应变技巧

10.提高自己的威信,保证学员服从管理,获得满意度良好的口碑

11.有需要时配合其他部门完成工作(在确保不影响自己的工作情况下)12.课后及时关闭设备,节约资源 13.适当的在合适的时间组织主题班会 14.主动收集学员出现的问题,并做好记录

15.积极主动向院校领导做好汇报工作,协助解决问题 16.能够有技巧的规避自己的缺点

17.能够独立的完成各种开发工具和插件的安装和配置 18.能够独立的与个别学员进行沟通

本科生生产实习改革探索 篇6

一选择中小企业作为生产实习基地的优势

近年来, 在国家政策的大力扶持下, 各地中小企业蓬勃发展, 中小企业已成为国民经济的重要组成部分, 在促进社会经济发展、缓解就业压力、促进经济结构优化等方面发挥着越来越重要的作用。

第一, 中小企业分布比较密集, 主要集中在各地工业园区、信息产业园和高新技术开发区等。所以, 把学生生产实习基地着眼于数量多且较为集中的各个中小企业变得相对容易。第二, 中小企业规模小, 员工有时较为短缺, 机会多。中小企业很少存在担心影响生产而拒绝学生来参加生产实习, 相反, 他们非常欢迎学生参观、顶岗, 让学生参与到企业生产中。并且, 在中小企业实习, 有师傅指导, 学生进步较快。如果在实习过程中表现良好的学生毕业后还有机会直接在企业就业。第三, 中小企业非常愿意与学校相互合作。中小企业有时技术力量有限, 需要学校提供一些技术支持, 这时学校可与企业合作, 与企业建立良好的互帮互助合作关系。

二学生到中小企业实习的安排

学生人数多, 层次水平能力不同, 中小企业岗位需求不同, 合理恰当地安排学生到专业对口的企业实习是一件非常复杂的事情。如果一些学生自己有条件找到实习岗位, 在教师确认岗位的情况下允许学生自己参加生产实习。但大部分学生还是需要学校提供实习岗位的, 那么教师必须走访企业, 对中小企业岗位需求和合作意向等进行调研。如了解到一些公司有部分岗位, 如技术研发部、生产部、品质检测部、采购部等需要学生, 则做好中小企业生产实习学生计划需求表。学生报名方式可由教师根据学生情况给予推荐, 或是学生自愿报名。

三生产实习过程管理

由于实习公司企业数目多, 不可能每个公司都派一名责任老师管理学生。根据学生实习地点集中程度, 每一个片区派一名负责老师, 如深圳某几个相距不远的工业园区由一名老师负责。教师到各个企业落实学生实习的岗位, 检查学生实习情况, 与企业人资、技术工程师等交谈, 了解学生实习中的生活情况、工作情况以及学生实习中专业上或是管理上存在的问题。生产实习结束后, 每位学生必须递交一份生产实习报告以及公司评价。生产实习报告以及公司评价将作为生产实习成绩的依据。

四结束语

按照上述思想、方法对我系2010级学生生产实习进行安排和管理。由于是第一次把生产实习落实到中小企业, 联系到的中小企业数量还不能满足全系大部分学生的要求。教师走访了学生实习较为集中的桂林、深圳、东莞、广州、惠州等多家中小企业, 看到学生们在各个岗位上工作, 有的学生在车间做冲压模具品质检测, 有的学生在师傅的带领下做自动化生产线某个模块的编程、组装, 有的学生做公司产品耗材的检查、报送、采购等。通过与企业人资、工程技术等部门和实习学生的座谈, 学生们普遍认为他们在生产实习过程中虽然辛苦, 但得到了很大的锻炼, 发现了自己专业知识上存在的不足, 学到了很多书本上没有学到的知识, 生产实习取得了较为理想的效果。

参考文献

[1]杨世洲.提高工科大学生生产实习效果的探讨[J].成都纺织高等专科学校学报, 2009 (3) :52~53

[2]邱树恒、陆宇兰、叶少峰等.大学工科生产实习的现状和实习方法的探索[J].广西大学学报 (自然科学版) , 2006 (S1)

达内生产实习报告 篇7

参赛学员:方钱有 获奖奖项:二等奖 什么面向对象: 个人分析觉得:在程序设计里,面向对象是一种相对说法,相对于面向过程而言的; 面向“对象“:即重点在于“对象”;而面向过程:则重点在于“过程”,简单说:就是我我们看待事物在眼光上注重点不一样;比如说:我们评判一个女孩漂亮与否,有的人看重外表,有的人则看重“心灵”,只是侧重点不一样。举个例子:把大象装进冰箱!

面向过程

面向对象

(注重一系列动作即过程)

(注重动作所操作的承受者[“对象”])

“打开”冰箱

“冰箱”打开

“装入”大象

“大象”装入

“关闭”冰箱

“冰箱”关闭

类:通俗的说类就是“一类事物的简称”,并且这些事物至少具有一点“共同的”特征.比如说:动物就是一个类

对象:就是某一类中一个具体的(就是可以具体描述出来的)东西,比如:动物(类)里的“狗”就是一个对象。(个人觉得对象相对于类而言的,因为狗又可以分好多种,‘狗’相对于‘哈士奇’是一个类,‘哈士奇’是‘狗’类的一个具体对象)

在生活中就拿描述汽车来说,我们都知道汽车都有4个轮子; 都有跑的功能 可以如下描述:

汽车

属性: 4个轮

功能: 跑

那么怎么在Java中描述汽车这类呢? class car{

int wheel=4;//属性: 4个轮

void run(){//方法(功能): 跑

System.out.println(“是汽车都会跑”);

} } 那么可见“出租车”应当是“汽车”这类的一个具体化(实实在在的例子即“实例”)对象,那自然出租车也就具备了汽车这类所具备的“共有”属性功能!

如何创建一个出租车对象呢?java中通过new关键字来创建一个类的实例即对象,也叫类的实例化,就是把类具体化成一个实例嘛!格式:类名

对象名 = mew 类名

()

Car

texi =

new Car();创建了“出租车”对象(实例)之后那么它也就有了如下“自己”的属性和功能。

int wheel=4;//属性: 4个轮

void run(){//功能: 跑

System.out.println(“我是出租车我也会跑”);

} 我们如何来访问对象中的它自己的属性和方法呢? 格式:对象.属性;

对象.方法名();

这一点也验证了面向对象编程的侧重点在于“对象”上;

texi.wheel;

texi.run()*********************************************************************************************************************************************************************************************************************************************

1.封装:

从字面可以解读为将东西封起来再装好。要想拿到里面的东西就得有相应的方法打开,才能拿到。

举例来说:一个房间的门如果没有上锁,那么大家都可以进去拿东西,但现在我们不想让谁都进来拿东西,我们可以将房门上锁,只对外提供一把钥匙,只有有钥匙的人才能进来,这就是“封装”现象!

在java程序中,“封装”现象如何实现呢?

可以这样实现:将类中的一些属性和方法用private关键字修饰,将他们“私有化(即不对外直接公开)”,使外部其他类不能通过创建该类对象或通过类名直接访问这些属性和方法;只对外提供公有的方法,外部其他类必须通过该类对外提供的公有方法来访问该类的相应成员;例如: class Person{

private String name;//将name属性私有化(封装)[相当于了上锁]使外部其他类不能直接访问到

public SetName(String name){//对外提供公有方法(相当于房门钥匙)供外部其他类访问到本类属性

this.name=name;

} }

2.继承:

从字面来说继承就是子父类关系的简称,就是儿子(女儿也行,好吧)会继承老爸的一些属性和行为

在java中如何描述继承关系呢?

注意:

第一得知道在java中继承是类与类之间或者是接口与接口之间才有继承关系;通过extends关键字来描述继承关系 例如:老爸这个类 class Dad{

String sex=man;

void smoke(){

System.out.println(“老子会抽烟!”);

} } 那么我们怎么来让儿子这个类继承老爸这个类呢?

class Son extends Dad{//通过extends关键字儿子这个类就继承老爸这个类了

String name;//定义自己的属性

String sex=man;//继承过来的属性,无须再定义,这里写出来是为了好理解

void smoke(){//继承过来的方法,无须再定义,这里写出来是为了好理解

System.out.println(“老子会抽烟!”);

}

void playBall(){//定义自己的方法

System.out.println(“儿子即会打球又会抽烟!”);

}

void somke(){//重写的方法

System.out.println(“我不抽20块以下的烟”);

}

void smoke(int n){//重载的方法

System.out.println(“我抽了+n+”年的烟了“);

} } 那么具有继承关系的两个类有什么特点呢?

1)子类会将父类的属性和方法继承过来,当然子类也可以自己定义的属性和方法 2)当子类自己定义的方法和父类继承过来的方法相同时会发生“重写“现象!3)父类用private关键字私有的方法是不能被继承的!4)子类可以使用super访问父类的属性和方法 5)子类通过重写父类方法,修改父类的功能 6)子类构造器一定调用父类的无参构造器 7)构造器不能继承

3.多态:

字面意思就是多种形态,也就是说一种事物同时局部多种形态.注意:要出现多态情况,那么类和类之间一定得是继承关系,或者类和接口是实现关系 我觉得:在java中多态是相对于一个对象而言的,就是父类型引用变量引用子类对象,并且父类型引用变量可以接受不同子类的对象 例如:拿上面的举例

Dad uncle=new Son();父类引用变量uncle即具备Son类的成员又具备父类的成员;这也称为“向上造型”; 多态时的特点

1)多态时访问成员变量,如uncle.name;编译时看等号左边,父类有该成员变量则编译通过,否则编译出错!运行时也看等号左边,有则运行结果 2)多态时访问方法,如uncle.smoke()编译时看等号左边,父类有该成员方法则编译通过,否则编译出错!运行时看等号右边,父类有该方法,子类没有该方法执行父类方法;父类有该方法,子类也有该方法执行子类方法 3)多态时访问静态方法 编译运行都看等号左边

******************************************************************************************************************************************************************************************************************************************************************

4.抽象(有争议):

什么是抽象?

抽象就是不具体。

一般我们把不能具体描述的东西约定俗成为“抽象”的东西。例如:我们说一个人长得很“抽象”,n你想你能具体形容描述出来么? 在JAVA中如何描述抽象这个概念呢?

我觉得在java中抽象类是由抽象方法而衍生出来的,为什么呢?

因为Java规定一个类中定义了抽象方法那这个类就跟着必须定义为抽象类,而不是因为先定义抽象类再跟着规定抽象类中的方法必须是抽象的,可能最后理解的结果是一样的但性质是不一样的(个人理解)简单说:就是有抽象方法的类一定是抽象类,但是抽象类中不一定都是抽象方法,也可以有具体方法。首先就是当我要在一个类定义一个方法时,暂时我不知道该方法具体功能是什么;等我想好了我在用他实现一个功能时我再具体描述他功能,这样我们就可以将这个方法用abstract关键字修饰定义为抽象方法

(还有一点也就是什么时候定义抽象类的?也可以说抽象类是向上抽取而来的,就是几个类据有共同的属性和方法,不想每个类都定义一次,那么定义一个公有类(即抽象类)其他类只要继承抽象类再重写方法就行!)

例如:我有一百块钱,现在我不知道怎么用,等我想好了在具体怎么用!abstract class Money{//因为有了抽象方法所以必须定义为抽象类

public abstract void buySomthing();//现在不知道怎么用,那就把它的功能代码体去掉 } //现在我饿了,想买东西吃了,我就知道怎么用了 class Hungry extends Money{

void buySomething(){

System.out.println(”我饿了,现在我要买东西吃!“)

} } 抽象类的特点

1)抽象类不能实例化 2)抽象类可以继承抽象类

3)继承抽象类必须得重写抽象方法

5.抽象类,接口,普通类 的不同点和相同点?

1)不同点:

普通类

接口

抽象类 可以直接实例化对象

不可以直接实例化对象

不可以直接实例化对象

可以定义任何成员

只能定义抽象成员方法和常量

成员方法必须定义为抽象其他和普通类相同

可以被继承

类可以实现接口,且可以实现多个接口

可以被继承

接口可以继承多个接口

抽象类有构造方法,接口中不能有

抽象类有普通成员变量,接口中没有

抽象类可以有非抽象方法,接口中不能有

抽象类可以用public、protected修饰,接口中只能public(默认public)

抽象类包含静态方法,接口中没有

接口中的变量只能是public static final,抽象类中可以是任意类型修饰

2)相同点:都可以用于描述(封装)事物的,内部类分为哪几种?分别如何创建对象? 分为 局部内部类,匿名内部类...3种

1)外部类名.内部类名 对象名=new 外部类名().new 内部类名()2)外部类名.内部类名 对象名=外部类名.new 内部类名()3)....不记得了第3种 匿名内部类

二、集合集合的定义?

集合:用来保存一组数据的数据结构

集合的父接口,实现接口,实现类,实现类的常用方法是什么?(建议以树状图画出来,便于加深印象)。

Collection

list

set

Arraylist

LinkedList

HashSet TreeSet

1.List集合

List集合的特征是元素可重复且有序 ;我们可以把他看成是一个动态数组,一般通过下标访问

ArrayList和LinkedList最常用的两个子类实现 1)list可以使用for循环遍历 for(int i=;i

list.get(i);} 2)list的浅层复制

调用ArraryList.clone()方法

注意:不能使用list.clone(),clone()方法是Object类的方法,list是接口是不能继承Object类的

2.Set集合: 不重复且无序集

遍历set只能迭代器,用迭代器遍历集合遵循的操作原则:先问后取。问一次取一次。Iterator it=set.iterator();while(it.hashnext()){

E e=it.next();} 3)map表

Map存储数据使用key-value(键-值)对的形式存储数据的。

对于Map而言,要求key值是唯一的。value值可以重复

获取数据时,使用key可以获取其对应的value 遍历map有3种方法 1)遍历key

Set keySet = map.keySet();

for(String key:keySet){

System.out.println(”key:“ + key);

//可以根据每一个key获取其对应的value值

int value = map.get(key);2)遍历value Collection values = map.values();

Iterator it = values.iterator();

while(it.hasNext()){

int value = it.next();//不能采用 map.next()

System.out.println(”value:“ + value);注意:通过迭代器在遍历集合的过程中,不能通过集合(即不能采用 map.next())去改变集合元素数量

3)遍历键值对

Set> entries= map.entrySet();

for(Entry entry : entries){

//获取一组键值对的键和值

String key = entry.getKey();

int value = entry.getValue();

System.out.println(key + ”=" + value);

Collection接口方法的定义

这里我主要列举 Iterator iterator()方法的使用

Collection提供的方法 Iterator iterator()方法来获取迭代器 Iterator是一个接口,定义了遍历集合应有的方法。

使用迭代器遍历集合遵循的操作原则:先问后取。问一次取一次。

问:boolean hashNext()

取:Object next()

迭代器可以将取出的数据删除掉

删:remove()将当前获取的元素删除掉。

注意:1)删除的是next()取出的元素。且只能删除一次!

达内生产实习报告 篇8

获奖学员:陈启壮 所获奖项:三等奖 内容

俄罗斯方块一共三个类中间用等号隔开 软件的开发过程 明确业务需求

用自然语言,将业务功能描述清楚

...2 业务分析

找到有哪些业务对象,和图片的分析

tetris(俄罗斯方块)

|-- score 累计分数

|-- lines 销毁的行数

|-- Wall(墙 20行x10列)

|-- 20row(行)

|--10 col cell(列)

|-- tetromino(4格方块,有7种形态)

|-- 4 cell

|--nextOne 下一个准备下落的方块

|-- 4 cell 数据模型,一切业务对象转换为数字表示

场地按照行列划分为20x10格子

格子有属性row,col,color 4 类 设计

Tetris

|--int score

|--int lines

|--Cell[20][10] wall

|--Tetromino tetromino

|

|--Cell[4] cells

|--row

|--col

|--color 5 算法设计,就是如何利用数据的计算实现软件的功能

4格方块的初始形态: I S Z J L T O

就在初始数据的数值状态设计

四格方块的下落计算:就是将每个格子的row+1

就是将下落的业务功能,转换为数字计算实现

左右移动

下落流程控制:控制方块下落与墙之间的控制关系

1 合理的文字流程描述

2 分析文字描述中的功能(动作)为方法

3 用流程控制语句连接方法实现功能 严格测试结果!TestCase 左右移动流程控制

分数计算

界面的绘制

键盘事件控制

旋转流程控制

加速下降流程控制

开始流程控制(Timer)

暂停流程控制

继续流程控制

结束流程控制

首先是Cell类,最基本的类包含3个私有属性和get,set方法,重写Object类的toString输出方法,并规定格子所具有的3个移动功能 package com.tarena.tetris;//包:小写英文字母,域名倒写.项目名 /** * 最小的格子

*/ public class Cell{

private int row;

private int col;

private int color;

public Cell(int row, int col, int color){

super();

this.row = row;

this.col = col;

this.color = color;

}

public int getCol(){

return col;

}

public void setCol(int col){

this.col = col;

}

public int getColor(){

return color;

}

public void setColor(int color){

this.color = color;

}

public int getRow(){

return row;

}

public void setRow(int row){

this.row = row;

}

public void left(){

col--;

}

public void right(){

col++;

}

public void drop(){

row++;

}

public String toString(){

return row+“,”+col;

} } =============================================================== package com.tarena.tetris;import java.util.Arrays;import java.util.Timer;import java.util.TimerTask;

import javax.swing.JPanel;//是能够显示的矩形面板区域 import javax.swing.JFrame;//窗口框

import javax.swing.border.LineBorder;//实现边框 import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.KeyAdapter;import java.awt.event.KeyListener;import java.awt.event.KeyEvent;/* * 俄罗斯方块类

* 俄罗斯方块 扩展了(extends)系统的显示面板,增加了墙和

* 正在下落的方块

* */ public class Tetris extends JPanel{

public static final int ROWS = 20;

public static final int COLS= 10;

/*代表方块下落着陆的墙*/

private Cell[][] wall = new Cell[ROWS][COLS];

/*是正在下落的方块*/

private Tetromino tetromino;

/*下一个进入的方块*/

private Tetromino nextOne;

private static int score;

private int lines;

Timer timer;

private boolean gameOver = false;

private boolean pause = false;//暂停

private static final int[] SCORE_LEVEL={0,1,4,10,100};

private static final Graphics Graphics = null;

/*销毁(destory)满行*/

//

0 1 2 3 4

/*在Tetris中添加方法,检查游戏是否结束*/

public void rotateRightAction(){

tetromino.rotateRight();

if(outOfBounds()||coincide()){

tetromino.rotateLeft();

}

}

public void rotateLeftAction(){

tetromino.rotateLeft();

if(outOfBounds()||coincide()){

tetromino.rotateRight();

}

}

/*在Tetris中添加方法,检查游戏是否结束*/

private boolean gameOver(){

gameOver = wall[0][4]!=null;

return gameOver;

}

/*在Tetris中添加方法*/

public void hardDropAction(){

while(canDrop()){

tetromino.softDrop();

}

tetrominoLandToWall();

destroy();

if(gameOver()){

gameOverAction();

}

nextTetromino();

}

public void destroy(){

int lines = 0;//统计本次销毁的行数

for(int row = 0;row

Cell[] line = wall[row];

if(fullCell(line)){

clearLine(row,wall);

lines++;//每消除一行就累计加1

}

}

score += SCORE_LEVEL[lines];

this.lines +=lines;

}

public static void clearLine(int row,Cell[][] wall){

for(int i=row;i>1;i--){

System.arraycopy(wall[i-1],0,wall[i],0,wall[i].length);

}

Arrays.fill(wall[0],null);

}

public static boolean fullCell(Cell []line){

for(int col = 0;col

if(line[col]==null){

return false;//找到空格子,这行没有满

}

}

return true;

}

public String toString(){//显示全部的墙

String str = “";

for(int row = 0;row

Cell[] line = wall[row];

for(int col = 0;col

Cell cell = line[col];

if(tetromino.contains(row,col)){

str +=row+”,“+col+” “;

}else{

str = str + cell + ” “;

}

}

str +=”n“;

}

return str;

}

/*4格方块下降流程

* 方块移动到区域最下方或是着地到其他方块上无法移动时,* 就会固定到该处,而新的方法快出现在区域上方开始下落。

* 如果能下降就继续下降,* 否则就着陆到墙上,并且生成(随机)下一个方块

* */

public void softDropAction(){

if(canDrop()){//如果能下降

tetromino.softDrop();//方块继续下降

}else{

tetrominoLandToWall();//着陆到墙上

destroy();//

if(gameOver()){

gameOverAction();

}

nextTetromino();//生产(随机)下一个方块

}

}

private void startGameAction(){

gameOver = false;

pause = false;

score = 0;

lines = 0;

emptyWall();

nextTetromino();

repaint();

timer = new Timer();

timer.schedule(new TimerTask(){

public void run(){

softDropAction();

repaint();

}

}, 500, 500);

}

private void emptyWall(){

for(int row=0;row

Arrays.fill(wall[row],null);

}

}

/*清理游戏结束现场,如:停止定时器等*/

private void gameOverAction(){

timer.cancel();//停止定时器

}

/*检查 方块 是否能够继续下落:到底最低部,或者墙上

* 的下方有方块,返回false不能下降,返回true可以下降

* */

public boolean canDrop(){

//检查到底部

Cell[] cells = tetromino.getCells();

for(Cell cell:cells){

if(cell.getRow()==ROWS-1){

return false;

}

}

//检查墙上下方是否有方块

for(Cell cell:cells){

int row = cell.getRow();

int col = cell.getCol();

Cell block = wall[row+1][col];

if(block!=null){

return false;

}

}

return true;

}

/*方块“着陆”到墙上,* 取出每个小cell

* 找到cell的行号row和列号col

* 将cell放置到wall[row][col]位置上

* */

public void tetrominoLandToWall(){

Cell[] cells = tetromino.getCells();

for(Cell cell:cells){

int row = cell.getRow();

int col = cell.getCol();

wall[row][col] = cell;

}

}

/*生产(随机)下一个方块

* 1 下一个变为当前的* 2 随机产生下一个

* */

public void nextTetromino(){

if(nextOne==null){//第一次nextOne是null时候先生产一个

nextOne = Tetromino.randomTetromino();

}

tetromino = nextOne;//下一个变为当前的

nextOne = Tetromino.randomTetromino();//随机产生下一个

if(tetromino==null){//处理第一次使用时候下一个是null

tetromino=Tetromino.randomTetromino();

}

}

/*以格子为单位左右移动方块

* 1)如果遇到左右边界就不能移动了

* 2)如果与墙上的格子相撞就不能移动了

* 变通为:

* 1)先将方块左移动,* 2)检查(移动结果是否出界),或者(重合)

* 3)如果检查失败,就右移的回来

*

* */

public void moveLeftAction(){

tetromino.moveLeft();

if(outOfBounds()|| coincide()){

tetromino.moveRight();

}

}

private boolean outOfBounds(){

Cell[] cells = tetromino.getCells();

for(int i = 0;i < cells.length;i++){

Cell cell = cells[i];

int row = cell.getRow();

int col = cell.getCol();

if(row == ROWS||col<0||col>=COLS){

return true;

}

}

return false;

}

private boolean coincide(){

Cell[] cells = tetromino.getCells();

for(int i = 0;i < cells.length;i++){

Cell cell = cells[i];

int row = cell.getRow();

int col = cell.getCol();

if(row >0&&row0

&&wall[row][col]!=null){

return true;//重合 }

}

return false;

}

public void moveRightAction(){

tetromino.moveRight();

if(outOfBounds()|| coincide()){

tetromino.moveLeft();

}

}

public static final int CELL_SIZE = 25;

/*在Tetris.java中添加main方法 作为软件的启动方法*/

public static void main(String []args){

JFrame frame = new JFrame(”俄罗斯方块“);

int wigth =(COLS+8)*CELL_SIZE +100;

int height =ROWS*CELL_SIZE +100;

frame.setSize(wigth,height);

frame.setLocationRelativeTo(null);//居中

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口就关闭软件

frame.setLayout(null);//取消默认布局,取消自动充满

Tetris panel = new Tetris();

panel.setLocation(45,25);

panel.setSize((COLS+8)*CELL_SIZE,ROWS*CELL_SIZE);

panel.setBorder(new LineBorder(Color.black));

frame.add(panel);//窗口中添加面板

frame.setVisible(true);//显示窗口时候调用paint()

panel.action();

}

/*动作方法,这里是让软件开始动作,*/

public void action(){

//wall[18][2] = new Cell(18,2,0xff0000);

startGameAction();

//重绘方法->尽快调用paint()

//startGameAction();

//this 是当前Tetris面板

this.requestFocus();//为当前面板请求获得输入焦点

//this对象就获得了输入焦点,以后任何的

//键盘输入(包括左右方向键)目标就是这个面板对象了!

//addKeyLIstener添加键盘监听,监听那些按键输入了

this.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){

int key = e.getKeyCode();//key按键

if(gameOver){

if(key==KeyEvent.VK_S){

startGameAction();//启动游戏开始流程

}

return;

}

if(pause){

if(key==KeyEvent.VK_C){

continueAction();

}return;

}

//System.out.println(”Type:“+e.getKeyCode());

switch(key){

case KeyEvent.VK_RIGHT :moveRightAction();break;

case KeyEvent.VK_LEFT :moveLeftAction();break;

case KeyEvent.VK_DOWN :softDropAction();break;

case KeyEvent.VK_UP :rotateRightAction();break;

case KeyEvent.VK_SPACE :hardDropAction();break;

case KeyEvent.VK_P :pasueAction();break;

}

//按键->方块移动方法->改变方块数据->repaint()

//->尽快调用paint()->利用新数据绘制

repaint();

}

private void continueAction(){

pause = false;

timer = new Timer();

timer.schedule(new TimerTask(){

public void run(){

softDropAction();

repaint();

}

}, 500, 500);

}

private void pasueAction(){

pause = true;

timer.cancel();

}

});

}

//JPanel 类利用paint(涂画)方法绘制界面

//子类重写paint方法可以修改绘图逻辑

public static final int BORDER_COLOR = 0x667799;

public static final int BG_COLOR = 0xC3D5EA;

public static final int FONT_COLOR = 0;

public void paint(Graphics g){

//g 代表绑定在当前面板上的画笔

//利用画笔在当前 面板上 绘制了一串字符!

paintBackground(g);//填充背景

paintWall(g);//绘制墙

paintTetromino(g);//绘制当前方块

paintNextOne(g);//绘制下一个方块

paintScore(g);//绘制分数

paintTetrisBorder(g);//绘制边线

}

private void paintScore(Graphics g){

int x = 12 * CELL_SIZE;

int y = 5 * CELL_SIZE;

Font font = new Font(getFont().getName(),Font.BOLD,25);

String str = ”分数: “+score;

g.setColor(new Color(FONT_COLOR));

g.setFont(font);

g.drawString(str, x, y);

y+=2*CELL_SIZE;

str = ”行数: “+lines;

g.drawString(str, x, y);

if(gameOver){

str = ”(T_T)![s]再来!“;

y+=2*CELL_SIZE;

g.drawString(str, x, y);

}

if(pause){

str = ”[c]继续!“;

y+=2*CELL_SIZE;

g.drawString(str, x, y);

}else{

str = ”[p]暂停!";

y+=2*CELL_SIZE;

g.drawString(str, x, y);

}

}

private void paintNextOne(Graphics g){

if(nextOne==null)//如果没有4格方块就返回,不绘制

return;

for(Cell cell : nextOne.getCells()){

int row = cell.getRow()+1;

int col = cell.getCol()+9;

int x = col*CELL_SIZE;

int y = row*CELL_SIZE;

g.setColor(new Color(cell.getColor()));

g.fillRect(x, y, CELL_SIZE, CELL_SIZE);

g.setColor(new Color(BORDER_COLOR));

g.drawRect(x, y, CELL_SIZE, CELL_SIZE);

}

}

private void paintTetromino(Graphics g){

if(tetromino==null)//如果没有4格方块就返回,不绘制

return;

for(Cell cell : tetromino.getCells()){

int row = cell.getRow();

int col = cell.getCol();

int x = col*CELL_SIZE;

int y = row*CELL_SIZE;

g.setColor(new Color(cell.getColor()));

g.fillRect(x, y, CELL_SIZE, CELL_SIZE);

g.setColor(new Color(BORDER_COLOR));

g.drawRect(x, y, CELL_SIZE, CELL_SIZE);

}

}

private void paintWall(Graphics g){

for(int row = 0;row

for(int col = 0;col < COLS;col++){

Cell cell = wall[row][col];

int x = col*CELL_SIZE;

int y = row*CELL_SIZE;

if(cell == null){

//g.setColor(new Color(BORDER_COLOR));

// g.drawRect(x, y,//

CELL_SIZE, CELL_SIZE);

}else{

g.setColor(new Color(cell.getColor()));

g.fillRect(x, y,CELL_SIZE, CELL_SIZE);

g.setColor(new Color(BORDER_COLOR));

g.drawRect(col*CELL_SIZE, row*CELL_SIZE,CELL_SIZE, CELL_SIZE);

}

}

}

}

private void paintBackground(Graphics g){

g.setColor(new Color(BG_COLOR));

g.fillRect(0, 0, getWidth(), getHeight());

}

private void paintTetrisBorder(Graphics g){

g.setColor(new Color(BORDER_COLOR));

g.drawRect(0, 0, CELL_SIZE*COLS, CELL_SIZE*ROWS-1);

g.drawRect(CELL_SIZE*COLS,0,CELL_SIZE*8-1, CELL_SIZE*ROWS-1);

} } =============================================================== package com.tarena.tetris;import java.util.Arrays;import java.util.Random;/* * 四格方块类,有7种子类:I T S Z J L O * */ public abstract class Tetromino {

public static final int I_COLOR =0xff6600;

public static final int T_COLOR =0xffff00;

public static final int S_COLOR =0x66ccff;

public static final int Z_COLOR =0x00ff00;

public static final int J_COLOR =0x0000ff;

public static final int L_COLOR =0xcc00ff;

public static final int O_COLOR =0xff0000;

protected Cell[] cells = new Cell[4];

/*四格方块的下落,是四个格子一起下落*/

public void softDrop(){

for(int i = 0;i

cells[i].drop();

}

}

/*向左移动一步*/

public void moveLeft(){

for(int i = 0;i

Cell cell = cells[i];//引用赋值

cell.left();

}

}

public void moveRight(){

//增强for循环,是传统数组迭代的“简化版本”,//也称为foreach循环(foreach迭代)(java 5以后)

for(Cell cell:cells){//底层实现就是经典迭代

cell.right();

}

}

public Cell[] getCells(){

return cells;

}

protected Offset[] states;//旋转的状态

protected class Offset{

int row0,col0;

int row1,col1;

int row2,col2;

int row3,col3;

public Offset(int row0, int col0, int row1,int col1, int row2, int col2,int row3, int col3){

this.row0 = row0;

this.col0 = col0;

this.row1 = row1;

this.col1 = col1;

this.row2 = row2;

this.col2 = col2;

this.row3 = row3;

this.col3 = col3;

}

}

private int index = 10000-1;

/*向右转*/

public void rotateRight(){

index++;

Offset offset = states[index%states.length];

Cell axis = cells[0];//找到轴(axis)的位置

cells[0].setRow(offset.row0+axis.getRow());

cells[0].setCol(offset.col0+axis.getCol());

cells[1].setRow(offset.row1+axis.getRow());

cells[1].setCol(offset.col1+axis.getCol());

cells[2].setRow(offset.row2+axis.getRow());

cells[2].setCol(offset.col2+axis.getCol());

cells[3].setRow(offset.row3+axis.getRow());

cells[3].setCol(offset.col3+axis.getCol());

}

public void rotateLeft(){

index--;

Offset offset = states[index%states.length];

Cell axis = cells[0];//找到轴(axis)的位置

cells[0].setRow(offset.row0+axis.getRow());

cells[0].setCol(offset.col0+axis.getCol());

cells[1].setRow(offset.row1+axis.getRow());

cells[1].setCol(offset.col1+axis.getCol());

cells[2].setRow(offset.row2+axis.getRow());

cells[2].setCol(offset.col2+axis.getCol());

cells[3].setRow(offset.row3+axis.getRow());

cells[3].setCol(offset.col3+axis.getCol());

}

/*随机生成一个具体方法*/

public static Tetromino randomTetromino(){

Random random = new Random();

int type = random.nextInt(7);//0~6

switch(type){

case 0:return new I();

case 1:return new T();

case 2:return new S();

case 3:return new J();

case 4:return new Z();

case 5:return new L();

case 6:return new O();

}

return null;

}

public String toString(){

return Arrays.toString(cells);

}

public boolean contains(int row, int col){

for(int i =0;i

Cell cell = cells[i];

if(cell.getRow()==row && cell.getCol()==col){

return true;

}

}

return false;

}

} class I extends Tetromino{

public I(){

cells[0] = new Cell(0,4,I_COLOR);

cells[1] = new Cell(0,3,I_COLOR);

cells[2] = new Cell(0,5,I_COLOR);

cells[3] = new Cell(0,6,I_COLOR);

states = new Offset[]{

new Offset(0,0,-1,0,1,0,2,0),new Offset(0,0,0,-1,0,1,0,2),};

} } class T extends Tetromino{

public T(){

cells[0] = new Cell(0,4,T_COLOR);

cells[1] = new Cell(0,3,T_COLOR);

cells[2] = new Cell(0,5,T_COLOR);

cells[3] = new Cell(1,4,T_COLOR);

states = new Offset[]{

new Offset(0,0,1,0,-1,0,0,1),new Offset(0,0,0,-1,0,1,1,0),new Offset(0,0,1,0,-1,0,0,-1),new Offset(0,0,0,1,0,-1,-1,0),};

} } class S extends Tetromino{

public S(){

cells[0] = new Cell(0,4,S_COLOR);

cells[1] = new Cell(0,5,S_COLOR);

cells[2] = new Cell(1,3,S_COLOR);

cells[3] = new Cell(1,4,S_COLOR);

states = new Offset[]{

new Offset(0,0,-1,0,1,1,0,1),new Offset(0,0,0,1,1,-1,1,0),};

} } class Z extends Tetromino{

public Z(){

cells[0] = new Cell(0,4,Z_COLOR);

cells[1] = new Cell(0,3,Z_COLOR);

cells[2] = new Cell(1,4,Z_COLOR);

cells[3] = new Cell(1,5,Z_COLOR);

states = new Offset[]{

new Offset(0,0,-1,1,0,1,1,0),new Offset(0,0,-1,-1,-1,0,0,1),};

} } class J extends Tetromino{

public J(){

cells[0] = new Cell(0,4,J_COLOR);

cells[1] = new Cell(0,3,J_COLOR);

cells[2] = new Cell(0,5,J_COLOR);

cells[3] = new Cell(1,5,J_COLOR);

states = new Offset[]{

new Offset(0,0,-1,0,1,0,1,-1),new Offset(0,0,0,1,0,-1,-1,-1),new Offset(0,0,1,0,-1,0,-1,1),new Offset(0,0,0,-1,0,1,1,1),};

} } class L extends Tetromino{

public L(){

cells[0] = new Cell(0,4,L_COLOR);

cells[1] = new Cell(0,3,L_COLOR);

cells[2] = new Cell(0,5,L_COLOR);

cells[3] = new Cell(1,3,L_COLOR);

states = new Offset[]{

new Offset(0,0,-1,0,1,0,-1,-1),new Offset(0,0,0,1,0,-1,-1,1),new Offset(0,0,1,0,-1,0,1,1),new Offset(0,0,0,-1,0,1,1,-1),};

} } class O extends Tetromino{

public O(){

cells[0] = new Cell(0,4,O_COLOR);

cells[1] = new Cell(0,5,O_COLOR);

cells[2] = new Cell(1,4,O_COLOR);

cells[3] = new Cell(1,5,O_COLOR);

states = new Offset[]{

new Offset(0,0,0,1,1,0,1,1),new Offset(0,0,0,1,1,0,1,1),};

上一篇:市场调查与预测选择题下一篇:开展形势政策教育计划