大学课程设计报告小小打字游戏设计-课程设计报告

合集下载

打字游戏课程设计报告

打字游戏课程设计报告

计算机学院计算机科学与技术专业《程序设计综合课程设计》报告(2011/2012学年第一学期)学生姓名:学生班级:学生学号:指导教师:2011年12月30日于氏打字通目录第一章课程设计目的和要求 (1)1.1 目的 (1)1.2 要求 (1)第二章课程设计任务内容 (3)第三章详细设计说明 (4)3.1 模块描述 (4)3.2 性能 (4)3.3 输入项 (4)3.4 输出项 (4)3.5 流程逻辑 (5)3.6 限制条件 (8)3.7 测试计划 (8)第四章软件使用说明 (13)第五章课程设计心得与体会 (14)附录1:参考文献 (16)附录1:程序清单 (17)第一章课程设计目的和要求1.1目的C++语言课程设计的主要目的是培养学生综合运用C++程序设计课程所学到的知识,编写C++程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。

通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C++语言程序的基本技巧,充分理解结构化程序设计的基本方法。

C++语言程序设计的主要任务时要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C++语言程序及编写设计报告。

本次课程设计是通过设计一个较为简单的“打字游戏”,进一步熟悉C++中有关各种知识的运用与掌握。

了解系统开发的需求分析、模块分析、程序流程图、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯,进一步培养完善的C++编程设计思维,为以后进行软件编程、数据库管理等深入学习打下一个牢固基础掌握并且熟练应用《C++程序设计》中所学知识。

掌握函数功能的划分方法,并运用此方法解决问题。

学会程序测试方案的制定,并且实现程序的测试。

通过此次实践,积累经验,提高分析和解决问题的能力。

打字母小游戏课程设计

打字母小游戏课程设计

打字母小游戏课程设计一、课程目标知识目标:1. 学生掌握26个英文字母的大小写及其正确书写方式。

2. 学生能够理解并运用字母在单词中的位置及功能。

3. 学生通过游戏,学习并记忆与字母相关的单词。

技能目标:1. 培养学生通过游戏互动,提高英语听力、口语表达能力。

2. 培养学生团队协作能力,提高问题解决和策略运用能力。

3. 提高学生英语词汇记忆能力,为后续英语学习打下基础。

情感态度价值观目标:1. 培养学生对英语学习的兴趣,激发学习积极性。

2. 培养学生养成良好的竞争与合作的意识,学会在游戏中尊重他人,共享快乐。

3. 培养学生勇于尝试、不怕失败的精神,增强自信心。

课程性质:本课程为互动性、趣味性强的英语字母学习课程,通过游戏的形式,让学生在轻松愉快的氛围中学习英语字母。

学生特点:二年级学生具有好奇心强、活泼好动、喜欢游戏的特点,但注意力集中时间较短。

教学要求:结合学生特点,课程设计要注重互动性和趣味性,充分调动学生的积极性,提高学生的英语学习兴趣。

同时,关注个体差异,确保每个学生都能在课程中收获知识、提高能力、培养情感态度价值观。

通过具体的学习成果评估,及时调整教学策略,提高教学质量。

二、教学内容本课程以《英语》二年级上册教材为参考,结合课程目标,制定以下教学内容:1. 教学字母A-Z的大小写,及其正确书写顺序。

2. 教学字母在单词中的发音及其在单词中的作用。

3. 通过游戏,学习与字母相关的单词,如:apple、banana、cat等。

4. 引导学生运用字母组成简单单词,提高词汇记忆能力。

教学大纲安排如下:第一课时:字母A、B的大小写书写及发音学习,相关单词学习(如:apple、ball)。

第二课时:字母C、D的大小写书写及发音学习,相关单词学习(如:cat、dog)。

第三课时:字母E、F的大小写书写及发音学习,相关单词学习(如:elephant、fish)。

...以此类推,每课时学习两个字母,共计13课时。

打字游戏的设计报告

打字游戏的设计报告

打字游戏的设计报告姓名:赵香俊班级:中北11级.net专业:软件设计日期:2012-10-25目录简介3目的3范围3参考资料3概述3定义13 2.1排行版:4 2.2自由模式:4 2.3 计时赛:4 2.4 生存模式:4 2.5难度选择: 5 2.6 游戏帮助:5定义2:6简介将本系统中所涉及的词汇(术语)进行详细、准确的描述。

目的1.1.1在描述的过程中让开发人员了解、熟悉业务过程。

1.1.2为用例描述、用例建模、架构设计提供术语解释。

1.1.3为实体建模、数据库设计提供术语解释。

范围主界面模块,自由游戏模块,生存模式模块,计时赛模块,排行版模块参考资料概述定义12.1主页面在主页面上有排行版,自由练习,计时赛,生存模式以及难度的选择。

Label1 Label2 Label3 Label4 Label5 Label6,上字体的颜色可以不断地变化。

在难度中可以让用户选择,可以把选项放在一个panel中,让他隐藏来,当用户点难度的时候可以选择难易程度。

在接下来介绍的三种模式当中都可以把他们放在同一个界面上2.2自由模式:你点击开始-游戏开始游戏开始后会从屏幕的上方掉下字,每次落下来的字的颜色都不同,速度也不同,并且不可以让字飘到屏幕以外的地方。

如果你在没有落到屏幕的底方的时候把字给消除了,加10分,否则就扣10分。

同时成绩也会记录到数据库中,在排行版中可以查询。

2.3计时赛:1.用户点击开始,开始的按钮上会显示出暂停,这两个功能可以在同一个按钮上切换,点击开始,音乐响起,随之字母会从屏幕的最上方落下来,每次的颜色不同,速度不同,字母也不同,当你在字母没有落到屏幕的最低端的时候你把字母给消除了你就可以加10分,否则减10分。

在计时赛这个模块中有时间限制,如果到了规定的时间内,系统就会停止工作。

2.2.4 生存模式1.用户点击开始,开始的按钮上会显示出暂停,这两个功能可以在同一个按钮上切换,点击开始,音乐响起,随之字母会从屏幕的最上方落下来,每次的颜色不同,速度不同,字母也不同,当你在字母没有落到屏幕的最低端的时候你把字母给消除了你就可以加10分,否则减10分。

c打字游戏课程设计报告

c打字游戏课程设计报告

c打字游戏课程设计报告一、课程目标知识目标:1. 学生能够掌握C语言基础语法,包括变量声明、数据类型、运算符等。

2. 学生能够理解并运用循环结构、条件语句编写简单的打字游戏程序。

3. 学生了解基本的计算机编码知识,如ASCII码。

技能目标:1. 学生能够运用C语言编写简单的打字游戏程序,提高编程实践能力。

2. 学生能够通过编写代码解决问题,培养逻辑思维和问题解决能力。

3. 学生能够熟练使用计算机键盘,提高打字速度和准确性。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习C语言的热情。

2. 学生在团队协作中,培养沟通、协作能力,增强团队意识。

3. 学生通过编程实践,体会计算机科学的魅力,树立正确的科技观。

课程性质:本课程为实践性较强的编程课程,结合打字游戏的形式,让学生在轻松愉快的氛围中学习C语言编程。

学生特点:五年级学生,具备一定的计算机操作能力,对游戏有浓厚兴趣,具备初步的逻辑思维能力。

教学要求:教师应注重引导学生主动探究、实践,关注学生的个体差异,鼓励学生发挥创意,提高编程能力和团队协作能力。

通过本课程的学习,使学生达到上述具体的学习成果。

