汇编课程设计打字游戏
第七课打字游戏教学设计

第七课打字游戏教学设计第一篇:第七课打字游戏教学设计第7课打字游戏教学目标1、通过打字游戏熟悉键盘的键位分布,明确手指分工。
2、掌握正确的键盘操作姿势与击键要领3、培养学生良好的坐姿及击键习惯;体验游戏化学习的乐趣。
教学重点:掌握正确的键盘操作姿势和击键要领;找准基本键、明确手指分工;提高击键的速度和正确率。
教学难点:掌握正确的键盘操作姿势和击键要领;提高击键的速度和准确性课时安排:1课时课前准备:安装金山打字通2003,多媒体电脑房教学过程一、情境导入通过前几节课键位分区课程训练后,同学们基本上已掌握26个字母的位置了。
这节课,我们要进入打字游戏,进行指法综合运用大比拼啦!同学们有没有信心夺冠?!二、打字游戏(一)简单介绍游戏规则(广播教学)今天我们要进行“打鼹鼠”游戏比赛,首先,同学们打开金山打字通软件,进入打字游戏,选择“鼹鼠的故事”。
下面,老师简要介绍一下游戏规则,我们可以看到每个鼹鼠出现时都举着一个牌子,上面标有一个字母,只要从键盘上击中该字母即可。
(进行游戏演示)(二)、学生自主游戏(取消广播教学)好,看来同学们都已经迫不及待地想玩这个游戏了,那就先让大家自主游戏20分钟热热身吧。
在游戏过程中,老师只强调两点,一要注意打字的正确姿势和手指分工。
因为这直接影响我们的眼睛和输入速度。
另外,凡出现游戏过火现象的同学,老师会对其进行黑屏冷静处理。
希望同学们能够合理控制好情绪。
(遏制一些学生胡乱敲击键盘现象)在学生玩游戏时,进行巡视指导,主要是纠正学生的指法、击键动作以及坐姿等。
(三)引导学生集体游戏刚才,同学们进行了几种打字游戏的自主练习,可以看出大家都学得非常开心。
那大家想不想和其他同学比比,看看谁的打字水平更胜人一筹?!好,现在我们来进行一场趣味打字比赛吧!首先,我们一起进入“鼹鼠的故事”1、设置游戏速度要求:游戏时间设置为5分钟鼹鼠出现时间间隔为3 停留时间为72、比赛过程中,进行巡视指导。
汇编语言课程设计报告打字练习程序

提供全套毕业设计,欢迎咨询汇编语言课程设计报告程序题目:打字练习程序学生姓名:XX班级:2010级计算机科学与技术专业4班学号:XXX院系:计算机科学学院指导教师:XXX—I—目录1设计目的 (3)2概要设计 (3)2.1 系统总体分析 (3)2.2主模块框图及说明 (4)3 详细设计 (5)3.1 主模块及子模块说明 (5)3.2 各模块详细设计 (5)3.2.1主界面模块 (5)3.2.2随机字母产生模块 (7)3.2.3字母落下模块 (9)3.2.4暂停模块 (10)4.程序调试 (11)4.1运行界面分析 (11)4.2调试过程及分析 (13)5心得体会 (13)5.1 设计体会 (13)5.2 系统改进 (13)参考文献 (14)附:程序源代码 (14)陕西师范大学汇编语言课程设计实验报告1设计目的本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。
通过课程设计,主要达到以下目的:1. 增进对汇编语言的认识,加强用汇编语言编程的能力;2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;5. 掌握屏幕输出显示的设计方法。
2概要设计2.1 系统总体分析根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。
2.字母自动落下。
3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。
4.按下“Ese”键则程序返回到主界面。
5.按空格键游戏暂停。
6.在主界面按“E”则程序退出。
打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。
C#课程设计报告-打字游戏

