第一篇:如何编写论文
毕业论文的撰写及答辩是学生毕业的必备条件,是高等职业教育中专业教育的重要组成部分,是学习阶段“收束”的标志,是每个学生专业知识运用与创新的重要体现。它是应考者的总结性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际问题的能力。
撰写地质类专业毕业论文一般有以下几个步骤:选定生产(毕业)实习地实习→在实际工作中有目的地收集资料→据收集资料及个人情况确定主题、标题→归纳整理资料并拟定论文提纲→据提纲编写论文初稿→反复修改→定稿。
一、生产(毕业)实习地的选择
生产(毕业)实习,是专业教育中的重要组成部分,是培养学生动手能力、分析问题、解决问题能力的专业教学环节之一,是搞好毕业设计、写好毕业论文的先决条件,是走上工作岗位前的“真刀真枪”的大演习。生产(毕业)实习能否完成,完成的好坏,一取决于所选择的实习地,二取决于学生本身。理想的实习地,一方面,学生有机会熟悉地质工作的各个环节,一旦正式走上工作岗位,很快就能顶岗工作;另一方面,能收集较多有用资料,对论文的撰写奠定好基础。实习地应选择有具体的生产任务,工作程度较高,设备工艺较为先进并具有代表性的工矿或地勘单位,学生直接加入到生产或管理中,聘请既具专业理论知识又具实践经验的工程师、高级工程师为实习指导教师。在指导教师指导下,学生应亲自参与生产、管理或科研等项目工作,深入野外生产一线调研,收集第一手资料。
二、在实习过程中,有目的有针对性地收集资料
收集资料、占有资料、综合整理资料、用好资料是本专业写好毕业论文的关键,它贯穿论文撰写的始终。在实习过程中,根据自己的特长、专业方向或拟撰写论文内容,有目的、有针对性的收集资料。如拟撰写地质勘查或找矿理论方面的论文,就要对区域地质、矿区地质、矿床地质、矿体特征、以往勘探设计、报告等所有地质工作资料,尽可能全面而详尽的收集;如拟撰写地质工作管理方面的论文,则要对实习地地质工作状况、现行管理制度、体制、运作情况、取得成绩、存在问题、改进措施、改进效果等资料进行收集。
本专业收集的资料主要有:
1.书刊资料:一是主要论述专业基础理论、基本方法的书籍;二是主要介绍地质科技、地质管理、地质研究动态以及地学领域新技术、新理论、新工艺、新方法的有关刊物。
2.实际资料:勘探设计、报告、样品测试报告单、工作总结、工作报表等有关资料,以及野外调查记录手薄、照片、素描图等均是第一手的实际资料。这类材料虽较零散,但却非常重要,是论文强有力的证据,不可忽视。可以这样说,没有这些实际资料,地质类专业毕业论文(设计)是无法撰写的,但不必要也不可能全部收集,要有所侧重,去粗取精,选能说明问题、具代表性的资料。
三、确定论文主题,拟定论文标题
确定论文主题,不仅要选择研究的某个方面,而且要确定文章的主题思想。应该说,选题的过程,就是据可采用资料明确主题思想的过程,就是在某一研究领域集中目标、形成初步观点的过程。论文主题的选定需花费一番功夫,一定意义上讲,论文主题选准了,文章起码完成了三分之一,剩下的就是充分利用现有资料,分析、阐述论点的问题了。选定论
文主题时,需要注意以下几点:
一是明确选题目的。最好选择与本学科基本理论、基本技能、基本方法有密切联系,又对学科发展和实际工作有迫切现实意义的问题,如:矿床地质特征、矿床成因探讨、找矿远景分析、矿床技术经济评价、勘查设计、勘查报告、矿产资源开发及利用、矿产资源管理、工作中存在问题的分析、工艺改进措施及建议、地质灾害防治及治理等等都与专业有关,紧密联系实际工作或在工作中迫切需要解决的问题,相关资料也较多。
二是要了解本专业学术动态。写论文总是要在前人或他人资料、研究成果的基础上增加一些新的东西,只有了解当前地学领域学术的新动向,才能有所创意,写出高水平的论文。
三是要掌握选题原则。选题应量力而行,注意扬长避短,论题不要太大,因为论文份量的轻重和论题的大小不一定成正比,大题可以小作,小题同样可以大作。一般来说,专科毕业论文选题应小一点、实一点为好,这样资料不必太多,也不需要进行多方面的论证,写起文章来也比较容易驾驭。
四是应选自己有一定基础、有准备(写作意向及所收集资料情况)、有兴趣的题目,切忌人云亦云,不考虑自己的具体情况。
论题选定后,拟定论文标题。标题是对全文思想内容最鲜明、最精炼的概括,是给读者的第一印象。标题应确切、生动、简洁,力求直接点出论文的中心论点,对全文起到画龙点睛的作用。
四、拟定论文提纲
草拟提纲的过程,是整理资料、整理思想、进行构思的过程。通过草拟提纲,可以规划基本内容,搭好基本框架,使思路明确化、条理化,还可以发现构思的缺陷、材料的不足(此时应进行资料的补充)、论据的不充分、思路的不清晰。论文提纲一般应包括文章的基本论点和主要论据,反映文章的体系结构。简单地说,要列出一级标题、二级标题,如有需要再作一些说明。
地质类专业毕业论文,一般应据主题内容,将所收集资料进行综合整理,据资料情况拟定论文提纲,在拟定论文提纲时,一定要考虑自己所掌握资料的情况,没有或不全的资料,就不必写此内容。如有关矿产方面的保密性资料无法取得,提纲中就应考虑放弃或据资料情况少写,不可牵强。
提纲拟定后,就为论文描绘了轮廓,为论文的撰写铺平了路。将拟定提纲交指导教师审定后即可着手论文的编写。
五、撰写初稿,反复修改
撰作论文初稿,是形成观点,并把观点明确、科学地表达出来的过程。文章能否如愿写出,关键还在个人的匠心独运。
完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。
第一、要坚持选择有科学价值和现实意义的课题。第二、要根据自己的能力选择切实可行的课题。
研究课题一般程序是:搜集资料、研究资料,明确论点和选定材料,最后是执笔撰写、修改定稿。通读即对全文进行阅读,选读即对有用部分、有用内容进行阅读,研读即对与研究课题有关的内容进行全面、认真、细致、深入、反复的阅读。在研读过程中要积极
思考。要以书或论文中的论点、论据、论证方法与研究方法来触发自己的思考,要眼、手、脑并用,发挥想象力,进行新的创造。在研究资料时,还要做好资料的记录。
第三、研究课题的核心工作―――明确论点和选定材料。在研究资料的基础上,考生提出自己的观点和见解,根据选题,确立基本论点和分论点。提出自己的观点要突出新创见,创新是灵魂,不能只是重复前人或人云亦云。根据已确立的基本论点和分论点选定材料,这些材料是自己在对所搜集的资料加以研究的基础上形成的。组织材料要注意掌握科学的思维方法,注意前后材料的逻辑关系和主次关系。
四、研究课题的关键工作―――执笔撰写。考生下笔时要对以下两个方面加以注意:拟定提纲和基本格式。拟定提纲包括题目、基本论点、内容纲要。拟定提纲有助于安排好全文的逻辑结构,构建论文的基本框架。基本格式:一般毕业论文由标题、摘要、正文、参考文献等4方面内容构成。标题要求直接、具体、醒目、简明扼要。摘要即摘出论文中的要点放在论文的正文之前,以方便读者阅读,所以要简洁、概括。正文是毕业论文的核心内容,包括绪论、本论、结论三大部分。绪论部分主要说明研究这一课题的理由、意义,要写得简洁。要明确、具体地提出所论述课题,有时要写些历史回顾和现状分析,本人将有哪些补充、纠正或发展,还要简单介绍论证方法。本论部分是论文的主体,即表达作者的研究成果,主要阐述自己的观点及其论据。这部分要以充分有力的材料阐述观点,要准确把握文章内容的层次、大小段落间的内在联系。篇幅较长的论文常用推论式(即由此论点到彼论点逐层展开、步步深入的写法)和分论式(即把从属于基本论点的几个分论点并列起来,一个个分别加以论述)两者结合的方法。结论部分是论文的归结收束部分,要写论证的结果,做到首尾一贯,同时要写对课题研究的展望,提及进一步探讨的问题或可能解决的途径等。参考文献即撰写论文过程中研读的一些文章或资料,要选择主要的列在文后。
第五、研究课题的保障工作―――修改定稿。总之,撰写毕业论文是一种复杂的思维活动,对于缺乏写作经验的自考生来说,确有一定的难度。因此,考生要“学习学习再学习,实践实践再实践”,虚心向指导教师求教。
第二篇:石油论文编写格式
科技论文的编写格式1.章、条、条、条的编号
按国家标准《标准化工作导则第1单元:标准的起草与表述规则第1部分:标准编写的基本规定》的规定,科技论文的章、条、条、条的划分、编号和排列均应采用阿拉伯数字分级编写,即一级标题的编号为1,2,…;二级标题的号为1.1,1.2,…,2.1,2.2,…;三级标题的编号为1.1.1,1.1.2,…,如此等等,详细参见GB/T1.1-93和GB7713-87。
国标规定的这一章条编号方式对著者、编者和读者都具有显著的优越性。
2.题名(篇名)
题名是科技论文的必要组成部分。它要求用最简洁、恰当的词组反映文章的特定内容,把论文的主题明白无误地告诉读者,并且使之具有画龙点睛,启迪读者兴趣的功能。一般情况下,题名中应包括文章的主要关键词。总之,题名的用词十分重要,它直接关系到读者对文章的取舍态度,务必字字斟酌。题名像一条标签,切忌用冗长的主、谓、宾语结构的完整语句逐点描述论文的内容,以保证达到“简洁”的要求;而“恰当”的要求应反映在用词的中肯、醒目、好读好记上。当然,也要避免过分笼统或哗众取宠的所谓简洁,缺乏可检索性,以至于名实不符或无法反映出每篇文章应有的主题特色。
题名应简短,不应很长,国际上不少著名期刊都对题名的用字有所限制。对于我国的科技期刊,论文题名用字不宜超过20个汉字,外文题名不超过10个实词。使用简短题名而语意未尽时,或系列工作分篇报告时,可借助于副标题名以补充论文的下层次内容。
题名应尽量避免使用化学结构式、数学公式、不太为同行所熟悉的符号、简称、缩写以及商品名称等。
3.著者
著者署名是科技论文的必要组成部分。著者系指在论文主题内容的构思、具体研究工作的执行及撰稿执笔等方面的全部或局部上做出主要贡献的人员,能够对论文的主要内容负责答辩的人员,是论文的法定主权人和责任者。署名人数不宜太多,对论文涉及的部分内容作过咨询、给过某种帮助或参与常规劳动的人员不宜按著者身份署名,但是可以注明他们曾参与了哪一部分具体工作,或通过文末致谢的方式对他们的贡献和劳动表示谢意。
合写论文的诸著者应按论文工作贡献的多少顺序排列。著者的姓名应给出全名。科学技术文章一般均用著者的真实姓名,不用变化不定的笔名。同时还应给出著者完成研究工作的单位或著者所在的工作单位或通信地址,以便读者在需要时可与著者联系。
[示例]:
熊易群1,贾改莲2,钟小锋1,刘建君1
(1陕西师范大学教育系,陕西西安710062;2陕西省教育学院教育系,陕西西安710061)
4.摘要
摘要是现代科技论文的必要附加部分,只有极短的文章才能省略。它是解决读者既要尽可能掌握浩瀚的信息海洋,又要面对自身精力十分有限这一对矛盾的有效手段。
根据GB6447-86的定义,摘要是以提供文献内容梗概为目的,不加评论和补充解释,简明确切地记述文献重要内容的短文。
摘要有两种基本写法:报道性摘要--指明一次文献的主题范围及内容梗概的简明摘要(也称简介);指示性摘要--指示一次文献的陈述主题及取得的成果性质和水平的简明摘要。介乎其间的是报道/指示性摘要--以报道性摘要形式表述一次文献中信息价值较高的部分,而以指示性摘要形式表述其余部分的摘要。一般的科技论文都应尽量写成报道性摘要,而对综述性、资料性或评论性的文章可写成指示性或报道/指示性摘要。
摘要应简明,它的详简程度取决于文献的内容。通常中文摘要以不超过400字为宜,纯指示性摘要可以简短一些,应控制在200字上下(GB6447-86规定:报道性摘要和报道/指示性摘要一般以400字为宜;指示性摘要一般以200字左右为宜。GB7713-87规定:中文摘要一般不宜超过200~300字;外文摘要不宜超过250个实词。如遇特殊需要字数可以略多)。对于使用英、俄、德、日、法以外文种书写的一次文献,它们的摘要可以适当详尽一些。学位论文等文献具有某种特殊性,为了评审,可写成变异式的摘要,不受字数的限制。摘要的编写应该客观、真实,切忌掺杂进编写者的主观见解、解释和评论。如果发现一次文献有原则性错误,可加注“摘者注”。
摘要应具有独立性和自明性,并拥有与一次文献同等量的主要信息,即不阅读文献的全文,就能获得必要的信息。因此摘要是一种可以被引用的完整短文。
[编写摘要的注意事项]:
① 排除在本学科领域方面已经成为常识的内容;
② 不得简单地重复文章篇名中已经表述过的信息;
③要求结构严谨,语义确切,表述简明,一气呵成,一般不分或力求少分段落;忌发空洞的评语,不作模棱两可的结论。没有得出结论的文章,可在摘要中作扼要的讨论。
④ 要用第三人称,不要使用“作者”、“我们”等作为摘要陈述的主语;
⑤要采用规范化的名词术语。尚未规范化的,以采用一次文献所采用的为原则。如新术语尚无合适的中文术语译名,可使用原文或译名后加括号注明原文;
⑥不要使用图、表或化学结构式,以及相邻专业的读者尚难于清楚理解的缩略语、简称、代号。如果确有必要,在摘要首次出现时必须加以说明;
⑦ 不得使用一次文献中列出的章节号、图号、表号、公式号以及参考文献号等;
⑧ 必要提及的商品名应加注学名。
当然,应该使用法定计量单位以及正确地书写规范字和标点符号。
摘要的书写要求详细见国标GB6447-86。
5.关键词
为了便于读者从浩如烟海的书刊中寻找文献,特别是适应计算机自动检索的需要,GB3179/T-92规定,现代科技期刊都应在学术论文的摘要后面给出3~8个关键词。关键词的标引应按GB3860-83《文献主题标引规则》的规定,在审读文献题名、前言、结论、图表,特别是在审读文献的基础上,逐篇对文献进行主题分析,然后选定能反映文献特征内容,通用性比较强的关键词。首先要选取列入《汉语主题词表》、《MeSH》等词表中的规范性词(称叙词或主题词)。对于那些反映新技术、新学科而尚未被主题词表录入的新产生的名词术语,亦可用非规范的自由词标出,以供词表编纂单位在修订词表时参照选用。要强调的一点是:一定不要为了强调反映文献主题的全面性,把关键词写成是一句句内容“全面”的短语。
6.引言
引言(前言、序言、概述)经常作为论文的开端,主要回答“为什么研究(why)”这个问题。它简明介绍论文的背景、相关领域的前人研究历史与现状(有时亦称这部分为文献综述),以及著者的意图与分析依据,包括论文的追求目标、研究范围和理论、技术方案的选取等。引言应言简意赅,不要等同于摘要,或成为摘要的注释。引言中不应详述同行熟知的,包括教科书上已有陈述的基本理论、实验方法和基本方程的推导;除非是学位论文,为了反映著者的学业等等,允许有较详尽的文献综述段落。如果在正文中采用比较专业化的术语或缩写词时,最好先在引言中定义说明。
7.正文
正文是科技论文的核心组成部分,主要回答“怎么研究(how)”这个问题。正文应充分阐明论文的观点、原理、方法及具体达到预期目标的整个过程,并且突出一个“新”字,以反映论文具有的首创性。根据需要,论文可以分层深入,逐层剖析,按层设分层标题。
正文通常占有论文篇幅的大部分。它的具体陈述方式往往因不同学科、不同文章类型而有很大差别,不能牵强地做出统一的规定。一般应包括材料、方法、结果、讨论和结论等几个部分。
试验与观察、数据处理与分析、实验研究结果的得出是正文的最重要成分,应该给予极大的重视。要尊重事实,在资料的取舍上不应该随意掺入主观成分,或妄加猜测,不应该忽视偶发性现象和数据。
写科技论文不要求有华丽的词藻,但要求思路清晰,合乎逻辑,用语简洁准确、明快流畅;内容务求客观、科学、完备,要尽量让事实和数据说话;凡是用简要的文字能够讲解的内容,应用文字陈述。用文字不容易说明白或说起来比较繁琐的,应由表或图(必要时用彩图)来陈述。表或图要具有自明性,即其本身给出的信息就能够说明欲表达的问题。数据的引用要严谨确切,防止错引或重引,避免用图形和表格重复地反映同一组数据。资料的引用要标明出处。
物理量与单位符号应采用《中华人民共和国法定计量单位》的规定,选用规范的单位和书写符号;不得已选用非规范的单位或符号时应考虑行业的习惯,或使用法定的计量单位和符号加以注解和换算。
教科书式的撰写方法是撰写科技论文的第一大忌。对已有的知识避免重新描述和论证,尽量采用标注参考文献的方法;对用到的某些数学辅佐手段,应防止过分注意细节的数学推演,需要时可采用附录的形式供读者选阅。
8.结论
结论(或讨论)是整篇文章的最后总结。尽管多数科技论文的著者都采用结论的方式作为结束,并通过它传达自己欲向读者表述的主要意向,但它不是论文的必要组成部分。
结论不应是正文中各段小结的简单重复,主要回答“研究出什么(what)”。它应该以正文中的试验或考察中得到的现象、数据和阐述分析作为依据,由此完整、准确、简洁地指出:
① 由对研究对象进行考察或实验得到的结果所揭示的原理及其普遍性;
② 研究中有无发现例外或本论文尚难以解释和解决的问题;
③ 与先前已经发表过的(包括他人或著者自己)研究工作的异同;
④ 本论文在理论上与实用上的意义与价值;
⑤ 对进一步深入研究本课题的建议。
9.致谢
致谢一般单独成段,放在文章的最后面,但它不是论文的必要组成部分。它是对曾经给予论文的选题、构思或撰写以指导或建议,对考察或实验过程中做出某种贡献的人员,或给予过技术、信息、物质或经费帮助的单位、团体或个人致以谢意。一般对例外的劳动可不必专门致谢。
10.参考文献
文后参考文献是现代科技论文的重要组成部分,但如果撰写论文时未参考文献也可以不写。它是反映文稿的科学依据和著者尊重他人研究成果而向读者提供文中引用有关资料的出处,或为了节约篇幅和叙述方便,提供在论文中提及而没有展开的有关内容的详尽文本。任何不重视参考文献,甚至于使用“文后参考文献从略”的编辑处理方法都是错误的。
被列入的参考文献应该只限于那些著者亲自阅读过和论文中引用过,而且正式发表的出版物,或其他有关档案资料,包括专利等文献。私人通信、内部讲义及未发表的著作,一般不宜作为参考文献著录,但可用脚注或文内注的方式,以说明引用依据。国内外对文后参考文献的著录方法历来很多,但自从ISO制订国际标准以来已有渐趋一致的动向,目前,我国文献工作标准化技术委员会已经根据国际标准化工作发展趋势,制订出自己的国家标准--GB7714-87《文后参考文献著录规则》,明确规定我国的科技期刊采用国际上通行的“顺序编码制”和“著者-出版年制”。前者根据正文中引用参考文献的先后,按著者、题名、出版事项的顺序逐项著录;后者首先根据文种(按中文、日文、英文、俄文、其他文种的顺序)集中,然后按参考文献著的姓氏笔画或姓氏首字母的顺序排列,同一著者有多篇文献被参考引用时,再按文献出版年份的先后依次给出。
文后参考文献的著录形式还是比较复杂的,具体执行时请随时查阅GB7714-87的规定。
参考文献著录的条目以小于正文的字号编排在文末。其格式为:
专著、论文集、学位论文、报告--[序号]主要责任者.文献题名[文献类型标识].出版地,出版者,出版年,起止页码(任选)。
[示例]:
[1]周振甫.周易译注[M].北京:中华书局。1991。
[2]陈崧.五四前后东方西文化问题论战文选[C].北京:中国社会科学出版社,1985。
[3]陈桐生.中国史官文化与《史记》[D].西安:陕西师范大学文学研究所,1992。
[4]白永秀,刘敢,任保平.西安金融、人才、技术三大要素市场培育与发展研究[R].西安:陕西师范大学西北经济发展研究中心,1998。
期刊文章--[序号]主要责任者.文献题名[J].刊名,年,卷(期):起止页码。
[示例]:
[5]何龄修.读顾城《南明史》[J].中国史研究,1998,(3):167-173。
论文集中的析出文献--[序号]析出文献主要责任者.析出文献题名[A]。
原文献主要责任者(任选).原文献题名[C].出版地:出版者,出版年.析出文献起止页码。
[示例]:
[6]瞿秋白.现代文明的问题与社会主义[A].罗荣渠.从西化到现代化[c].北京:北京大学出版社,1990.121-133。
报纸文章--[序号]主要责任者.文献题名[N].报纸名,出版日期(版次)。
[示例]:
[7]谢希德.创造学习的新思路[N].人民日报,1998-12-25(10)。
国际标准、国家标准--[序号]标准编号,标准名称[S]。
[示例]:
[8]GB/T 16159-1996,汉语拼音正词法基本规则。
电子文献--[序号]主要责任者.电子文献题名[电子文献及载体类型标识]-电子文献的出处或可获得地址,发表或更新日期/引用日期(任选)。[示例]:
[9]王明亮.关于中国学术期刊标准化数据库系统工程的进展[EB/OL].http://,1998-08-16/1998-10-04。
[10]万锦坤.中国大学学报论文文摘(1983-1993).英文版[DB/CD].北京:中国大百科全书出版社,1996.各种未定类型的文献--[序号]主要责任者.文献题名[z].出版地:出版者,出版年。
[示例]:
[11]张永禄.唐代长安词典[z].西安:陕西人民出版社,1980。
11.附录
附录是论文的附件,不是必要组成部分。它在不增加文献正文部分的篇幅和不影响正文主体内容叙述连贯性的前提下,向读者提供论文中部分内容的详尽推导、演算、证明、仪器、装备或解释、说明,以及提供有关数据、曲线、照片或其他辅助资料如计算机的框图和程序软件等。
附录与正文一样,编入连续页码。
第三篇:技术论文编写技巧
齿轮箱滤油技术 题目是科技论文的中心和总纲。
要求准确恰当、简明扼要、醒目规范、便于检索。一篇论文题目不要超出20个字。用小2号黑体加粗,居中。
步骤阅读 2 署名
署名表示论文作者声明对论文拥有著作权、愿意文责自负,同时便于读者与作者联系。署名包括工作单位及联系方式。工作单位应写全称并包括所在城市名称及邮政编码,有时为进行文献分析,要求作者提供性别、出生年月、职务职称、电话号码、e-mail等信息。用小4号宋体
步骤阅读 3 摘要 摘要是对论文的内容不加注释和评论的简短陈述,是文章内容的高度概括。主要内容包括:
1)该项研究工作的内容、目的及其重要性。
2)所使用的实验方法。
3)总结研究成果,突出作者的新见解。
4)研究结论及其意义。
中文摘要200字左右,中文名称的“内容摘要”用小2号黑体加粗,居中,其内容另起一行用小4号宋体(1.5倍行距),每段起首空两格,回行顶格。
英文“内容提要”项目名称规定为“Abstract”,用小2号Times New Roman字体加粗,居中,其内容另起一行用小4号Times New Roman 字体,标点符号用英文形式。
步骤阅读步骤阅读 4 关键词
关键词是为了满足文献标引或检索工作的需要而从论文中萃取出的、表示全文主题内容信息条目的单词、词组或术语,一般列出3~8个。
有英文摘要的论文,应在英文摘要的下方著录与中文关键词相对应的英文关键词(key words)。
中文名称的 “关键词” 另起一行用小4号黑体加粗,内容用小4号黑体,一般不超过8个词,词间空一格。
英文“关键词” 另起一行,项目名称规定为“Key words”,用小4号Times New Roman 字体加粗,顶格,其内容接“Key words”后空一格,用小4号Times New Roman字体加粗,词间用分号“;”隔开。
步骤阅读 步骤阅读 引言
引言又称前言、导言、序言、绪论,它是一篇科技论文的开场白,由它引出文章,所以写在正文之前。引言也叫绪言、绪论。
引言的写作要求
(l)引言应言简意赅,内容不得繁琐,文字不可冗长,应能对读者产生吸引力。学术论文的引言根据论文篇幅的大小和内容的多少而定,一般为200~600字,短则可不足100字,长则可达1000字左右。
(2)比较短的论文可不单列“引言”一节,在论文正文前只写一小段文字即可起到引言的效用。
(3)引言不可与摘要雷同,不要写成摘要的注释。一般教科书中有的知识,在引言中不必赘述。
(4)学位论文为了需要反映出作者确已掌握了坚实的理论基础和系统的专门知识,具有开阔的科研视野,对研究方案作了充分论证,因此,有关于历史回顾和前人工作的综合评述,以及理论分析等,则可将引言单独写成一章,用足够的文字详细加以叙述。
(5)引言的目的应是向读者提供足够的背景知识,不要给读者悬念。作者在引言里不必对自己的研究工作或自己的能力过于表示谦意,但也不能自吹自擂,抬高自己,贬低别人。
引言的格式要求
项目名称用小2号黑体加粗,居中;内容另起一行用小4号宋体。每段起首空两格,回行顶格。步骤阅读
步骤阅读 6正文
正文是科技论文的主体,是用论据经过论证证明论点而表述科研成果的核心部分。正义占论文的主要篇幅,可以包括以下部分或内容:调查对象、基本原理、实验和观测方法、仪器设备、材料原料。实验和观测结果、计算方法和编程原理、数据资料、经过加工整理的图表、形成的论点和导出的结论等。
正文可分作几个段落来写,每个段落需列什么样的标题,没有固定的格式,但大体上可以有以下几个部分(以试验研究报告类论文为例)。
1)理论分析。
2)实验材料和方
3)实验结果及其分析
4)结果的讨论
具体要求有如下几点:
1)论点明确,论据充分,论证合理;
2)事实准确,数据准确,计算准确,语言准确;
3)内容丰富,文字简练,避免重复、繁琐;
4)条理清楚,逻辑性强,表达形式与内容相适应;
5)不泄密,对需保密的资料应作技术处理。
具体格式要求:
1)文字统一用5号宋体,每段起首空两格,回行顶格,多倍行距,设置值为1.25;
2)正文文中标题:
一级标题:标题序号为“
一、”,用小4号宋体加粗,独占行,末尾不加标点;
二级标题:标题序号为“(一)”,用5号宋体加粗,独占行,末尾不加标点;
三级标题:标题序号为“
1、”,用5号宋体加粗,若独占行,则末尾不加标点,若不独占行,标题后面须加句号;
四级标题:标题序号为“(1)”,用5号宋体,其余要求与三级标题相同;
五级标题:标题序号为“①”,用5号宋体,其余要求与三级标题相同。
注意:每级标题的下一级标题应各自连续编号。步骤阅读 7 结论
科技论文一般在正文后面要有结论。结论是实验、观测结果和理论分析的逻辑发展,是将实验、观测得到的数据、结果,经过判断、推理、归纳等逻辑分析过程而得到的对事物的本质和规律的认识,是整篇论文的总论点。结论的内容主要包括:研究结果说明了什么问题,得出了什么规律,解决了什么实际问题或理论问题;对前人的研究成果作了哪些补充、修改和证实,有什么创新;本文研究的领域内还有哪些尚待解决的问题,以及解决这些问题的基本思路和关键。
对结论部分写作的要求是:
1)应做到准确、完整、明确、精练。结论要有事实、有根据,用语斩钉截铁,数据准确可靠,不能含糊其辞、模棱两可。
2)在判断、推理时不能离开实验、观测结果,不作无根据或不合逻辑的推理和结论。
3)结论不是实验、观测结果的再现,也不是文中各段的小结的简单重复。
4)对成果的评价应公允,恰如其分,不可自鸣得意。证据不足时不要轻率否定或批评别人的结论,更不能借故贬低别人。
5)写作结论应十分慎重,如果研究虽然有创新但不足以得出结论的话,宁肯不写也不妄下结论,可以根据实验、观测结果进行一些讨论。
要求:
项目名称用小2号黑体加粗,居中;内容另起一行用小4号宋体。每段起首空两格,回行顶格。8 参考文献
在科技论文中,凡是引用前人(包括作者自己过去)已发表的文献中的观点、数据和材料等,都要对它们在文中出现的地方予以标明,并在文未(致谢段之后)列出参考文献表。这项工作叫做参考文献著录。
参考文献著录的原则
1)只著录最必要、最新的文献。
2)一般只著录公开发表的文献。
3)采用标准化的著录格式。
参考文献格式要求:
参考文献(即引文出处)的类型以单字母方式标识:M——专著,C——论文集,N——报纸文章,J——期刊文章,D——学位论文,R——报告,S——标准,P——专利;对于不属于上述的文献类型,采用字母“Z”标识。
参考文献一律置于文末。其格式为:
(一)专著
示例 [1] 张志建.严复思想研究[M].桂林:广西师范大学出版社,1989.(49).[2] [英]蔼理士.性心理学[M].潘光旦译注.北京:商务印书馆,1997.(二)论文集
示例 [1] 伍蠡甫.西方文论选[C].上海:上海译文出版社,1979.[2] [俄]别林斯基.论俄国中篇小说和果戈里君的中篇小说[A].伍蠡甫.西方文论选:下册[C].上海:上海译文出版社,1979.凡引专著的页码,加圆括号置于文中序号之后。
(三)报纸文章
示例 [1] 李大伦.经济全球化的重要性[N].光明日报,1998-12-27,(3)
(四)期刊文章
示例 [1] 郭英德.元明文学史观散论[J].北京师范大学学报(社会科学版),1995(3).(五)学位论文
示例 [1] 刘伟.汉字不同视觉识别方式的理论和实证研究[D].北京:北京师范大学心理系,1998.(六)报告
示例 [1] 白秀水,刘敢,任保平.西安金融、人才、技术三大要素市场培育与发展研究[R].西安:陕西师范大学西北经济发展研究中心,1998.主要参考文献的格式如下(其中空格、标点照写)
连续出版物 作者.文题 [J].刊名, 年, 卷(期): 起始页码-终止页码.2 专著(或译著)作者.书名 [M].译者.出版地: 出版者, 出版年.3 论文集 作者.文题 [A].编者.文集 [C].出版地: 出版者, 出版年.4 学位论文 作者.文题 [D].所在城市: 保存单位, 年.5 专利文献 申请者.专利名 [P].国名及专利号, 发布日期.6 技术标准 技术标准代号.技术标准名称 [S].7 技术报告 作者.文题 [R].报告代码及编号, 地名: 责任单位, 年份.8 报纸文章 作者.文题 [N].报纸名, 出版日期(版次).9 在线文献(电子公告)作者.文题 [EB/OL]. http://…, 日期.10 光盘文献(数据库)作者.文题 [DB/CD].出版地: 出版者, 出版日期.11 其他文献 作者.文题 [Z].出版地: 出版者, 出版日期.要求:
“参考文献”项目名称用小4号黑体加粗,在正文或附录后面空两行顶格排列;参考文献内容另起一行顶格用5号仿宋体排列,序号用“*1+、*2+……”的形式编排,引用著作和引用文章时的注文顺序同注释。其他格式要求
表格:正文或附录中的表格一般包括表头、表体和表注三部分,编排的基本要求是:
(1)表头。包括表号、标题、计量单位,用小5号黑体(居中),在表体上方与表格线等宽编排。其中,表号居左,格式为“表l”,全文表格连续编号;标题居中,格式为“XX表”;计量单位居右,参考格式如为“计量单位:元”。
(2)表体。表体的四周端线使用粗实线(1.5磅),其余表线用细实线(0.5磅)。表中数码文字一律使用小5号字。表格中的文字要注意上下居中对齐,数码位数也应对齐。
(3)表注。表注项文字写在表体下方,不必空行,用小5号宋体,按(“1)、(2)……”排列,表注的宽度不可大于表体的宽度。插图:
插图包括图片(稿)、图序和图名,文章中的插图应遵循“图随文走”和“先见文后见图”的原则,图片(稿)画面应清晰、美观,幅面大小适当,应根据内容要求和版面允许放缩至需要大小和放置于适当位置。图序及图名置于图的下方居中,使用小5号黑体,其中,图序居左,图名居右,如:“图2 上海大众销量和国内市场份额演变”。全文插图按出现的先后顺序统一编序,如“图
1、图2……”,图名以不超过15个汉字为宜。数字:
章中的数字,除了部分结构层次序数词、词组、惯用词、缩略语、具有修辞色彩语句中作为词素的数字、模糊数字必须使用汉字外,其他均应使用阿拉伯数字。同一文中,数字的表示方式应前后一致。标点符号:
文章中的标点符号应正确使用,忌误用、混用标点符号,中英文标点符号应加以区分。计量单位:
除特殊需要,论文中的计量单位应使用法定计量单位。
第四篇:怎样编写优秀教案
语言
材料:故事、诗歌、散文等
教案:
活动名称:根据所给材料确定名称
活动目标:(现在提供给大家的是比较笼统的目标,大家要结合所考试提供的材料写具体活动目标)
认知:
理解或记住故事(诗歌、散文)的主要情节、内容、了解故事(诗歌、散文)中的主要人物形象等。--主要是培养幼儿对事物的认知
情感态度:
激发幼儿对故事(诗歌、散文)中人物的喜爱和好奇/萌发幼儿对文学作品的兴趣等
技能能力:
通过试听讲等方式培养幼儿连贯讲述的能力(仿编、续编、创编等)
活动准备:
根据你所设计的活动需要,准备材料(要求:准备充分且具体。可以是帮助幼儿做好相关生活经验和有关知识的准备。也可以是根据目标和内容选择教具、学具,便于幼儿操作和探究,便于幼儿生活活动和互相学习)推荐关注:教育联盟之精英人才学习圈!
活动过程:
(每一个环节都要用概括性的语句表述,之后用自己的话简单介绍此部分活动的开展情况)
导入部分:根据教学的主要内容选择导入的方式。(谜语、绕口令、简单的幼儿常规活动、手指游戏等)
基本部分:
(围绕教学目标进行,结构层次要清晰,有灵活的组织形式,环节安排要合理,衔接自然、重点突出)
第一遍讲述--了解文章内容
提问:(是什么)这个故事(诗歌、散文)的名字是什么?
这个故事(诗歌、散文)里面说到了什么?
这个故事(诗歌、散文)里有哪些人物或其他?他们在做什么?
第二遍讲述--分析文章
提问:(为什么)刚才的故事(诗歌、散文)里发生了什么事?为什么会这样?
第三遍讲述--掌握文章 推荐关注:教育联盟之精英人才学习圈!
提问:(怎么办)如果你是故事里的人物,你会怎么做?
结束部分:
(根据材料选择结束的方式)
可以配乐诗朗诵,幼儿复述、续编或仿编故事,简单的游戏、音乐、舞蹈(和本节课有关的)等
延伸活动:(根据本节课的内容选择延伸的方式)
有家园合作、领域渗透、环境创设、区角游戏等
健康
材料:简单的体育活动或者是保健活动
教案:
活动名称:根据所给材料确定名称
活动目标:
认知:
初步掌握体育活动的有关知识和规则。简单了解身体某一部分的简单特征和功能。了解身体保健的常识。
情感态度:
激发幼儿对体育活动的兴趣、体验探索自身奥秘的快乐、喜欢并愿意参加体育活动、热爱体育活动,初步养成参加体育活动的习惯等
技能能力:
能合作收拾某些小型体育活动器材、能听信号变速走、能走跑交替300米左右,能听信号左右分队走、能绕过障碍物跑、能在一定范围内四散追逐跑等
活动准备:
根据你所设计的活动需要,准备材料(要求:准备充分且具体。可以是帮助幼儿做好相关生活经验和有关知识的准备。也可以是根据目标和内容选择教具、学具,便于幼儿操作和探究,便于幼儿生活活动和互相学习)
活动过程:
(每一个环节都要用概括性的语句表述,之后用自己的话简单介绍此部分活动的开展情况)推荐关注:教育联盟之精英人才学习圈!
导入部分:根据教学的主要内容选择导入的方式。(主要为热身)
基本部分:
(围绕教学目标进行,结构层次要清晰,有灵活的组织形式,环节安排要合理,衔接自然、重点突出)
1.讲述要进行的活动,简单向幼儿介绍。因为幼儿参与的兴趣。可请幼儿讨论
2.详细讲解活动的规则和玩法,教师和能力强的幼儿示范一次。
3.幼儿共同进行活动一次。
4.分组比赛
结束部分:
(根据材料选择结束的方式)
可以在分组比赛后评奖的形式结束,也可以是自然地整理活动放松结束等
在日常教学工作中,撰写活动设计是备课的重要环节。教案写得好,目标明确、条理清晰、层次分明,那么在教案的实施过程即上课时就能得心应手、有条不紊、中心明确。反之,则条理不清、轻重不分,教者思绪不明,学者一头雾水,就不能达到好的教学效果。可见,写好活动设计是上好课的重要前提,那么,怎么样才能准备好一个好的教案呢,我觉得应该从以下几个方面去考虑。
一、教材的选择
我们选择教材要考虑幼儿的年龄特点、兴趣爱好,一节课的内容深了、浅了、多了、少了,都是不恰当的,只有选择适合幼儿年龄特点,能引发幼儿兴趣的教学内容,才能先发制人,从根本上达到教育的目的。
二、目标的确定
目标的制定原则上要从孩子的实际情况出发,确定一个活动目标主要从三个方面来确定:
1、认知
2、能力
3、情感
如儿歌《过桥》的目标是:
1、学习口齿清楚、声音自然地朗读诗歌。
2、尝试简单地仿编。
3、体验活动的乐趣。
目标1 学习朗读、学习儿歌是知识层面的,是知识的积累和巩固;
目标2 尝试简单地仿编是能力层面的,是能力的提高和锻炼;
目标3 体验活动的乐趣是情感层面的,是情绪的体验和表达。
当然,在确定目标时虽然基本是从以上三个方面来考虑,但也不是说每个活动设计都是这样三条目标,有时候也可以结合起来,而且可以根据每个活动的侧重点来安排目标的前后。如儿歌《太阳和月亮》的目标就是这样的:
1、能积极地参与活动,体验诗歌带来的乐趣。
2、尝试创编诗歌,激发幼儿的创造精神。
目标1中参与和体验就包含了知识和情感两方面的内容,参与活动就是在活动中学习儿歌,完成知识上的学习和积累;体验乐趣就是情感方面的感受。目标2中的创编和激发就是能力方面的培养,使幼儿的创造能力有了一定的提升,创造精神也有了开拓。而且在两个目标中显然体验是更为重要的,因此放在第一目标中。也就是说,在不同的活动中,有时候是知识目标最为重要的,有时候是情感目标最为重要的,而有时候是能力目标最为重要的,可以在目标的排序中体现出来。如果是三者并重的,那就可以按照知识、能力、情感来排列。
三、流程的设计
流程的安排正如做菜的顺序,是先放主料还是先放佐料,放佐料时是先放姜蒜还是先放酒醋都是有讲究的,放得好放得适时则色美味鲜,入口回味无穷;若放料放得不好则食欲全无,再好的营养再好的材料也是付之东流,失去应有的价值。
一堂课能不能在第一时间引发幼儿的兴趣,开场的第一环节很重要。引题能不能先声夺人,对一堂课的发展有着至关重要的作用。所以,这第一炮一定要打响打好而且要打得准确,把孩子的注意力最大力度的吸引过来。
一般在引题后就是重点内容的学习了,这里有一个循序渐进、由浅入深、由表及里的过程。也就是说要教之有法,要让幼儿学得开心,学有所得。而怎么教、怎么学就看你活动过程怎么去设计。所以在设计的过程中还有老师的许多隐性因素渗透在设计中,自己的心中一定要明白这个环节要安排在哪里,要如何安排,为什么要这样安排,只有做到设计时的心中有数,才能做到上课时的运用自如。
在活动的最后,我们很容易犯一个低级错误,即认为反正课已经完了,赶紧收场了事,殊不知这样做很容易造成头重脚轻、牛头蛇尾的感觉,所以在最后的环节也一定要从容不迫、有始有终,最好能与开场相呼应,使整个活动有圆满的感觉。而且在整个活动设计中要有一条主线贯穿始终,使整节课条理清晰,不要中餐西餐满堂彩,一会儿用筷子一会儿用刀叉,造成不必要的混乱。
在每一个活动中都有一个学习、巩固、提升、迁移的过程。一个好的活动设计在结束时也是留有悬念的,一节好课上完了也不应该是嘎然而止,而应该是余味无穷,意犹未尽。
四、教具的准备
教具是为教学服务,所以宜精不宜多,宜巧不宜花,每一件教具都要用在刀刃上。教具的设计和准备即要考虑幼儿的年龄特点,更要考虑课的需要。
教具的份量要足,但不要多了,多了容易引起不必要的麻烦。教具的制作要精巧,但不要花俏。可以利用现成的实物,也可以利用废旧物品制作,但绝不可粗制滥造,以免给人造成不负责任的感觉。但也不必太多花俏,既浪费时间,又容易分散幼儿的注意力,甚至有时候会中看不中用。
在写教案时只要把本课有关的教具写清楚就好了,当然,教案里写到的准备并不单单只是教具的准备,还包括幼儿的知识准备,如有一些特殊的活动还要有天气准备等等。
五、教案的要素
一个完整的活动设计包含四个要素,即上面说到的四个大点:
1、设计意图,也可以是教材分析
2、活动目标
3、活动准备
4、活动过程
如有必要,还可以加上第五点:活动延伸。
总之,要写好教案,首先要选择适合各年龄层次的幼儿学习的教材,然后对教材进行深入的分析,慎重地确定活动的目标,围绕目标展开流程设计,每一个环节都要切实为目标服务,以达到教得轻松、学得开心的目的,每一次活动都能真正让幼儿得到应有的提高和发展。
当前,上级评审组评估要求教师写教案,我们按观摩课的要求和格式书写:
如:教学名称(科目):大班语言:秋天的雨
幼儿园名称及教师姓名
设计意图:用简练语言阐述自己的设计意图。(根据需要确定)
活动目标:
1、认知目标
2、能力目标
3、情感目标
活动准备:如与散文相符的Flash课件,音乐等。
活动过程:主要分三个部分:
一是导入;二是教学过程的主要步骤;在这个环节中为幼儿提供多种感知、体验、理解的途径,体现“以儿童发展为本”的理念,围绕一条主线,(以游戏为基本活动贯穿始终)把两个原则.即幼儿是学习的主体和由浅入深、由易到期难:实现三方面的提升.即增加学习兴趣,提高知识技能,丰富社会情感。三是结束部分(或延伸)。
第五篇:C语言编写俄罗斯方块论文
俄罗斯方块
学 号:
班 级:
姓 名:
指导教师:
完成日期:2012年5月
目
录
1.引言..............................................................................................................................................1
1.1开发工具............................................................................................................................1 1.1.1 C是中级预言......................................................................................................1
1.1.2 C是结构化语言..................................................................................................1 1.1.3 C语言功能齐全..................................................................................................1 1.1.4 C语言可移植性好..............................................................................................1 游戏设计......................................................................................................................................2
2.1游戏设计要求....................................................................................................................2
2.1.1.设计题目:俄罗斯方块游戏.............................................................................2
2.1.2.设计内容:.........................................................................................................2 2.1.3.功能模块划分:.................................................................................................2 2.2 游戏设计思想...................................................................................................................2
2.2.1游戏界面:............................................................................................................2 2.2.2 设计思路.......................................................................................................................2 2.3:游戏功能......................................................................................................................3 2.3.1:开始部分...........................................................................................................3
2.3.2.运行部分...............................................................................................................3
3.实验总结:..................................................................................................................................4
3.1 开发背景与需求分析.......................................................................................................4 3.2 系统功能介绍...................................................................................................................4 4.核心代码:................................................................................................................................8 总结................................................................................................................................................21 参考文献:....................................................................................................................................22
基于C语言的俄罗斯方块游戏
[摘要]:俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。[关键词]:C语言;心得体会;影响
1.引言 随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界.人们不在拘泥于一小块天地.加班,出差成了现代人不可避免的公务.而此时一款可以随时随地娱乐的游戏成了必需品.在手机和电脑成为人们日用品的社会,一款能在其上能便捷运行的游戏成为买家的参考点.现在我们所要设计的这一款基于C语言的游戏——贪吃蛇,就是满足以上要求而设计出来的,希望能给玩家带来娱乐.贪吃蛇这一游戏简单易行,操作方便,娱乐性较强,吸引了不少人.这一款游戏紧紧地抓住了人们的心理,虽然简单,却起乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具.1.1开发工具
《C/C++程序设计学习与试验系统》
该系统继承了Turbo C2.0/C++3.0、GCC、Visua C++6.0这四种常见的编译器,可以很好满足目前主流的C语言教材的实验需求。
C语言具有下列特点:
1.1.1 C是中级预言
它把高级语言的基本结构和语句与低级语言的实用性结合起来,C语言可以像汇编语言一样对位、字节和地址进行操作,通常还是称C为高级语言。
1.1.2 C是结构化语言
结构化语言的特点是程序的各个部分除了必要地数据交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用,维护及调试。
1.1.3 C语言功能齐全
C语言具有多种数据类型,并引入了指针概念,可使程序效率更高;C语言也具有强大的图形功能;具有较强的计算功能、逻辑判断功能。
1.1.4 C语言可移植性好
与汇编语言相比,C语言程序适用范围大,可用于各种操作系统和各种型号的计算机。游戏设计
2.1游戏设计要求
2.1.1.设计题目:俄罗斯方块游戏 2.1.2.设计内容:
一组由4个小型正方形组成的规则图形,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。如果未被消除的方块堆放的高度超过场地所规定的最大高度则游戏结束。
2.1.3.功能模块划分:
系统功能模块
2.2 游戏设计思想
2.2.1游戏界面:
方块堆积。遇整则消。
2.2.2 设计思路
1、一个用于摆放小型正方形的平面虚拟场地,其标准大小:行宽为10,列高为20,以每个小正方形为单位。2.、一组由4个小型正方形组成的规则图形,英文称为Tetromino,中文通称为方块共有7种,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。I:一次最多消除四层
J(左右):最多消除三层,或消除二层
L:最多消除三层,或消除二层
O:消除一至二层
S(左右):最多二层,容易造成孔洞
Z(左右):最多二层,容易造成孔洞
T:最多二层
(1)部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。
方块会从区域上方开始缓慢继续落下。
(2)玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。
(3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。
(4)当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。
(5)当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。
(6)一般来说,游戏还会提示下一个要落下的方块,熟练的玩家会计算到下一个方块,评估现在要如何进行。由于游戏能不断进行下去对商业用游戏不太理想,所以一般还会随着游戏的进行而加速提高难度。
3、通过设计者预先设置的随机发生器不断地输出单个方块到场地顶部,以一定的规则进行移动、旋转、下落和摆放,锁定并填充到场地中。每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取一定的积分或者其他形式的奖励。而未被消除的方块会一直累积,并对后来的方块摆放造成各种影响。
4、如果未被消除的方块堆放的高度超过场地所规定的最大高度(并不一定是20或者玩家所能见到的高度),则游戏结束。
具体到每一款不同的游戏,其中的细节规则都可能有千差万别,但是以上的基本规则是相同的。
2.3:游戏功能
2.3.1:开始部分
游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。
2.3.2.运行部分
俄罗斯方块的要求为:不同形状组合的方块从界面上方落下。通过键盘上的四个光标控制方块下落时的形状转换和下落方向。方块堆积在一起,将区域占满时则会消除以增加
游戏分数。
整个游戏过程分为三个步骤:
1、按游戏界面的“开始”按钮或者F2键来开始游戏,自己使用右边的窗口,对手使用左边的窗口
2、键盘操作:系统缺省设置使用右边的窗口,用光标操作,“←”左移一格;“→”右移一格;“↑”旋转方块;↓ 方块丢下(方块下落到底),“End”健可以一格格的下落,用户还可以自定义习惯的按键来操作游戏。
3、计分牌显示的内容:“分数”为双方本局的分数,计分标准为下落一个块10分,一次消一行100分、2行200分、3行400分、4行800分。等级”为双方的游戏设置等级,当分数达到一定的值,等级就会提升、速度加快。“行数”第一行为双方消的行数,第二行是送给对方的行数。“比分”为双方赢的局数。2.3.3:结束部分:
游戏结束时,显示“GAME OVER”
3.实验总结:
3.1 开发背景与需求分析
随着网络技术的发展,人们的生活越来越离不开网络,网络给人们带来了各种各样的信息和更多更新的娱乐。据统计。每天上网的人群中75%的人用来丰富自己的生活。其中游戏最为常见和普遍。所以,这次课程设计我想实现一个小游戏:俄罗斯方块。需求分析
1)游戏面板(画布)GameCanvas类,完成游戏显示; 2)方块绘画drawUnit类,方块下落过程中的各种形态;
3)主界面实现游戏的开始,退出,暂停,提高级数,降低级数功能及图像界面排版;
4)通过键盘按键实现游戏,并且可以调节游戏速度。
3.2 系统功能介绍
俄罗斯方块是一个非常复杂但比较有趣并且耐玩的游戏,相信很多人对俄罗斯方块并不陌生,如下图所示,游戏中共有七种方块,每种方块都有四个方格组成。
这七种方块可以旋转90度、180度、270度,因此每种方块有四种状态,七种方块总有28种状态,这28种状态的方块随机产生,自由下落,落下时可由玩家通过键盘上的上、下、左、右控制键来控制方块的反转、移动和加速下落。如果下落时,方块填满某一行则这一行消失,同时给玩家加分,若由存在空格的方块填满整个窗口,则游戏结束。
图1-1 初始状态
图1-2 开始游戏
图1-3 消除一行
图1-4 消除两行
图1-5 消除四行
图1-6 游戏结束
4.核心代码:
import java.awt.*;import java.awt.event.*;
//俄罗斯方块类
public class computer extends Frame { public static boolean isPlay = false;public static int level = 1, score = 0;public static TextField scoreField, levelField;
public static MyTimer timer;GameCanvas gameScr;//声明一个属于画布类得变量 public static void main(String[] argus){ computer ers = new computer(“俄罗斯方块游戏 V1.0 Author:Vincent”);//运用构造方法为框架名
WindowListener win_listener = new WinListener();//定义一个窗口监听事件对象
ers.addWindowListener(win_listener);//为框架添加该监听器 }
computer(String title)// 俄罗斯方块类的构造方法 { super(title);//调用父类得构造方法
setSize(600, 480);//设置框架的尺寸
setLayout(new GridLayout(1, 2));//设置框架的布局流
gameScr = new GameCanvas();gameScr.addKeyListener(gameScr);//为该对象注册键盘点击监听器
timer = new MyTimer(gameScr);timer.setDaemon(true);timer.start();timer.suspend();
add(gameScr);
Panel rightScr = new Panel();rightScr.setLayout(new GridLayout(2, 1, 0, 30));rightScr.setSize(120, 500);add(rightScr);
// 右边信息窗体的布局
MyPanel infoScr = new MyPanel();infoScr.setLayout(new GridLayout(4, 1, 0, 5));infoScr.setSize(120, 300);rightScr.add(infoScr);
// 定义标签和初始值
Label scorep = new Label(“分数:”, Label.LEFT);Label levelp = new Label(“级数:”, Label.LEFT);scoreField = new TextField(8);levelField = new TextField(8);scoreField.setEditable(false);levelField.setEditable(false);infoScr.add(scorep);
infoScr.add(scoreField);infoScr.add(levelp);infoScr.add(levelField);scorep.setSize(new Dimension(20, 60));scoreField.setSize(new Dimension(20, 60));levelp.setSize(new Dimension(20, 60));levelField.setSize(new Dimension(20, 60));scoreField.setText(“0”);levelField.setText(“1”);
// 右边控制按钮窗体的布局
MyPanel controlScr = new MyPanel();controlScr.setLayout(new GridLayout(5, 1, 0, 5));rightScr.add(controlScr);
// 定义按钮play Button play_b = new Button(“开始游戏”);play_b.setSize(new Dimension(50, 200));play_b.addActionListener(new Command(Command.button_play, gameScr));
// 定义按钮Level UP Button level_up_b = new Button(“提高级数”);level_up_b.setSize(new Dimension(50, 200));level_up_b.addActionListener(new Command(Command.button_levelup, gameScr));
// 定义按钮Level Down Button level_down_b = new Button(“降低级数”);level_down_b.setSize(new Dimension(50, 200));level_down_b.addActionListener(new Command(Command.button_leveldown, gameScr));
// 定义按钮Level Pause Button pause_b = new Button(“游戏暂停”);pause_b.setSize(new Dimension(50, 200));pause_b.addActionListener(new
Command(Command.button_pause,gameScr));
// 定义按钮Quit Button quit_b = new Button(“退出游戏”);quit_b.setSize(new Dimension(50, 200));quit_b.addActionListener(new Command(Command.button_quit, gameScr));
controlScr.add(play_b);controlScr.add(level_up_b);controlScr.add(level_down_b);controlScr.add(pause_b);controlScr.add(quit_b);setVisible(true);gameScr.requestFocus();} }
// 重写MyPanel类,使Panel的四周留空间 class MyPanel extends Panel { public Insets getInsets(){ return new Insets(30, 50, 30, 50);} }
// 游戏画布类
class GameCanvas extends Canvas implements KeyListener { final int unitSize = 30;// 小方块边长 int rowNum;// 正方格的行数 int columnNum;// 正方格的列数
int maxAllowRowNum;// 允许有多少行未削 int blockInitRow;// 新出现块的起始行坐标 int blockInitCol;// 新出现块的起始列坐标 int[][] scrArr;// 屏幕数组 Block b;// 对方快的引用
// 画布类的构造方法 GameCanvas(){ rowNum = 15;columnNum = 10;maxAllowRowNum = rowNum1;blockInitCol = columnNum / 2(row + 1)* unitSize, unitSize, unitSize, true);g.dispose();}
public Block getBlock(){ return b;// 返回block实例的引用 }
// 返回屏幕数组中(row,col)位置的属性值 public int getScrArrXY(int row, int col){ if(row < 0 || row >= rowNum || col < 0 || col >= columnNum)return(-1);else return(scrArr[row][col]);}
// 返回新块的初始行坐标方法 public int getInitRow(){ return(blockInitRow);// 返回新块的初始行坐标 }
// 返回新块的初始列坐标方法 public int getInitCol(){ return(blockInitCol);// 返回新块的初始列坐标 }
// 满行删除方法
void deleteFullLine(){ int full_line_num = 0;int k = 0;
for(int i = 0;i < rowNum;i++){ boolean isfull = true;
L1: for(int j = 0;j < columnNum;j++)if(scrArr[i][j] == 0){ k++;isfull = false;break L1;} if(isfull)full_line_num++;if(k!= 0 && k1, j, 0);else drawUnit(k1][j] = scrArr[i][j];} } for(int i = k1)){
dispBlock(0);col--;dispBlock(1);} }
// 实现块的右移
public void rightMove(){ if(assertValid(blockType, turnState, row, col + 1)){ dispBlock(0);col++;dispBlock(1);} }
// 实现块落下的操作的方法 public boolean fallDown(){ if(blockState == 2)return(false);if(assertValid(blockType, turnState, rowi, col + j);if(temp < 0 || temp == 2)return false;} k = k >> 1;} } return true;}
// 同步显示的方法
public synchronized void dispBlock(int s){ int k = 0x8000;for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ if(((int)pattern[blockType][turnState] & k)!= 0){ scr.drawUnit(rowcomputer.level + 1)* 100);} catch(InterruptedException e){ } if(!scr.getBlock().fallDown()){ scr.deleteFullLine();if(scr.isGameEnd()){ computer.isPlay = false;suspend();} else scr.getBlock().reset();} } } }
class WinListener extends WindowAdapter { public void windowClosing(WindowEvent l){ System.exit(0);} } 总结
1感悟:当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在这么长的时间里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
我做的是做俄罗斯方块游戏。简单的一个,但对我来说却是一个很大的困难。更加是第一次做基于C语言的课程设计,所以连续几天翻阅书籍或是参考网上内容却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候
没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟水平有限,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。经过一波三折,终于开始正式编程。
而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,所以就在网上下载的程序的基础上开始行动了,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。
通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
在该游戏设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
2感谢:经过两个星期的苦心钻研,系统终于制作完毕。在本次课程设计中困难遇到不少,也让我学到了很多。在这次系统开发的过程中,我深深地体会到了做一个系统,首先进行需求分析的重要性。了解了一个系统的制作,从功能分析到功能模块分析,与其他系统的关系,这些都有待以后进一步的改进。通过实践对我以后的学习是一笔不小的财富!
在此,感谢班上同学对我的帮助和指点,没有他们所提供的资料,仅凭我个人力量,在短短的两周时间里是很难完成这个设计的。更要感谢的是我的老师,感谢老师孜孜不倦的教诲,一丝不苟的精神和一视同仁的教学风格。我会仅记老师的教诲,一步一个脚印的完成自己的学业!
参考文献:
[1].裘宗燕 著,从问题到程序科学出版社,北京大学出版社,1999年4月。[2].《C程序设计(第二版)》,谭浩强编,清华大学出版社,1999年12月。[3].《C语言编程常见问题解答》,[美]Paul S.R.Chishohm等著,张芳妮 吕波译,清华大学出版社,11996年12月。[4].《The C Programming Language》,by Brian W.Kernighan and Dennis M.Ritchie.,Pubilished by Prentice-Hall in 1988。
[5].朱若愚.数据结构[M].北京: 电子工业出版社, 2006.1
[6].傅清祥,王晓东.数据结构与算法设计[M].北京: 电子工业出版社, 2006.3 [7].李春葆.数据结构(C语言版)习题与解析[M].北京:清华大学出版社, 2006.1 [8].刘大有.数据结构[M].北京: 高等教育出版社, 2006.3 [9].王敬华,陈静.C语言程序设计[M].北京: 清华大学出版社, 2007.10 [10].徐孝凯.数据结构简明教程.[M].北京: 清华大学出版社, 2006.04
课程设计俄罗斯方块游戏源代码
本程序共三个类,建一个包 square。把三个类都封装到一个包里面,三个类分别是
Controller,Main,Square
package square;import javax.swing.JPanel;import java.awt.Color;
// 事倒入java程序所需要的类库文件。如果不倒入相应的文件。java程序是会报错的。import javax.swing.JLabel;public class Controller extends Thread //Controller类从定义从父类继承来来的某些成员变量和成员方法,游戏控制线程
private int x;
//方块左上角的坐标
private int y;
private Square sq;
//方块对象的引用当前
private Square next;
//下一个方块的引用
private JPanel[][] sc;
//显示
private boolean[][] state;
//填充状态
private int sorce;
//分值
private int speed;
//下落速度
private JLabel jl1;
//分数速度提示
private JLabel jl2;
private JPanel jp;
//下一个方块提示
private JPanel[][] sc2;
private int sleepTime;
//等待时间
public Controller(int x, int y, JPanel[][] sc, boolean[][] state,//构造器
传递引用
int sorce, int speed, JLabel jl1, JLabel jl2,JPanel jp, JPanel[][] sc2){
this.x = x;
this.y = y;
this.sc = sc;
this.state = state;
this.sorce = sorce;
this.speed = speed;
this.jl1 = jl1;
this.jl2 = jl2;
this.jp = jp;
this.sc2 = sc2;
this.sleepTime = 200;
sq = new Square((int)(Math.random()* 4)+ 1);
next = new Square((int)(Math.random()* 4)+ 1);
}
public void init(){
for(int i = 0;i < state.length;i++){
for(int j = 0;j < state[i].length;j++){
state[i][j] = false;
}
}
update();
}
@Override
public void run()
//重设run()方法
{
while(true){
try {
if(!isGameOver()){
if(isHit()){
set();
} else {
fall();
}
check();
update();
Thread.sleep(sleepTime);
} else {
break;
}
} catch(InterruptedException e){
e.printStackTrace();
}
}
}
private void set()
//码放方块
{
for(int i = 0;i < 4;i++){
for(int j = 0;j < 4;j++){
if(sq.getState(i, j)== true){
state[i + x][y + j] = true;
}
}
}
x = 0;
y = 0;
sq = next;
next = new Square((int)(Math.random()* 4)+ 1);
sleepTime = 1000 /(speed + 2);
}
private void update()
//更新数据
{
for(int i = 0;i < sc.length;i++){
for(int j = 0;j < sc[i].length;j++){
if(state[i][j] == true){
sc[i][j].setBackground(Color.BLUE);
} else {
sc[i][j].setBackground(Color.WHITE);}
}
}
for(int i = 0;i < 4;i++){
for(int j = 0;j < 4;j++){
if(sq.getState(i, j)){
sc[i + x][j + y].setBackground(Color.BLUE);
}
}
}
for(int i = 0;i < sc2.length;i++){
for(int j = 0;j < sc2[i].length;j++){
if(next.getState(i, j)){
sc2[i][j].setBackground(Color.BLUE);
} else {
sc2[i][j].setBackground(Color.WHITE);
}
}
}
}
private boolean isHit()
//下落碰撞判断
{
for(int i = 0;i < 4;i++){
for(int j = 0;j < 4;j++){
if(sq.getState(i, j)&&(x + i == 19 || state[i + x + 1][j + y])){
return true;
}
}
}
return false;
}
private void fall()
//下落
{
x++;
}
private boolean isLeftHit()
//左移碰撞判断
{
if(y == 0){
return true;
}
for(int i = 0;i < 3;i++){
for(int j = 0;j < 3;j++){
if(sq.getState(i, j)&& state[x + i][y + j1][j];
}
}
sorce += 10;
speed = sorce / 100;
jl1.setText(String.valueOf(sorce));
jl2.setText(String.valueOf(speed));
sleepTime = 1000 /(speed + 2);
} catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
public void moveLeft()
//向左
{
if(!isLeftHit()){
state[x][y] = false;
y--;
}
}
private boolean isRightHit()
//右移碰撞判断
{
for(int i = 0;i < 3;i++){
for(int j = 0;j < 3;j++){
if(sq.getState(i, j)&&(y + j >= 9 || state[x + i][y + j + 1])){
return true;
}
}
}
return false;
}
public void moveRight()//向右
{
if(!isRightHit()){
state[x][y] = false;
y++;
}
}
public void rot()
//旋转
{
sq.rot();
}
public void down()
//加速向下
{
sleepTime = 20;}
}
package square;import javax.swing.*;import java.awt.*;public class Main extends javax.swing.JFrame { private static final long serialVersionUID = 1L;private JPanel sc[][];
private JPanel sc2[][];
private boolean state[][];
Controller t;
/** Creates new form Square */
public Main()
{
initComponents();
sc = new JPanel[20][10];
sc2 = new JPanel[4][4];
state = new boolean[25][15];
jPanel1.setLayout(new GridLayout(20, 10, 2, 2));
jPanel3.setLayout(new GridLayout(4, 4, 2, 2));
jPanel3.setSize(150, 150);
for(int i = 0;i < sc.length;i++){
for(int j = 0;j < sc[i].length;j++){
sc[i][j] = new JPanel();
// sc[i][j].setSize(20, 20);
sc[i][j].setBackground(Color.WHITE);
jPanel1.add(sc[i][j]);
}
}
for(int i = 0;i < sc2.length;i++){
for(int j = 0;j < sc2[i].length;j++){
sc2[i][j] = new JPanel();
// sc2[i][j].setSize(20, 20);
sc2[i][j].setBackground(Color.WHITE);
jPanel3.add(sc2[i][j]);
}
}
jLabel3.setText(“0”);
jLabel4.setText(“0”);
this.setSize(460, 650);
}
/** This method is called from within the constructor to
* initialize the form.* WARNING: Do NOT modify this code.The content of this method is
* always regenerated by the Form Editor.*/
private void initComponents(){
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenuBar2 = new javax.swing.JMenuBar();
jMenu3 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
jMenu4 = new javax.swing.JMenu();
jPanel3 = new javax.swing.JPanel();
jButton4 = new javax.swing.JButton();
jMenuBar3 = new javax.swing.JMenuBar();
jMenu5 = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jMenu6 = new javax.swing.JMenu();
jButton5 = new javax.swing.JButton();
jMenuBar4 = new javax.swing.JMenuBar();
jMenu7 = new javax.swing.JMenu();
jMenuItem4 = new javax.swing.JMenuItem();
jMenu8 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(400, 550));
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jLabel1.setText(“Score”);
jLabel2.setText(“Speed”);
jLabel3.setText(“jLabel3”);
jLabel4.setText(“jLabel4”);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(jLabel3))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel2)
.addGap(18, 18, 18)
.addComponent(jLabel4)))
.addContainerGap(35, Short.MAX_VALUE)));
jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel3))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jLabel4))
.addContainerGap(84, Short.MAX_VALUE)));
jButton1.setText(“Start”);
jButton1.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton1ActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setMinimumSize(new java.awt.Dimension(300, 500));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 291, Short.MAX_VALUE));
jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 504, Short.MAX_VALUE));
jButton2.setText(“L”);
jButton2.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton2ActionPerformed(evt);
}
});
jButton3.setText(“R”);
jButton3.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton3ActionPerformed(evt);
}
});
jMenu1.setText(“File”);
jMenuItem1.setText(“Start”);
jMenu1.add(jMenuItem1);
jMenuBar1.add(jMenu1);
jMenu2.setText(“Edit”);
jMenuBar1.add(jMenu2);
jMenu3.setText(“File”);
jMenuItem2.setText(“Start”);
jMenu3.add(jMenuItem2);
jMenuBar2.add(jMenu3);
jMenu4.setText(“Edit”);
jMenuBar2.add(jMenu4);
jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel3.setMinimumSize(new java.awt.Dimension(120, 120));
jPanel3.setPreferredSize(new java.awt.Dimension(120, 120));
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 135, Short.MAX_VALUE));
jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 116, Short.MAX_VALUE));
jButton4.setText(“Rot”);
jButton4.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton4ActionPerformed(evt);
}
});
jMenu5.setText(“File”);
jMenuItem3.setText(“Start”);
jMenu5.add(jMenuItem3);
jMenuBar3.add(jMenu5);
jMenu6.setText(“Edit”);
jMenuBar3.add(jMenu6);
jButton5.setText(“D”);
jButton5.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jButton5ActionPerformed(evt);
}
});
jMenu7.setText(“File”);
jMenu7.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jMenu7ActionPerformed(evt);
}
});
jMenuItem4.setText(“Start”);
jMenu7.add(jMenuItem4);
jMenuBar4.add(jMenu7);
jMenu8.setText(“Edit”);
jMenuBar4.add(jMenu8);
setJMenuBar(jMenuBar4);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,295, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2,javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, Short.MAX_VALUE)
.addComponent(jButton4,javax.swing.GroupLayout.DEFAULT_SIZE, 139,javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton3)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, Short.MAX_VALUE)))
.addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2,javax.swing.GroupLayout.PREFERRED_SIZE,10,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3,javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(44, 44, 44)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
javax.swing.GroupLayout.PREFERRED_SIZE,33,.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(63, Short.MAX_VALUE))
.addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE,38, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
pack();
}
//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
t = new Controller(0, 0, sc, state, 0, 0, jLabel3, jLabel4, jPanel3, sc2);
t.init();
t.start();}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
t.moveLeft();}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
t.moveRight();}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
t.rot();}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
t.down();
}
private void jMenu7ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
t.init();}
/**
* @param args the command line arguments
*/
public static void main(String args[]){
java.awt.EventQueue.invokeLater(new Runnable(){
public void run(){
new Main().setVisible(true);
}
});
}
// Variables declaration-do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu4;
private javax.swing.JMenu jMenu5;
private javax.swing.JMenu jMenu6;
private javax.swing.JMenu jMenu7;
private javax.swing.JMenu jMenu8;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuBar jMenuBar2;
private javax.swing.JMenuBar jMenuBar3;
private javax.swing.JMenuBar jMenuBar4;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
// End of variables declaration
}
package square;public class Square {
boolean[][][] state;
int condition;
//定义多种情况
public Square(int kind)
//
定义多种类型
{
state = new boolean[4][4][4];
condition = 0;
switch(kind){
case 1:
//方形
每个case之后应该有个break;否则在满足条件之后会继续向后进行会跳出
state[0][0][0] = true;
state[0][0][1] = true;
state[0][1][0] = true;
state[0][1][1] = true;
state[1][0][0] = true;
state[1][0][1] = true;
state[1][1][0] = true;
state[1][1][1] = true;
state[2][0][0] = true;
state[2][0][1] = true;
state[2][1][0] = true;
state[2][1][1] = true;
state[3][0][0] = true;
state[3][0][1] = true;
state[3][1][0] = true;
state[3][1][1] = true;
break;
case 2:
//I型
state[0][0][0] = true;
state[0][1][0] = true;
state[0][2][0] = true;
state[0][3][0] = true;
state[1][0][0] = true;
state[1][0][1] = true;
state[1][0][2] = true;
state[1][0][3] = true;
state[2][0][0] = true;
state[2][1][0] = true;
state[2][2][0] = true;
state[2][3][0] = true;
state[3][0][0] = true;
state[3][0][1] = true;
state[3][0][2] = true;
state[3][0][3] = true;
break;
case 3:
//L型
state[0][0][0] = true;
state[0][1][0] = true;
state[0][2][0] = true;
state[0][2][1] = true;
state[1][0][2] = true;
state[1][1][0] = true;
state[1][1][1] = true;
state[1][1][2] = true;
state[2][0][0] = true;
state[2][0][1] = true;
state[2][1][1] = true;
state[2][2][1] = true;
state[3][0][0] = true;
state[3][0][1] = true;
state[3][0][2] = true;
state[3][1][0] = true;
break;
case 4:
//T型
state[0][0][0] = true;
state[0][0][1] = true;
state[0][0][2] = true;
state[0][1][1] = true;
state[1][0][1] = true;
state[1][1][0] = true;
state[1][1][1] = true;
state[1][2][1] = true;
state[2][0][1] = true;
state[2][1][0] = true;
state[2][1][1] = true;
state[2][1][2] = true;
state[3][0][0] = true;
state[3][1][0] = true;
state[3][1][1] = true;
state[3][2][0] = true;
break;
}
}
public boolean getState(int i, int j)//获得是否为声明的i,j变量的值
{
return state[condition][i][j];
}
public void rot(){
condition =(condition + 1)% 4;
} }