二、教学内容1. C语言基础语法:- 变量声明、数据类型(整型、字符型)- 常量和变量- 运算符(算术、关系、逻辑)- 语法结构(顺序、选择、循环)2. 编程实践:- 打字游戏程序设计思路- 设计简单循环结构,实现打字游戏基本框架- 引入随机函数,生成随机字母或单词- 使用条件语句,判断用户输入与随机字母的匹配3. 计算机编码知识:- ASCII码介绍- 键盘布局与打字技巧4. 教学内容的安排和进度:- 第一课时:C语言基础语法回顾,介绍打字游戏目标- 第二课时:设计打字游戏基本框架,学习循环结构- 第三课时:引入随机函数,学习条件语句- 第四课时:完善打字游戏功能,进行编程实践- 第五课时:总结与展示,讨论编程过程中的问题及解决方法教材关联:- 《C语言趣味编程》第三章:循环结构- 《C语言趣味编程》第四章:分支结构- 《计算机科学》第二单元:计算机编码知识教学内容注重科学性和系统性,结合教材相关章节,引导学生通过实践掌握C 语言编程知识,提高编程技能。

微机课设报告 打字游戏汇编语言的设计

微机课设报告 打字游戏汇编语言的设计

学号09750223实习报告微型计算机原理及应用课程设计报告打字游戏程序设计起止日期:2012 年1 月3 日至2012年 1 月6 日学生姓名马聪班级09电气2班成绩指导教师(签字)电子与信息工程系2012年1月05日摘要为了更好地掌握学习微机原理的知识,我们进行了这次课程实验,以完善我们的知识体系,我们通过汇编语言在PC机上完成了一个打字游戏的设计,它具有练习打字的功能。

本有游戏主要针对指法练习,并提供字母和单词两种选择。

根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。

同时本游戏提供显示得分,正确率和失败个数的功能。

当失败个数超过一定个数后,游戏结束并提示是否继续。

目录一、课程设计题目 (2)二、设计思路模块划分流程图 (2)㈠设计思路 (2)㈡模块划分 (2)㈢流程图 (3)三、程序源代码 (4)四、调试过程,运行结果和出现的问题及解决 (12)1、调试结果 (12)2、在调试中碰到问题 (14)五、课程设计心得 (14)六、成绩单 (15)一、课程设计题目、内容和实现的功能字母打字游戏基本功能:0 菜单主界面由“开始”“速度调整”“暂停”“结束”“统计得分”等项组成1 按ESC键退出游戏,显示得分,正确打字数和错误打字数.二、设计思路、模块划分、流程图(一)设计思路:利用计算机控制发声的原理,来演奏乐曲的程序。

乐曲按一定的高低、长短和强弱关系组成的音调。

根据歌谱,来编写歌程序的音符表和节奏表。

组成乐谱的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。

通过来设时间值,然后通过发声程序“*”来播放音乐。

通过键盘控制扬声器发出各种音符声音,使计算机键盘变成钢琴键盘,这是可以用它来演奏各种简单的声音。

弹奏时对应乐谱上的q音符,按下1,程序将接收到的1键的频率为262Hz送入程序中。

1、音乐播放选择从键盘上输入“1”,则播放“新年好”;从键盘上输入“q”,则退出;从键盘上输入其它字符,则等待重新输入。

2024打字游戏教案

2024打字游戏教案

打字游戏教案目录CONTENCT •游戏背景与目的•游戏内容与规则•键盘操作技巧培训•游戏化学习体验设计•打字游戏实践环节•课程总结与展望01游戏背景与目的打字游戏简介打字游戏是一种通过键盘输入字符来进行的游戏。

游戏中通常会设定不同的关卡和难度,玩家需要在规定时间内输入正确的字符或通过特定的键位组合来完成任务。

打字游戏可以帮助玩家提高打字速度和准确性,同时也可以锻炼反应能力和手眼协调能力。

教学目标与要求教学目标通过打字游戏的教学,使学生掌握基本的键盘输入技能,提高学生的打字速度和准确性。

教学要求教师需要向学生介绍打字游戏的基本规则和操作方法,引导学生逐步掌握正确的打字姿势和手指分工,同时要注意纠正学生的错误输入习惯。

适宜年龄段及技能水平适宜年龄段打字游戏适合各个年龄段的学生进行练习,但根据学生的认知水平和手指灵活程度,建议从小学高年级开始引入打字游戏教学。

技能水平初学者可以从简单的打字游戏开始练习,逐步提高难度和速度。

对于已经具备一定打字基础的学生,可以选择更具挑战性的游戏来进一步提高自己的技能水平。

同时,教师也可以根据学生的实际情况进行个性化教学安排。

02游戏内容与规则010203玩家需按照屏幕上出现的字母、单词或句子,在限定时间内正确输入。

游戏通常分为多个关卡,每个关卡的难度逐渐递增。

玩家需要使用键盘上的字母键、空格键和回车键等进行操作。

打字游戏基本玩法01020304初级难度中级难度高级难度进阶规则难度设置及进阶规则适合打字高手,字母和单词难度较高,出现速度非常快。

适合有一定打字基础的玩家,字母和单词难度适中,出现速度逐渐加快。

适合打字新手,字母和单词较为简单,出现速度较慢。

玩家通过不断练习和挑战,可以逐渐提高打字速度和准确率,从而解锁更高难度的关卡。

评分标准与奖励机制评分标准游戏通常根据玩家的打字速度、准确率和完成度等因素进行评分。

奖励机制玩家可以获得游戏内的虚拟奖励,如金币、道具等,用于兑换游戏内的其他功能或装饰。

java课程设计报告--打字游戏

java课程设计报告--打字游戏

java课程设计报告一打字游戏Java开发技术课程设计(打字游戏)学院:计算机与信息工程学院学号:*** ***姓名:**时间:2011年12月14日一、程序描述1.1程序设计的目的通过java开发技术课程的学习,我初步了解了如何运用java语言编写程序。

课程结束后,按老师的要求,在查找资料后,我完成了打字练习这个程序。

在这个过程中,主要达到了两个目的,一是检验和巩固专业知识,二是提高综合课堂上掌握的理论知识与处理数据的素质和能力。

通过该程序的编写,可以将我业务相结合,以检验我掌握知识的宽度、深度及对知识的综合运用能力。

1.2 程序设计的要求(1)程序的界面会随机的出现字母和数字,玩家在键盘上理相应的键后,界面上的对应的字符就会消失(2)字符下落的速度可以选择,完成一定量的字符后,显示进入下一关,下一关的速度加快(3)能统计正确与错误的字符数分别是多少(4)程序的主界面是能够给玩家第一感官的部分,主要包括程序图形区域界面、程序的显示更新界面。

1.3程序设计的环境Windows xp 操作系统、Myeclipse 编辑工具、jdkl. 6二、分析与设计2. 1游戏处理流程本次游戏设讣的处理流程如下图所示进入游戏画面单击“开始”按钮,游戏开始,字符开始随机。

根据出现的字符按相应的键,对应一个消失一个(字符)按对一定字符后将提示进入下一关,下一关的速度有所增加。

速度也可单独调节。

没有擅倒相应游戏中途欲中的键,错误的断,稍后继续数字将加一游戏单击“退出”单击“暂停”退出游戏游戏暂停再次单击开始游戏,游戏恢复游戏处理流程图2. 2需求分析2. 2. 1用户的特点打字练习具有很强的实用性,对键盘不熟悉的人均可用之练习。

这种需求同时也要求该程序具有可调节性,用户可以根据自己的水平调节速度,以提高打字水平。

2.2.2功能需求在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。

打字练习小游戏

打字练习小游戏

XXXX大学C#课程设计报告打字练习小游戏院(系)别专业班级学号姓名指导教师二○XX年XX月随着社会经济的发展,计算机在生活占据着越来越重要的地位,如何高效快速的使用计算机解决问题重要性尤为突出,社会竞争压力越来越大,工作与娱乐相结合更受群众喜爱。

基于以上分析,我们开发了一个打字练习的小游戏。