课题名:C#课程设计题目:小小打字游戏学生姓名:XXXXXX 学号: 1008060255 班级:计科101班院系:计算机科学与信息学院专业年级:计算机科学与技术2012年12月 2 日一、需求分析软件名称:小小打字游戏(1)描述:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。
(2)系统功能:①、登录功能:启动软件,出现登录界面,用户输入账号密码,正确后方可进入游戏。
②、注册功能:不存在的用户,可以注册。
③、软件互斥:通过创建互斥变量,使打字游戏软件只能单独开启一个。
④、游戏控制:按F1开启游戏,F2暂停游戏,F3继续游戏,F4使用游戏积分兑换生命值。
⑤、游戏显示:游戏窗口,随机下落颜色不定的A到Z 26个字母,并根据游戏得分实时增加字母下落的速度。
⑥、游戏操作:按下键盘上的A~Z 26个字母键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1。
⑦、数据保存和清除:使用数据库保存用户的游戏数据,并可调用数据库数据显示在游戏界面上显示,管理员账号可以清除游戏记录数据。
⑧、游戏界面信息显示:显示相应的游戏状态信息,暂停游戏提示,结束游戏提示即游戏排名。
需要存储的数据信息:1、游戏分数2、游戏等级3、用户4、密码5、游戏开始时间6、游戏结束时间二、系统设计(图表方式,要有说明部分)(1)新建程序项目:在VS2010上建立小小打字游戏项目。
(2)设计界面:①、如图1-1、即为用户登录界面:有三个控件(2个Label控件,1个Button控件),界面背景图片由Photoshop图片处理软件设计。
图1-1、用户登录界面②、图1-2、为注册用户界面,两个Label控件、1个Button控件。
图1-2、用户注册界面③、图1-3、为游戏主界面图1-3-1、游戏主界面游戏有菜单栏控件,有操作提示信息:F1、F2、F3、F4相应功能图3-1-2、游戏主界面,暂停游戏情况图3-1-3、游戏主界面,结束游戏显示情况图4-1、版本信息(3)功能模块设计1、系统模块2、操作流程图三、数据库设计(数据库类软件)GameUser 表:属性名类型长度可空备注ID int 否主键,自增ID UserName nvarchar 50 可用户名Password nchar 10 可密码GameInfo 表:属性名类型长度可空备注IDD int 否主键,自增IDUserID int 可用户ID,即GameUser表的ID值BeginTime datetime 可存储游戏开始时间OverTime datetime 可存储游戏结束时间GameLevel int 可游戏结束时达到的等级GameScores int 可游戏结束时的分数四、系统实现(1)类图(2)核心代码:程序配置文件:用于设置数据库连接字串Login窗体:存储字段Login窗体:注册按钮事件如果查寻用户名不存在,提示用户注册新账号:Register窗体类:MySqlConn类:(需要通过配置文件,获得数据库连接字串,故需要引用命名空间:using System.Configuration;)封装的数据库连接示例:MainFrm 主游戏窗体类:存储字段:菜单事件:其他事件(时钟事件,和键盘事件)窗体键盘事件详细代码:其他功能函数:具体核心功能代码:字母飘动下落函数:创建字母函数:myRandom类获取字母函数:Program类:在static void Main()函数中创建互斥体变量,避免游戏多开五、总结经过一学期的C#学习,我对C#有了进一步的认识和掌握。
java课程设计字母打字游戏

java课程设计字母打字游戏一、教学目标本节课的教学目标是让学生掌握Java编程的基本语法和流程控制,能够使用Java编写简单的字母打字游戏。
具体来说,知识目标包括:1.理解Java的基本数据类型和变量。
2.掌握Java的运算符和表达式。
3.熟悉Java的流程控制语句,包括条件语句和循环语句。
技能目标包括:1.能够使用Java编写简单的程序,实现基本的输入输出。
2.能够使用Java的流程控制语句,实现程序的逻辑控制。
3.能够独立完成字母打字游戏的编写和调试。
情感态度价值观目标包括:1.培养学生对编程的兴趣和热情,提高学生的问题解决能力。
2.培养学生团队合作的精神,鼓励学生在课堂上积极互动和交流。
3.培养学生对编程的持续学习和探索的态度,激发学生的创新意识。
二、教学内容本节课的教学内容主要包括Java的基本语法和流程控制。
具体安排如下:1.介绍Java的基本数据类型和变量,包括整数类型、浮点类型、字符类型和布尔类型。
2.讲解Java的运算符和表达式,包括算术运算符、比较运算符、逻辑运算符和赋值运算符。
3.学习Java的流程控制语句,包括条件语句(if-else)和循环语句(for、while、do-while)。
4.通过案例分析和实践,让学生掌握条件语句和循环语句的使用,编写简单的字母打字游戏。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法相结合的方式。
具体方法如下:1.讲授法:教师讲解Java的基本语法和流程控制,为学生提供系统的知识框架。
2.案例分析法:通过分析具体的字母打字游戏案例,让学生理解和掌握Java编程的方法。
3.实验法:学生动手实践,编写和调试字母打字游戏,培养学生的实际编程能力。
4.小组讨论法:学生分组合作,互相交流和讨论,培养学生的团队合作精神和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本节课将利用多种教学资源。
具体资源如下:1.教材:《Java编程入门》教材,为学生提供基础知识的学习材料。
打字母小游戏课程设计