本游戏应用基于Visual Studio 2008平台的应用程序开发技术,采用C#作为开发编程语言,实现打字游戏的练习计算机键盘按键位置及娱乐功能。

该系统具有结构清晰、便于分布、实施简单、易于扩充、维护等特点,其功能主要是:在玩游戏的过程中练习打字,提高打字速度,熟悉键盘。

其主要特点是操作简单,娱乐性强,可自由控制难易度。

关键词:打字练习,C#编程摘要 (1)目录 (1)1 概述 (2)1.1 设计的背景和意义 (2)1.2 设计任务分工说明 (2)2 系统分析 (2)2.1 软件功能分析 (2)2.2 程序流程分析 (4)2.3 程序性能分析 (4)3 系统设计 (5)3.1 物理配置方案设计 (5)3.2 数据文件设计 (5)3.3 操作数据文件 (6)3.4 界面设计 (6)3.4 其他说明 (8)4 系统实现 (8)5 总结 (10)参考文献 (11)1 概述1.1 设计的背景和意义1.1.1 设计的背景1946年,第一台计算机在美国诞生。

之后随着社会经济的发展,计算机的作用与日俱增,计算机的高效运用决定了工作的效率及质量。

它被广泛运用于人们生活的各个方面,军事、工业、教育、农业等各个方面,从而更好的推动经济的增长。

同系列的其他打字游戏的功能主要包括熟悉字母,提高辨识、确认字母能力,特殊的还具有计时和惩罚奖励,调节游戏速度功能。

我们的打字游戏在实现以上的所有功能外还有所创新,不仅游戏方式新颖,还具有分数换取游戏次数的机制,使得游戏可玩性大大加强。

1.1.2 设计的意义随着计算机的更进一步普及,人们熟练掌握计算机运用已经成为衡量一个优秀人才的重要指标。

小小打字游戏设计_课程设计材料

小小打字游戏设计_课程设计材料
[3]陈伟.SQL Server2005数据库应用与开发教程[M].清华大学出版社,2007
[4]谭浩强.C程序设计(第四版)[M].清华大学出版社,2010
[5]赵民.新概念Visual C#.NET Web教程[M].北京:北京海淀出版社,2000
指导教师签字
系主任签字
年月日
课程设计评审表
指导教师评语
(2)打字游戏的软件设计、系统功能、基本信息等。




(1)符合C#程序设计、打字游戏程序设计的基本要求;
(2)能够实现游戏的正常运行;
(3)达到打字练习兼娱乐的效果等。



为期两周




1.分析设计阶段:按照需求分析、总体设计、详细ห้องสมุดไป่ตู้计这几个步骤进行。这一阶段前第1天完成。
2. 编码调试阶段:根据设计分析方案编写C#代码,然后调试该代码,实现课题要求的功能。这一阶段在第3天完成。
3. 调试与改进阶段。这一阶段在第4天完成。
4. 总结报告阶段:总结设计工作,写出课程设计说明书、需求分析、总体设计、详细设计、编码、测试的步骤和内容。这一阶段在第5天完成。




[1]王晶.Visual C#.NET Web6.0基础[M].辽宁:辽宁教育出版社,2002
[2]郑阿奇、梁敬东.C#程序设计教程[M].北京:机械工业出版社,2015
成绩
评定
指导教师签字:
年 月 日
答辩教师评语
成绩
评定
答辩教师签字:
年 月 日
二级学院工作小组意见
成绩
评定
二级学院领导签字(盖章):

C#打字游戏课程设计报告

C#打字游戏课程设计报告

课程设计课程设计名称:小小打字游戏专业班级:计算机科学与技术11级01班指导教师:姓名学号:课程设计时间: 2013.1.5-2013.1.11课题名:C#程序设计题目:打字游戏2013年1月10 日一、需求分析软件名称:小小打字游戏(1)描述:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。

(2)系统功能:1、游戏显示:游戏窗口,随机下落颜色不定的65个字符,并根据游戏得分实时增加字母下落的速度。

2、游戏操作:按下键盘上对应字符键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1。

3、实时显示用户的正确个数、错误个数和正确率!4、通过用户自己调整游戏的困难程度(包括高手,平民,菜鸟)。

5用户自己可以控制游戏的开始,暂停,结束。

2、系统设计(图表方式,要有说明部分)(1)新建程序项目:在VS2010上建立 game项目。

(2)设计界面:①、如图1-1、游戏窗口界面:有六个控件(4个Label控件,1个timer 控件 ,1个menustrip控件),界面背景图片由系统函数生成黑色。