打字母小游戏课程设计一、课程目标知识目标: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课时。
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 语言编程知识,提高编程技能。
汇编语言课程设计打字游戏

目录1. 课程设计目的及内容 (2)1.1 课程设计目的 (2)1.2 课程设计内容 (2)2. 开发环境 (2)2.1 软、硬件环境 (2)2.2 MASM开发环境 (3)3.功能分析 (3)3.1 基本功能设计 (3)3.2系统程序流程图 (4)4. 调试和运行程序 (5)4.1 程序调试 (5)4.2 程序运行 (6)5. 课程设计总结 (8)6. 参考文献 (8)附录 (9)源程序代码 (9)打字游戏1. 课程设计目的及内容1.1 课程设计目的汇编语言是一项实用性很强的技术,学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力。
学会查阅和汇编语言相关的规范,手册等技术资料。
能正确绘制和使用流程图。
掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。
1.2 课程设计内容此课程设计中,实现的主要功能是在屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块,屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处, 小球或小方块消失,但如果在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失,英文字母消失或落到底端后,顶端原字母的空处出现另一新字母,按空格键则暂停,再按空格键字母继续下落,如过底端小球或小方块消失后,则不再出现。
2. 开发环境2.1 软、硬件环境软件环境:操作系统:Windows 8 64位(DirectX 11)、BIOS系统DOS系统硬件环境:处理器:英特尔第三代酷睿i3-3110M @ 2.40GHz 双核内存:4GB(三星DDR3 1333MHz)主硬盘:希捷ST500LM012 HN-M500MBB (500GB/5400转/分)显示器:三星SEC3649(14 英寸)2.2 MASM开发环境Masm是汇编编译器,是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发的优点,支持伪指令和宏汇编,最后编译生成obj文件,通过link工具连接成可执行文件exe。
课程设计MFC打字游戏