(3)功能模块设计1、系统模块2、操作流程图三、系统实现核心代码创建线程:private void timer1_Tick(object sender, EventArgs e) {Random random=new Random ();Label label=new Label ();label .Height =40;label .Width =40;label.Left =random .Next (this .Width );this.Controls.Add(label);letter letter=new letter (label ,random ,this );thread = new Thread(new ThreadStart (letter.uptodown)); thread.Start();}窗体键盘事件以及统计正确与错误:private void Form1_KeyPress(object sender, KeyPressEventArgs e) {bo = true; //建立一个布儿类型foreach(object label in this.Controls){if(label is Label){Label b=(Label)label;if (b.Text[0] == e.KeyChar){Controls.Remove(b);label1.Text = "正确: "+Convert.ToString (++i) ;label3.Text = "正确率: " + Convert.ToString(i * 1.0 / (i + j));bo = false;}}}if (bo){label2.Text = "错误: " + Convert.ToString(++j);label3.Text = "正确率: " + Convert.ToString(i * 1.0 / (i + j));}}其他功能函数(开始,暂停,结束):private void 开始ToolStripMenuItem_Click(object sender, EventArgs e){Controls.Remove(label4);timer1.Start();}private void 暂停ToolStripMenuItem_Click(object sender, EventArgs e){timer1.Stop();}private void 退出ToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}难度调节代码:private void 普通ToolStripMenuItem_Click(object sender, EventArgs e){timer1.Interval = 1000;}private void 困难ToolStripMenuItem_Click(object sender, EventArgs e){timer1.Interval = 100;}private void 菜鸟ToolStripMenuItem_Click(object sender, EventArgs e){timer1.Interval = 2000;}}字母飘动下落函数部分代码:try{while (label.Top <formparent.Height +100){if (label == null){Thread.CurrentThread.Abort();}label.Top += 1;Thread.Sleep(10);}if (Thread.CurrentThread.IsAlive){Thread.CurrentThread.Abort();}}创建字母函数部分代码:speed = radom.Next(5) + 1;switch (speed){case 1:label.ForeColor = System.Drawing.Color.Pink;break;case 2:label.ForeColor = System.Drawing.Color.Aqua; break;case 3:label.ForeColor = System.Drawing.Color.Orange; break;case 4:label.ForeColor = System.Drawing.Color.White; break;case 5:label.ForeColor = System.Drawing.Color.Yellow; break;}四、游戏窗体截图运行图:五、所用的知识点Winform基础(包括简单控件的使用)、多线程的操作等等知识点。

打字游戏程序设计报告

打字游戏程序设计报告

1.1 设计目的 本次课程设计的目的主要是将课堂上所学的知识学以致用,通过程序的制作过程学习课外的新知识,并加强加深对旧知识的理解与掌握,并加强加深对旧知识的理解与掌握,最终使学生达到以最终使学生达到以下三点:下三点:1.使学生增进对汇编语言的认识,加强用汇编语言编程的能力。

2.使学生了解和掌握汇编语言程序设计过程、方法及其实现,为以后微机原理课程的深入学习打下良好基础。

原理课程的深入学习打下良好基础。

3. 3. 使学生进一步掌握屏幕输出显示的设计方法。

使学生进一步掌握屏幕输出显示的设计方法。

1.2 课程设计在教学计划中的地位和作用《微机计算机原理与接口技术》这门课是自动化和电子等专业重要的基础专业课程之一,要求我们要有实际的动手能力。

要求我们要有实际的动手能力。

由于我们在课堂上学到的大多都是由于我们在课堂上学到的大多都是理论知识,所以需要通过课程设计这个环节,把我们所学到的知识运用到实践,这也是课程设计的主要目的,其中包括提高汇编等语言的编程能力及对接口等硬件的理解与分析能力和设计接口电路的能力。

本次设计课题使我们在汇编等语言的编程方面得到了很大的提高,的编程方面得到了很大的提高,是我受益匪浅。

是我受益匪浅。

原本陌生的和不太熟悉的指令程序及各种定义,序及各种定义,现在都有了一些认识及更深的理解。

现在都有了一些认识及更深的理解。

现在都有了一些认识及更深的理解。

这对我们以后走向社会,这对我们以后走向社会,这对我们以后走向社会,更更快地适应工作奠定了很好的基础。

快地适应工作奠定了很好的基础。

第二章 打字游戏程序设计内容要求和设计思想2.1 设计内容要求要求设计的程序需包括:在游戏开始后,按回车键进入打字游戏;按要求设计的程序需包括:在游戏开始后,按回车键进入打字游戏;按ESC键返回主界面;按空格暂停;按大写字母E 程序结束。

程序结束。

2626个字母中的任意一字母从屏幕落下,在下落的过程中键入落下的字母,如果正确,字母消失,分数增加;如果不正确,字母继续下落。

打字练习课程设计

打字练习课程设计

打字练习课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握打字的正确姿势、指法规则和键盘布局;技能目标要求学生能够熟练使用键盘进行盲打,达到每分钟至少60个字符的打字速度;情感态度价值观目标要求学生培养对打字练习的积极态度,养成良好的学习习惯和自律精神。

二、教学内容教学内容主要包括打字的正确姿势、指法规则、键盘布局、盲打技巧和练习。

教材将按照由浅入深的顺序安排内容,首先介绍打字的正确姿势和指法规则,然后教授键盘布局和盲打技巧,最后布置相应的练习题进行巩固。

三、教学方法针对打字练习的特点,本课程将采用多种教学方法相结合的方式。

首先,通过讲授法向学生讲解打字的理论知识;其次,利用讨论法让学生互相交流打字的心得和方法,促进学生之间的互动;再次,通过案例分析法分析一些典型的打字错误和问题,引导学生学会分析和解决打字中的问题;最后,运用实验法让学生亲自动手进行打字练习,提高学生的实际操作能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备适当的教学资源。

教材将是主要的教学资源,为学生提供系统的打字知识结构和练习题。

此外,参考书将作为辅助资源,为学生提供更多的打字技巧和方法。

多媒体资料将用于课堂演示和学生的自学,帮助学生更直观地理解和掌握打字知识。

实验设备将是教学的重要组成部分,为学生提供实际操作的机会,增强学生的实践能力。

五、教学评估为了全面、客观地评估学生的打字学习成果,我们将采取多种评估方式。

首先,平时表现将占评估总分的30%,包括学生的课堂参与度、练习态度和进步程度;其次,作业将占评估总分的20%,主要评估学生的打字速度和准确性;再次,考试将占评估总分的50%,包括理论知识考试和实际操作考试,以检验学生对打字知识的掌握和运用能力。

最后,学生之间的互相评价将占评估总分的10%,鼓励学生互相学习和进步。

六、教学安排本课程的教学进度将根据学生的实际情况和需求进行安排。

课程设计打字游戏

课程设计打字游戏

汇编语言课程设计设计题目: 指法练习班级: 计算机04-4班学号: 20042390作者: 王丰指导老师: 郑利平日期: 2007.1.5汇编语言课程设计报告-----<打字游戏>一、课程设计目的课程设计使学生更进一步理解和掌握汇编语言知识、程序设计的方法和技巧,使学生能够使用汇编语言分析、设计中小型程序的能力。

通过课程设计,有助于学生更好的了解整个课程的知识体系,锻炼学生运用本课程的知识解决更复杂的实际问题的能力,从而为后续课程的学习、毕业设计以及将来的实际工作打好坚实的基础。

二、设计题目指法练习三、设计要求1、从屏幕上方以一定的时间间隔随机落下可显示字符,字符的出现位置亦是随机的;2、在多个字符下落的过程中可输入任意键,若键入与其中的任意一个字符相匹配的键,则该字符高亮显示并发出蜂鸣声,同时计分;3、按ESC键结束练习并显示命中率;4、再次按ESC键退出。

四、设计环境硬件:PC机,软件: masm5.0五、设计分析指法练习,是在屏幕上以一定的时间间隔随机的下落一写字符,我在程序中的设计方法是从屏幕的第一行开始显示一个字符,然后在用一个时间延时函数延时一段时间,再在此位置显示空格字符,延时后在同一列的下一行显示原字符,如此循环,中间如果有输入正确的字符,则,循环停止, 并同时将此字符高亮显示,方法是改变此字符的属性,并将score加1,然后光标移到第一行还是新的循环.若输入中间字符不正确,循环到21行时,则扬声器发出蜂鸣声,同时life减1.设计中要求每次下落的字符是随机的,我在程序中的设计方法是取系统时间1/100秒,然后将此时间模取26,将得到余数加上61,将此作为输出字符的ASCLL码,如此循环78次,将这些字符存入letter缓冲区,并在屏幕最上方显示出来.开始下落的字母的位置也是随机的,同样取系统时间,,由于一行最多只能有78个字符,所以当取的时间大于等于78时,应减去78,将得到的结果作为取字符的位置,此种随机虽然不是很严谨,但用在此程序中还是很不错的.题目中还要求计算命中率,由于在游戏开始的同时开始了记分,所以在结束游戏时,将得分和错误统计出来,很容易计算出命中率,这里就不做多余的叙述.在题目的要求的基础上,我还给游戏增加了几个难度,其实也很简单,就是控制字母下落的速度,方法是改变每次字符显示的时间间隔,这样从屏幕上看,字母下落就会有快慢.六、程序的模块程序设计时,我没有分模块,只有实现个别功能的几个子程序,分别是发声程序,延时程序,和命中率计算与显示程序,这在原代码中均有注释,在此就不在详细叙述.七、课程设计心得由于课程设计开始的比较早,所以有时间去准备.开始时在网上看了一些资料和例子,搞清楚了程序设计的基本原理.最开始不明白的地方就是如何让字符下落,后来发现就是不停的在屏幕的不同位置显示该字符,加以延时,看起来就像是字符不断的从上面掉下来.随机问题也是本程序的一个难点,看过资料后知道汇编中没有现成的完美的随机函数.所以我就想到取系统时间来制造随机数,因为时间时刻都在变化,而且打字的时间也不一定,结果游戏的随机性还不错,呵呵这学期汇编的学习,自己感觉还不错,平时也练习了不少.从汇编程序的学习中,我觉得自己突然一下子明白了一般程序设计的原理,看程序时,不再感觉茫然,自己写点小程序时,也知道该如何下手.算法上也学到了不少新的东西,总算劳有所获吧!本打算把程序的运行流程图画出来,无奈,最近考试太多,时间实在不够啊,只有在程序中直接注释了,其实程序的思路很清晰,相信大家多能看懂最后,感谢郑利平老师一学期来指导和帮助,也感谢我们班的桑磊同学在课程设计中给我解答疑问!八、源程序如下:;=======================================================================;打字游戏程序;=======================================================================init_game macro op1,op2,op3,op4,op5,op6 ;循环输出,用于初始化界面mov cx,0mov dh,op1 ;起行mov dl,op2 ;起列op6:mov ah,02hmov bh,00hint 10hpush cxmov ah,0ahmov al,op3 ;要显示的字符mov cx,01hmov bh,00hint 10hpop cxinc cxinc op4 ;指出循环输出的是行还是列cmp cx,op5 ;循环次数jne op6endm;=======================================================clean macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6mov bh,00010111bmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int 10hmov ah,2mov bh,0mov dh,0mov dl,0int 10hendm;======================================================menu macro op1,op2,op3 ;用于屏幕上文字的输出mov cx,0mov ah,02hmov bh,00hmov dh,op1mov dl,op2int 10hlea dx,op3mov ah,9int 21hendm;=======================================================data segmentfgf db '===============================================$' ;分隔符menu1 db '1.start game$'menu2 db '2.select level$' ;主界面上显示的内容menu3 db '3.exit$'menu4 db 'select number of menu:$'menu5 db 'author: wangfeng$'menu6 db 'NO. : 20042390$'menu7 db '1.very easy$'menu8 db '2.normal$' ;难度的选择menu9 db '3.hard$'menu10 db '4.return$'menu11 db 'data : 2006.12.24$'meg1 db 'press any key to start the game...$' ;游戏开始之前的提示meg2 db 'press esc key return main menu$'meg3 db 'press space key for pause $'meg4 db 'when the game was paused,press ese to quit!$'meg5 db 'life:$' ;生命数meg6 db 'score:$' ;分数meg7 db 'hit the letter num:$'meg8 db ' miss letter num:$'meg9 db ' the shooting is:$'ma db 0mb db 0sped1 dw 0speed dw 3000d ;游戏的速度,也决定了游戏的难度letters db 78 dup(0) ;上方显示的字母life db 39hposition db 1 ;上方字母的位置用于控制落下的字母time_m db 0time_s db 0xmul db 13n db 26score1 db 0level db 1hang db 0line db 0fen1 db 0fen2 db 0fen3 db 0fen4 db 0fen5 db 0string db '100%$'error db 0data ends;============================================code segmentassume cs:code,ds:data;,ss:stackstart: mov ax,data mov ds,ax ;这里是几个数据的初始化 mov position,1 mov speed,3000 mov level,1 mov sped1,50000 mov error,0 mov score1,0 jiemian: mov ah,01h mov cx,00h or ch,00010000b int 10h ;置光标类型,用于隐藏光标 clean 0,0,24,79 ;下面这些是游戏的初始化 init_game 0,0,08h,dl,80,sk1 init_game 24,0,08h,dl,80,sk2 init_game 0,0,08h,dh,25,sk3 init_game 0,79,08h,dh,25,sk4 menu 5,15,fgf menu 7,25,menu1 ;界面显示 menu 9,25,menu2 menu 11,25,menu3 menu 13,15,fgf menu 15,25,menu4 menu 17,55,menu5 menu 19,55,menu6 menu 21,55,menu11 mov ah,2 mov bh,0 mov dh,15 mov dl,47 int 10h ;把光标放在合适的位置 mov ah,0ah mov al,' ' mov bh,00h mov cx,01h int 10h ;在选择时屏蔽其他的按键,使之不出现在屏幕上 mov ah,1 int 21h input: cmp al,'1' je begin ;当输入字符是1时, ;跳转到begin 开始游戏 cmp al,'2'je to_speed_c ;当输入字符是2时,跳转, ;由于不能直接跳转到 ;speed_c 故用了个转移 cmp al,'3' je to_exit cmp al,1bh je to_exit_d to_otherkey: jmp otherkeyto_exit: mov ah,1 int 21h cmp al,0dh jne to_otherkey jmp exitto_speed_c:jmp speed_cto_exit_d:jmp exit;=================================== begin:mov ah,1int 21hcmp al,0dhjne to_otherkeyclean 1,1,23,78play_message: ;显示有关游戏提示menu 10,18,meg1menu 12,18,meg2menu 14,18,meg3menu 16,18,meg4mov ah,07hint 21hcmp al,1bh;按任意键继续,;不把输入的字符显示在屏幕上je to_jmjmp playto_jm:jmp jiemianplay:clean 1,1,23,78mov life,39hmov ah,2mov bh,0mov dh,1mov dl,1int 10hmov bx,0lea si,lettersoutput_letters: ;显示上方字母mov ah,2chint 21h mov al,dlmov ah,0div nmov dl,ahadd dl,61hmov [si],dlmov ah,2int 21hmov cx,14987call waitfinc siinc bxcmp bx,78je nextjmp output_lettersnext:menu 23,70,meg5menu 23,30,meg6;生命数的相关显示push dxmov ah,2mov bh,0mov dh,23mov dl,76int 10hmov ah,0ahmov al,lifemov bh,0mov cx,1int 10hmov ah,2mov bh,0mov dh,23mov dl,43int 10hmov ah,0ahmov al,score1mov al,30hmov bh,0 mov cx,1 int 10h pop dx jmp game sub_p: sub position,78 cmp position,0 jne next3 inc position next3: jmp game_next game: lea si,letters mov ah,2ch ;伪随机算法,方法是读取1/100秒, int 21h mov al,dl mov position,al cmp position,0 jne next2 inc position next2: cmp position,78 ;和78比较,大于则减去78 ja sub_p game_next: add si,word ptr position dec si mov dl,position ;position 就代表的是列 mov ah,02h mov dh,1 mov bh,0 int 10h ;置光标位置 mov bl,12h temp: mov cx,0 nextrow: push cx mov cx,0 yanchi: ;延迟 push cx mov cx,0 yanchi1: add cx,1 cmp cx,sped1 ;延迟 jne yanchi1 push dx mov ah,06h mov dl,0ffh int 21h pop dxjz pass ;不输入则跳转pass cmp al," " je pause1 ;空格,暂停 jmp skip1 pause1: jmp pause skip1: cmp al,1bh je display;esc,返回到开始时的界面cmp al,[si] je to_disappear ;正确输入,字母消失pass: pop cxinc cx cmp cx,speed ;speed,字母下落速度 je print1 jmp yanchi print1: jmp print to_disappear:mov bh,0 mov ah,3 int 10h mov hang,dh mov line,dl mov bh,0 mov ah,9 mov cx,1 mov bl,1ch int 10h mov ah,2 mov bh,0 mov dh,hang mov dl,line int 10h mov dl,[si] mov ah,2 int 21h call delay0 jmp disappear ;跳到记分段 display: clean 1,1,23,78 call disp mov ah,1 int 21 cmp al,1bh je to_start1 to_start1: jmp start to_exit1: jmp exit pause: push dx mov ah,06h mov dl,0ffh int 21h pop dx cmp al,1bh ;暂停时输入大写的q,则退出游戏 je display cmp al," " ;再次按空格,游戏继续 jne pause jmp pass print: ;在字母处输入空格填 mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10h mov ah,02h mov bh,0 inc dh int 10h ;光标下移一行mov ah,09hmov al,[si]mov bh,0 mov cx,1 int 10h ;输出字母 pop cx inc cx cmp cx,21 ;如果落到第21行还没有消失, ;则life 减一,字母消失 je to_print_next jmp nextrow ;如果没到21行,继续下落 to_print_next: push ax mov al,error inc almov error,al pop ax call sound1 jmp print_next ;change_0: ;jmp print_next disappear: ;正确输入后字母消失 pop cx pop cx mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10h inc score1 ;此处代码是为了同步输出得分 ;和当前life 的剩余值 push ax push bx mov al,score1 mov ah,0 mov bl,10 div bl mov fen1,al mov fen2,ah pop bx pop ax mov ah,2 mov bh,0 mov dh,23 mov dl,43 int 10h mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10h mov ah,0ah mov al,fen1 add al,30h mov bh,0 mov cx,1 int 10h mov ah,2 mov bh,0 mov dh,23 mov dl,44 int 10h mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10hmov ah,0ah mov al,fen2add al,30h mov bh,0 mov cx,1 int 10h mov dh,hang ;输入正确后, ;将该字符在原位置高亮显示 mov dl,line mov bh,0 mov ah,2 int 10h mov ah,9 mov bh,0 mov al,' ' mov cx,1 mov bl,17h int 10hjmp hit to_over: jmp start print_next: ;life 减为0时,游戏结束 sub life,1 cmp life,30h je to_over mov ah,0ah mov al," " mov bh,0 mov cx,1 int 10h mov ah,02h mov dh,23 mov dl,76 mov bh,0 int 10h ;更新life mov ah,0ah mov al,life mov bh,0 mov cx,1 int 10h hit: ;重新把光标移到顶端 mov ah,02h mov bh,0 mov dh,1 mov dl,position int 10h mov ah,2ch int 21h mov al,dl mov ah,0 div n add ah,61h mov [si],ah ;重新在空格处设置一个字母 mov ah,0ah mov bh,0 mov cx,1 mov al,[si]int 10hjmp game speed_c: ;速度选择 mov ah,1 int 21h cmp al,0dh jne otherkey jmp speed_jm otherkey: ;隐藏非法的字符 push ax mov ah,2 mov bh,0 mov dh,15 mov dl,48 int 10hmov ah,0ahmov al," " mov bh,00h mov cx,01h int 10h mov ah,2 mov bh,0 mov dh,15 mov dl,47 int 10h pop ax mov dx,ax mov ah,2 int 21h jmp input speed_jm: ;难度选择的界面 clean 1,1,23,78 menu 6,15,fgf menu 8,30, menu7 menu 10,30,menu8menu 12,30,menu9 menu 14,30,menu10 menu 16,15,fgf menu 18,25,menu4 choose_speed: mov ah,2 mov bh,0 mov dh,18 mov dl,47 int 10h mov ah,1 int 21h choose_next: cmp al,'1' je speed1_1 jmp spe2 speed1_1: jmp speed1 spe2: cmp al,'2' je speed2_2 jmp spe3 speed2_2: jmp speed2 spe3: cmp al,'3' je speed3_3 jmp spe4 speed3_3: jmp speed3 spe4: cmp al,'4' je h_jm cmp al,1bh je h_jm_d h_jm: mov ah,1 int 21h cmp al,0dh jne otherkey1 jmp jiemian h_jm_d: jmp jiemian speed1: mov sped1,50000d jmp begin speed2: mov sped1,40000d jmp begin speed3: mov sped1,20000d jmp begin otherkey1: push ax mov ah,2 mov bh,0 mov dh,20 mov ah,2 mov bh,0 mov dh,15 mov dl,46 int 10h exit: ;退出游戏 mov ah,6 mov bh,7 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,80 int 10h mov ah,2 mov bh,0 mov dh,0 mov dl,0 int 10h ;清屏 mov ah,4ch int 21h waitf proc near push axwaitf1: in al,61h and al,10h cmp al,ah je waitf1 mov ah,al loop waitf1 pop ax ret waitf endp sound1 proc ;一个扬声器实验代码直接抄过来的呵呵 push cx push ax mov cx,1000h in al,61h and al,11111100b out 61h,al again: xor al,2 out 61h,al push cx mov cx,0ffffh continue: nop loop continue pop cx loop again pop ax pop cx sound1 endp ret delay0 proc push cx push ax mov cx,0ffffh delay1: nop mov ax,1000h delay2: dec ax jnz delay2 loop delay1 pop ax pop cx ret delay0 endp disp proc near ;这一段代码是为了显示打字结果的 menu 5, 15,fgf menu 7, 25,meg7 menu 9, 25,meg8 menu 11, 25,meg9 menu 13, 15,fgf push ax push bx mov al,score1 mov ah,0 mov bl,10 div bl mov fen3,al mov fen4,ah pop bx pop ax push ax push dx mov ah,2 mov bh,0 ;显示正确的得分 mov dl,45 mov dh,7 int 10h mov al,fen3 mov dl,al add dl,30hmov ah,2int 21hmov dl,fen4add dl,30hmov ah,2int 21hpop dxpop axpush axpush dxmov al,erroradd al,30hmov fen5,almov ah,2mov bh,0mov dl,45mov dh,9int 10hmov ah,2mov dl,fen5;显示错误的个数int 21hpop dxpop axpush axpush bxpush cxpush dxmov ah,2mov bh,0mov dl,44mov dh,11int 10hmov al,score1 mov dl,error add dl,alcmp al,dlje skipmov bl,10mul bldiv dlmov ma,al;命中率十位mov al,ahmul bldiv dlmov mb,al;命中率个位jmp next1skip:push dxlea dx,string ;如果错误为0,则命中率为100%mov ah,9int 21hpop dxjmp exit1next1:push dxmov dl,maadd dl,30hmov ah,2int 21hmov dl,mbadd dl,30hmov ah,2int 21hmov ah,2mov dl,25h ;输出'%' int 21hpop dxexit1:mov ah,1int 21hcmp al,1bh jne exit1pop dxpop cxpop bx pop ax ret disp endpcode endsend start。

打字母小游戏课程设计

打字母小游戏课程设计

打字母小游戏课程设计一、课程目标知识目标:1. 学生掌握26个英文字母的大小写书写形式及正确发音。

2. 学生能够理解并运用本节课所学的字母相关知识进行游戏。

技能目标:1. 培养学生通过游戏方式,提高英文字母识别速度和准确性。

2. 培养学生团队协作能力,通过小组合作完成游戏任务。

情感态度价值观目标:1. 培养学生对英语学习的兴趣,激发学习积极性。

2. 培养学生遵守游戏规则,养成良好的竞争与合作意识。

3. 培养学生勇于挑战自我,克服困难的勇气和信心。

课程性质:本课程为英语学科一年级教学活动,通过趣味性强的打字母小游戏,帮助学生巩固英文字母知识,提高英语学习兴趣。

学生特点:一年级学生好奇心强,活泼好动,喜欢游戏,但注意力集中时间较短,需要通过生动有趣的教学活动来吸引他们。

教学要求:教师需关注每个学生的学习进度,确保课程内容与学生的实际水平相符,注重培养学生的团队协作能力和情感态度价值观。

在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容本节课以英语课本中“Let's Learn the ABCs”章节为基础,结合以下教学内容:1. 英文字母表的学习:复习26个英文字母的大小写形式,重点讲解易混淆字母的区分,如b/d, p/q等。

2. 字母发音训练:通过听力练习,让学生掌握26个字母的正确发音,特别是元音字母的发音。

3. 打字母小游戏:设计字母接龙、字母猜谜等游戏,让学生在实际操作中巩固字母知识。

4. 团队合作游戏:组织小组竞赛,让学生在游戏中运用所学知识,提高字母识别速度。

教学内容安排和进度:第一课时:复习英文字母表,讲解易混淆字母,进行字母发音训练。

第二课时:开展打字母小游戏,让学生在实际操作中巩固字母知识。

第三课时:进行团队合作游戏,提高字母识别速度,培养学生的团队协作能力。

教材章节关联:本教学内容与课本“Let's Learn the ABCs”章节紧密相关,涵盖了字母学习的基础知识。

课程设计报告打字母

课程设计报告打字母

课程设计报告打字母一、教学目标本课程的教学目标是使学生掌握打字母的基本技能,提高学生的打字速度和准确性。

具体目标如下:1.知识目标:使学生了解打字母的基本概念和技巧,包括正确的打字姿势、指法规则、键盘布局等。

2.技能目标:培养学生能够熟练使用键盘进行打字,达到每分钟20个字符的打字速度,且准确率在90%以上。

3.情感态度价值观目标:培养学生对打字技能的兴趣和重视,提高学生自我学习和自我提升的意识。

二、教学内容本课程的教学内容主要包括以下几个方面:1.打字母的基本概念和技巧,包括正确的打字姿势、指法规则、键盘布局等。

2.打字的练习方法,包括打字练习软件的使用、单词和段落的打字练习等。

3.打字速度和准确性的提高方法,包括打字比赛的参与、打字技巧的分享等。

三、教学方法本课程的教学方法包括以下几种:1.讲授法:通过讲解打字母的基本概念和技巧,使学生掌握正确的打字姿势和指法规则。

2.讨论法:通过小组讨论和分享,让学生互相学习和交流打字技巧和经验。

3.实验法:通过使用打字练习软件和参与打字比赛,让学生实际操作和练习,提高打字速度和准确性。

四、教学资源本课程的教学资源包括以下几种:1.教材:提供相关打字母的教材和参考书,供学生自学和复习。

2.多媒体资料:提供打字技巧和练习的视频教程,帮助学生更直观地学习和理解。

3.实验设备:提供电脑和键盘,供学生进行实际的打字练习和比赛。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解能力。

2.作业:布置定期的打字作业,评估学生的打字速度和准确性,以及对手指的灵活运用能力。

3.考试:进行打字速度和准确性的考试,评估学生的打字技能水平。

评估方式应客观、公正,能够全面反映学生的学习成果。

教师应及时给予反馈,帮助学生了解自己的不足之处,并加以改进。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节和内容进行教学,确保学生掌握打字母的基本技能和知识。

课程设计MFC打字游戏

课程设计MFC打字游戏

附件:集中上机实习报告封面模板集中上机实习报告指导教师:甘玲姓名:陈琪学号:2020211794班级:0491002时间:一、需求分析接到课程设计任务后,咱们对曾经超级感爱好的几款经典小游戏作了分析并挑选,然后依照老是给的推荐题目和自己的编程能力做了选择,决定了编写在dos化境下的打字游戏,锻炼在自己对函数,指针,类的综合运用,和对颜色操纵函数的利用。

在windows窗口环境下实现打字游戏的运行,正确与错误字符的统计,和时刻的统计。

游戏开始后,屏幕上方同时有四个数字分四列下落,每一个数字由三位组成(随机生成,但首位不可相同)。

玩家用键盘依次输入数字,若是输入的数字序列与某一列正在下落的数字三位全数相同,那么给玩家加10分,该列数字消失,该列新产生数字并下落;若是输入的数字某一名不相同,那么输入的数字序列全数作废,从头接收输入。

某一列数字抵达屏幕底部那么游戏终止二、整体设计说明1.设计思路用结构体存储每组数字,然后利用MFC里面的Timer作为时刻流程,并重写对话框类里面的OnPaint()函数实现图形的绘制操作操纵:如图1所示三、代码实现本程序MFC要紧代码// 打字游戏Dlg.cpp : implementation file//// 打字游戏Dlg.h : header file//#if !defined(AFX_DLG_H__C9D22D72_CFA5_4621_8784_36A4BE47F2E5__INCLUDED_) #define AFX_DLG_H__C9D22D72_CFA5_4621_8784_36A4BE47F2E5__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogstruct Number{int n[3];int x;int y;int color[3];//判定是不是被键入};class CMyDlg : public CDialog{// Constructionpublic:CMyDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DATA(CMyDlg)enum { IDD = IDD_MY_DIALOG };// NOTE: the ClassWizard will add data members here//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyDlg)public:virtual BOOL PreTranslateMessage(MSG* pMsg);protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected:HICON m_hIcon;struct Number number[4];//数字int flag,now;//flag为选中列,now为位数// Generated message map functionsvoid SetInit();//初始化随机数int isSame();//判定是不是相同int isWin(int flag);//判定成功void setNew(int flag);//新增随机数int isLost();//判定是不是失败int count;//记分器//{{AFX_MSG(CMyDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnTimer(UINT nIDEvent);afx_msg void Onstart();afx_msg void Onabout();//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCA TION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif// !defined(AFX_DLG_H__C9D22D72_CFA5_4621_8784_36A4BE47F2E5__INCLUDED_)#include "stdafx.h"#include "打字游戏.h"#include "打字游戏Dlg.h"#include "time.h"#include "string.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_TIMER()ON_COMMAND(ID_start, Onstart)ON_COMMAND(ID_about, Onabout)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg message handlersBOOL CMyDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization hereSetInit();//初始化随机数SetTimer(1,500,NULL);//初始化时刻return TRUE; // return TRUE unless you set the focus to a control}void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CMyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CPaintDC dc(this);dc.SetBkMode(TRANSPARENT);dc.TextOut(360,320,"你的分数:");dc.TextOut(440,320,itoa(count,new char,10));for(int i=0;i<4;i++){for(int j=0;j<3;j++){if(number[i].color[j]==1)dc.SetTextColor(RGB(255,0,0));if(number[i].color[j]==0)dc.SetTextColor(RGB(0,0,0));if(number[i].color[j]==-1)continue;dc.TextOut(number[i].x+j*7,number[i].y,itoa(number[i].n[j],new CHAR,10),1);}}CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CMyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}//初始化随机四列数字void CMyDlg::SetInit(){int i,j,r;int num[10]={0,1,2,3,4,5,6,7,8,9};count=0;//初始化分数flag=-1,now=0;//flag为选中列,now为位数srand(time(NULL));for(i=0;i<3;i++)//每组的第i个{do{for(j=0;j<4;j++){r=rand()%9;this->number[j].n[i]=num[r];}}while(i==0&&isSame()==1);}for(i=0;i<4;i++){number[i].y=0;number[i].x=50+100*i;for(j=0;j<3;j++)number[i].color[j]=0;}}//判定首位是不是相同int CMyDlg::isSame(){int flag=0;for(int i=0;i<3;i++)for(int j=i+1;j<4;j++){if(number[i].n[0]==number[j].n[0]){return 1;}}return flag;}//获取消息,键盘按键事件BOOL CMyDlg::PreTranslateMessage(MSG* pMsg){// TODO: Add your specialized code here and/or call the base classint i,j;if(pMsg->message== WM_KEYDOWN){//当初始为第一个数字的时候if(flag==-1){for(i=0;i<4;i++){if(number[i].n[0]==pMsg->wParam-48){//击中第一个数字number[i].color[0]=1;now++;//now记录当前位数flag=i;//记录当前列}}}else{if(number[flag].n[now]==pMsg->wParam-48)//持续击中数字{number[flag].color[now]=1;now++;if(isWin(flag)==1){//若是赢了count+=10;for(i=0;i<3;i++)number[flag].color[i]=0;setNew(flag);//从头创建number[flag].y=0;Invalidate(true);flag=-1;now=0;}}else//输错了就从头开始{//从头清0for(i=0;i<3;i++)number[flag].color[i]=0;flag=-1;now=0;}}Invalidate(true);}return CDialog::PreTranslateMessage(pMsg);}//判定某个数字是不是能够消掉int CMyDlg::isWin(int flag){for(int i=0;i<3;i++){if(number[flag].color[i]==0)return 0;}return 1;}void CMyDlg::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call default CString cs="失败了,你的得分是:";cs+=itoa(count,new char,10);if(nIDEvent==1){for(int i=0;i<4;i++)number[i].y+=10;if(isLost()==1){KillTimer(1);MessageBox(cs);}Invalidate(true);}CDialog::OnTimer(nIDEvent);}//新增随机数void CMyDlg::setNew(int flag){int r,i;int num[10]={0,1,2,3,4,5,6,7,8,9};srand(time(NULL));do{for(i=0;i<3;i++){r=rand()%9;this->number[flag].n[i]=num[r];}}while(isSame()==1);}int CMyDlg::isLost(){//判定是不是失败for(int i=0;i<4;i++){if(number[i].y>280)return 1;}return 0;}void CMyDlg::Onstart(){// TODO: Add your command handler code here SetInit();//开始游戏SetTimer(1,500,NULL);Invalidate(true);}void CMyDlg::Onabout(){// TODO: Add your command handler code hereMessageBox("运算机,陈琪");}四、问题解决本次碰到了要紧两个问题;1.确实是设计存储结构的时候,最开始用的数组,可是后来通过测试的时候发觉不容易操纵,然后通过认真试探决定用结构体数组,如此简便,使得存储加倍方便2.第二个确实是掉下来的数字可能有相同的,就会显现打字错误,认真检查后终于发觉了那个问题,采纳在之前先检查随机数是不是重复五、总结展望参考资料和程序成品,我了解了游戏的最大体形式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2016-2017学年第一学期
《Windows程序设计》
课程设计报告
题目:小小打字游戏设计
专业:
班级:
姓名:
指导教师:
成绩:
二0一六年十一月十五日
目录
1 设计内容及要求 (1)
1.1 设计内容 (1)
1.2 系统功能 (1)
1.3 信息存储功能 (1)
2 系统设计 (1)
2.1 数据库设计 (1)
2.1.1 GameUser表 (1)
2.1.2 GameInfo表 (2)
2.2 游戏系统设计 (2)
2.2.1 程序项目设计 (2)
2.2.2 功能模块设计 (2)
3 C#系统实现 (5)
3.1 类图 (5)
3.2 核心代码 (6)
3.3 MySqlConn类 (10)
3.4 MainForm类 (11)
3.5 菜单事件 (12)
3.6 窗体键盘事件 (13)
3.7 MyRandom类 (15)
3.8 Program类 (16)
4 总结 (17)
4.1 收获 (17)
4.2 反思 (17)
5 参考文献: (18)
1 设计内容及要求
1.1 设计内容
软件名称:小小打字游戏
需求分析:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。

1.2 系统功能
(1)、登录功能:启动软件,出现登录界面,用户输入账号密码,正确后方可进入游戏;
(2)、注册功能:不存在的用户,可以注册;
(3)、软件互斥:通过创建互斥变量,使打字游戏软件只能单独开启一个;
(4)、游戏控制:按F1开启游戏,F2暂停游戏,F3继续游戏,F4使用游戏积分兑换生命值;
(5)、游戏显示:游戏窗口随机下落颜色不定的A到Z 26个字母,并根据游戏得分实时增加字母下落的速度;
(6)、游戏操作:按下键盘上的A-Z 26个字母键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1;
(7)、数据保存和清除:使用数据库保存用户的游戏数据,并可调用数据库数据显示在游戏界面上显示,管理员账号可以清除游戏数据记录;
(8)、游戏界面信息显示:显示相应的游戏状态信息,暂停游戏提示,结束游戏提示以及游戏排名。

1.3 信息存储功能
需要存储的信息: (1)游戏分数、(2) 游戏等级、 (3) 用户、
(4)密码、(5)游戏开始时间、(6)游戏结束时间。

2 系统设计
2.1 数据库设计
2.1.1 GameUser表
表1 GameUser表
GameUser表:用于设置(1)用户ID;(2)用户名;(3)用户密码
2.1.2 GameInfo表
表2 GameInfo表
GameInfo表:用于设置(1)自增主键ID;(2)用户ID;(3)存储游戏开始时间;(4)存储游戏结束时间;(5)游戏结束时达到的等级;(6)游戏结束时的分数
2.2 游戏系统设计
2.2.1 程序项目设计
新建项目:在VS2010上建立”小小打字游戏”项目,进行“小小打字游戏”界面和相应按钮控件的设计以及相关代码的编写等操作。

2.2.2 功能模块设计
(1)、系统模块图:
图1 模块设计图
1)数据库模块:用于存储用户相关信息,如:用户ID、用户姓名、用户密码等;2)用户登录模块:主要为用户登录界面,包括用户名、用户密码等操作框;3)用户注册模块:用于新用户的信息注册以及密码设置等;
4)随机产生字母模块:游戏主界面上随机出现A、B、C…Z等26个字母;
5)消除字母模块:用户键盘输入屏幕上出现的字母进行消除操作,累计得分;6)游戏控制模块:通过游戏主界面上的F1、F2…等键控制游戏的暂停、开始、继续等操作,实现用户对游戏的基本操作控制;
7)显示数据模块:用户在游戏时,显示相关数据,如:开始时间、游戏成绩等。