集中上机实习报告一、需求分析1.选题接到课程设计任务后,我们对曾经非常感兴趣的几款经典小游戏作了分析并筛选,然后根据老是给的推荐题目以及自己的编程能力做了选择,决定了编写在dos化境下的打字游戏,锻炼在自己对函数,指针,类的综合运用,以及对颜色控制函数的使用。
2.功能在windows窗口环境下实现打字游戏的运行,正确与错误字符的统计,以及时间的统计。
游戏开始后,屏幕上方同时有四个数字分四列下落,每个数字由三位组成(随机生成,但首位不可相同)。
玩家用键盘依次输入数字,如果输入的数字序列与某一列正在下落的数字三位全部相同,则给玩家加10分,该列数字消失,该列新产生数字并下落;如果输入的数字某一位不相同,则输入的数字序列全部作废,重新接收输入。
某一列数字到达屏幕底部则游戏结束二、总体设计说明1.设计思路用结构体存储每组数字,然后利用MFC里面的Timer作为时间流程,并重写对话框类里面的OnPaint()函数实现图形的绘制2.程序框图操作控制:如图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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主菜单部分如下图所示:
选择时效果如下图所示
在输入的字符不是1~5或ESC键时,不会有任何反应,当多次键入1~5或ESC键时,按最后一次键入的有效,选择游戏难度后,键入ENTER键开始游戏。
进入游戏后提示信息如下图所示:
这里用了一个INT 21H的中断,等待接收一个字符来继续程序。同时给出了游戏过程中的一些提示。
;宏部分
;**************************************
;宏名:INIT_GAME
;功能描述:初始化游戏,设置游戏的边框等
INIT_GAME MACRO OP1,OP2,OP3,OP4,OP5,OP6
MOVCX,00H
MOVDH,OP1
MOVDL,OP2
OP6:
MOVAH,02H
描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。
2、总体设计(程序设计组成框图、流程图)
3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,过程调用关系描述等))
4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
5、测试结果,用几组测试数据进行测试算法设计的正确性。
再之后我发现不懂得如何控制游戏的速度,我就上网搜索,看别人的程序,最后发现可以使用一个循环,占用系统的CPU时间但不做任何处理,这样就可以当做延迟使用。同时设定不同的延迟时间,来控制游戏速度。
在写程序的过程中我发现了很多原来上课没有说到的中断调用,比如INT 10H,
INT 0AH等等,这些我们都没有见到过,但是在写程序的过程中又需要多次使用,这给我造成了很大的困扰。我多次上网查找相关的资料和相关的实例,多次试验后终于初步了解了这些中断调用的用法。
_________________________________________
_________________________________________
_________________________________________
评阅成绩:____评阅教师:___
课程设计报告的要求
1、需求分析
当我拿到这次课程设计的题目选择时,有点无从下手的感觉,最后选择了这个打字游戏,因为我对游戏本来就有比较大的兴趣。
当是在写程序的过程中发现了很多很多的问题,比如最开始不知道该如何设计布局,设计游戏界面。我上网找别人写好得程序,学习别人的布局方法,终于有了一点设计的思路,让我感觉有设计的想法了。
后来在设计游戏的时候发现不知道该如何产生下落的字母,起初是想使用一个产生随机数的模块,大体思路是调用系统的时间,然后再把它除上26,求出它的余数。但是在使用的过程中发现不知道该如何控制它为字母,在使用的时候会出现一些乱码,所以我就放弃了。后来就定义了一个无顺序的字母串,让它代替产生随机的字母,但是因为不是随机产生的,所以有一定的顺序,这是这个程序不足的地方。
6、附录。源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。
《汇编语言》课程设计案例
一、问题陈述及其需求分析
要求:利用汇编语言编写一个小的打字游戏
内容:编写程序,在打开的菜单页面中选择游戏的难度。
难度选择包括以下5个选择
(1)very slow
(2)slow
(3)normal
(4)fast
这次的课程设计让我有很大的收获,不仅编写出了一个小游戏,还让我懂得应用一些原来课上没有机会用得一些知识。但是编写的过程中还有很多的遗憾,比如无法产生随机数,或者计时出错等等问题。在以后的学习中,要更注意。
附录:程序主要代码
;**************************************
在选择过后会跳出一个提示界面,提示在游戏时的一些注意事项,之后键入任意键进入游戏,开始游戏。
三、详细设计
游戏程序框图
此部分是进入游戏以后的设定,先初始化边框,同时将屏幕上方的字母初始化,将屏幕下方添加代表“生命”的笑脸,当笑脸全部消失,则游戏失败,退出游戏。在游戏过程中,键入ESC建,则直接退出游戏。
MOVBH,00H
INT 10H
PUSHCX
MOVAH,0AH
MOVAL,OP3
MOVBH,00H
MOVCX,01H
INT 10H
POPCX
INCCX
INCOP4
CMPCX,OP5
JNE OP6
ENDM
;功能描述:初始化屏幕
;参数:(OP1,OP2)为左上角坐标
;(OP3,OP4)为右下角坐标
CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4
游戏过程如下图所示:
提示:在游戏过程中程序之识别大写字母,需要打开大写锁定进行游戏,否则不管输入正确与否,都不会有变化。
游戏失败时界面如下图:
输入ENTER键继续,输入其他键没有任何变化。
失败以后的提示画面如下:
键入ENTER键则返回主菜单,键入ESC键退出程序。
退出程序的界面如下图:
5.总结与体会
(5)very fast
在编写过程中包括以下几个部分:
(1)初始化上部分的字母
(2)获得下落的字母
(3)字母下移,同时覆盖原来的字母
(4)判断是否有输入
(5)若无输入则下落到最后
(6)覆盖原Байду номын сангаас的字符
(7)重新进行循环
二、总体设计
主菜单流程图
这个菜单部分主要是为了给不同水平的玩家选择游戏的速度,菜单上有对不同难度的描述,有助于玩家的选择。
华北科技学院
课程设计说明书
专业:网络工程
课程名称:汇编课程设计
设计题目:打字游戏设计
设计时间:2011-12-05至2011-12-16
评语: ________________________________
_________________________________________
_________________________________________
字母下落部分流程图
这个部分是游戏的核心部分。主要的想法是在某个地方出现字母,然后延迟一段时间
(延迟时间由游戏速度控制),判断是否有输入字符,同时判断字符是否为空格或者正确的字符。输入的字符正确,则用空格覆盖当前的字符,同时产生下一个字母,重复上面的过程。
若没有输入字符,则用空格覆盖当前字符,将当前字符在下一格处显示出来,不断的重复,直到最后笑脸处,将笑脸用空格覆盖,同时产生一个新的字母。