(2)、操作流程图:
图2 流程图
1)鼠标单击“小小打字游戏”图标,运行程序;2)进入用户登陆界面,输入用户的账号密码,若密码错误,则返回用户登录界面重新输入账号和密码,若密码正确,则进入游戏主窗口;新用户可选择用户注册按钮进行相关信息的填写和用户信息的注册登录;若要终止游戏可选择关闭退出按钮退出游戏;3)按游戏主界面上的F1、F2、F3等键可以控制游戏的暂停、开始、继续等操作;若要终止游戏可选择关闭退出按钮退出游戏;4)游戏结束可以选择关闭退出按钮退出游戏;也可以选择继续游戏。

3 C#系统实现
3.1 类图
图3游戏主要类图
图4 游戏主窗体类图
图5 游戏主窗体类图
3.2 核心代码
(1)、程序配置文件:用于设置数据库连接字串,存储用户相关信息
(2)、Login窗体:存储字段
图6 用户登录界面及相应代码
用于用户名、用户密码的输入以及登录按钮
(3)、Login窗体:注册按钮事件
图7 用户注册界面及相应代码
用于新用户的信息注册以及密码设置等
(4)、如果查寻用户名不存在,提示用户注册新账号:
(5)、Register窗体类:
3.3 MySqlConn类
(1)、Using System.Configuration :需要通过配置文件,获得数据库连接字串,故需要引用命名空间
(2)、封装的数据库连接示例:
3.4 MainForm类
(1)主游戏窗体类:存储字段
3.5 菜单事件
(1)、菜单事件:
图8 游戏主界面,暂停游戏情况及相应代码
通过游戏主界面上的F1、F2…等键控制游戏的暂停、开始、继续等操作,实现用户对游戏的基本操作控制
3.6 窗体键盘事件
(1)、窗体键盘事件详细代码:
图9 游戏主界面
主界面有菜单栏,其控件中有操作提示信息:F1、F2、F3、F4相应功能及相应代码用户键盘输入屏幕上出现的字母进行消除操作,累计得分
(2)、其他功能函数:
3.7 MyRandom类
(1)、获取字母函数:
游戏主界面上随机出现A、B、C…Z等26个字母
图10 游戏主界面,结束游戏显示情况
用户在游戏结束时,显示相关数据,如:开始时间、游戏成绩等3.8 Program类
在static void Main()函数中创建互斥体变量,避免游戏多开:
图11 版本信息
4 总结
4.1 收获
在这短短的两周时间里我收获如下:
(1)、巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力;(2)、培养了我选用参考书,查阅手册及文献资料的能力和独立思考、深入研究、分析问题、解决问题的能力;
(3)、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法;
4.2 反思
根据我在课程设计中遇到的问题,我将在以后的学习当中注意以下几点:(1)、认真上好专业实验课,多在实践中锻炼自己;
(2)、写程序的过程中要考虑周到,严密,做好实验总结,时常复习;(3)、在做设计的时候要有信心,有耐心,切勿浮躁;
(4)、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用;
(5)、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

5 参考文献:
[1]王晶.Visual C#.NET Web6.0基础[M].辽宁:辽宁教育出版社,2002
[2]郑阿奇、梁敬东.C#程序设计教程[M].北京:机械工业出版社,2015
[3]陈伟.SQL Server 2005数据库应用与开发教程[M].清华大学出版社,2007
[4]谭浩强.C程序设计(第四版)[M].清华大学出版社,2010
[5]赵民.新概念Visual C#.NET Web教程[M].北京:北京海淀出版社,2000。

相关文档
最新文档