汇编课程设计打字游戏
第七课打字游戏教学设计
第七课打字游戏教学设计第一篇:第七课打字游戏教学设计第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.第二个就是掉下来的数字可能有相同的,就会出现打字错误,仔细检查后终于发现了这个问题,采用在之前先检查随机数是否重复五、总结展望参考资料和程序成品,我了解了游戏的最基本形式。
汇编课程设计打字游戏
;程序中要用到的一些宏指令及其说明
getChar MACRO char;调用1号功能,接收一个字符,将字符放在char里
PUSHAX
MOVAH,1
INT 21H
MOVchar,AL
POPAX
ENDM
showChar MACRO char;调用2号功能显示字符
PUSHAX
PUSHDX
INT 10H
POPAX
ENDM
initWindow MACRO A,B,C1,C2,D1,D2;初始化窗口或窗口内容向上卷动,也可以用于清屏
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,A;上卷行数
MOVBH,B;卷入行属性(颜色)
MOVCH,C1;左上角行号
MOVCL,C2;左上角列号
DB'Start',0dh,0ah,'$'
DB'Setting',0dh,0ah,'$'
DB'Quit',0dh,0ah,'$'
KickDB?
XDB?
YDB?
ErrorMsgDB'Error!',0dh,0ah,'$'
EXITMsgDB' You really want to exit,enter Y to exit,and N to continue! (Y/N)',0dh,0ah,'$'
在具体实现的过程中遇到了很多困难。由于自己的电脑是64位的不兼容,所以平时对编好的程序在windows环境下用记事本打开程序对其进行说明注释,由于使用了中文,所以回到dos环境时出现了乱码。本次课程设计让我们充分了解了汇编在实际软件开发中的作用和地位。在这次课程设计过程中我们把课堂上的知识充分运用了还是不能完成实际软件开发。这说明程序开发是不能够停留在书本上的,想要把程序作好,必须要不断通过各种途径掌握更多更好的知识,并且最重要的是要将获得的知识运用到实际编程中,要学以致用。本次课程设计是自由分组、自由选题。我们可以根据我们的兴趣和优势来选择题目。通过这次编写打字游戏程序的课程设计,最基本的收获是我了解了汇编语言编写程序的步骤:先确定程序要实现的功能,接着定义需要的寄存器、存储器,画出流程图。然后逐个模块实现其功能。此次的课程设计,提高了我阅读和分析程序的能力,以及模仿能力。编程能力实事求是地说还有待提高,觉得自己逻辑性太差,但相对于原来学的高级语言,对汇编很感兴趣,最终虽然不会从事汇编的编程工作,但知识就是力量,学习汇编拓展了自己的知识面。
打字游戏教案及反思
打字游戏教案及反思教案标题:打字游戏教案及反思教案目标:1. 帮助学生掌握基本的打字技能,包括正确的手指位置、按键方法和速度控制。
2. 提高学生的打字准确性和速度。
3. 培养学生对打字的兴趣和积极性。
教学资源:1. 打字游戏软件或在线打字游戏网站。
2. 打字键盘。
3. 计算机或笔记本电脑。
教学步骤:引入活动:1. 向学生介绍打字游戏的重要性和好处,如提高工作效率、减少错误率等。
2. 与学生讨论他们对打字游戏的了解和经验。
主体活动:步骤1:讲解基本打字知识1. 向学生展示正确的手指位置和按键方法。
2. 解释键盘上各个键的功能和位置。
3. 演示如何使用正确的手指位置进行打字。
步骤2:练习打字技能1. 学生跟随教师一起练习打字,重点放在正确的手指位置和按键方法上。
2. 教师提供一些简单的打字练习,如打印字母表、常用单词等。
步骤3:进行打字游戏1. 学生使用打字游戏软件或在线打字游戏网站进行练习。
2. 学生可以选择适合自己水平的游戏难度,并逐渐提高挑战。
步骤4:评估学生的打字技能1. 设计一些评估练习,包括打字速度和准确性的测试。
2. 为学生提供反馈和建议,帮助他们改进打字技能。
总结活动:1. 与学生讨论他们在打字游戏中的体验和收获。
2. 强调持续练习的重要性,并鼓励学生在日常生活中多加练习打字技能。
教案反思:1. 教师应提前测试打字游戏软件或在线网站的可用性和适应性。
2. 教师应根据学生的实际水平和需求,选择合适的打字游戏和练习内容。
3. 教师应鼓励学生积极参与,提供正面的激励和反馈,以增强学生的学习动力。
4. 教师应关注学生的进展,并根据需要进行个别辅导和指导。
通过本教案的实施,学生将能够逐步掌握基本的打字技能,并在打字游戏中提高准确性和速度。
同时,他们也会培养对打字的兴趣和积极性,为今后的学习和工作打下坚实的基础。
汇编语言程序设计课程设计-打字练习程序的设计
课程设计2013~ 2014学年第二学期设计题目汇编语言程序设计课程设计-打字练习程序的设计院(系)计算机科学与信息工程学院专业网络工程提交日期 2014年7月5日上海应用技术学院课程设计任务书指导教师(签名):教研室主任(签名):杨晶鑫2014年6 月25 日2014年6 月25 日目录上海应用技术学院课程设计任务书..................................................... i错误!未定义书签。
目录.................................................................................................................................... i ii 1概述. (1)1.1基本功能 (1)1.2拓展功能 (1)1.3代码的格式 (1)2详细设计说明 (4)2.1原“TYPETEST.ASM”程序结构 (4)2.2已经实现的功能(修改的、新编写的)程序结构 (5)2.3各模块功能 (7)2.3.1用户验证模块: (7)2.3.2功能选择模块: (9)2.3.3游戏选择模式: (12)2.3.4游戏模块: (15)2.3.5游戏结束模式: (22)2.3.6退回主菜单: (23)3课程设计总结 (25)3.1设计体会 (25)3.2系统改进 (25)4软件使用说明 (26)4.1用户密码: (26)4.2运行环境: (26)4.3使用方法 (26)参考文献 (34)附录 (35)源代码: (35)1 概述本次课程设计主要是设计一个打字游戏,通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作, 加深对汇编语言程序设计的认识,提高阅读理解复杂程序的能力和程序设计能力。
本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出;程序包括自动计分功能,根据打字的快慢分别获得不同的分数,根据打字的难度,分别变化不同的颜色,并且设置了用户名和密码,使软件运行起来更加安全。
2024打字游戏教案
打字游戏教案目录CONTENCT •游戏背景与目的•游戏内容与规则•键盘操作技巧培训•游戏化学习体验设计•打字游戏实践环节•课程总结与展望01游戏背景与目的打字游戏简介打字游戏是一种通过键盘输入字符来进行的游戏。
游戏中通常会设定不同的关卡和难度,玩家需要在规定时间内输入正确的字符或通过特定的键位组合来完成任务。
打字游戏可以帮助玩家提高打字速度和准确性,同时也可以锻炼反应能力和手眼协调能力。
教学目标与要求教学目标通过打字游戏的教学,使学生掌握基本的键盘输入技能,提高学生的打字速度和准确性。
教学要求教师需要向学生介绍打字游戏的基本规则和操作方法,引导学生逐步掌握正确的打字姿势和手指分工,同时要注意纠正学生的错误输入习惯。
适宜年龄段及技能水平适宜年龄段打字游戏适合各个年龄段的学生进行练习,但根据学生的认知水平和手指灵活程度,建议从小学高年级开始引入打字游戏教学。
技能水平初学者可以从简单的打字游戏开始练习,逐步提高难度和速度。
对于已经具备一定打字基础的学生,可以选择更具挑战性的游戏来进一步提高自己的技能水平。
同时,教师也可以根据学生的实际情况进行个性化教学安排。
02游戏内容与规则010203玩家需按照屏幕上出现的字母、单词或句子,在限定时间内正确输入。
游戏通常分为多个关卡,每个关卡的难度逐渐递增。
玩家需要使用键盘上的字母键、空格键和回车键等进行操作。
打字游戏基本玩法01020304初级难度中级难度高级难度进阶规则难度设置及进阶规则适合打字高手,字母和单词难度较高,出现速度非常快。
适合有一定打字基础的玩家,字母和单词难度适中,出现速度逐渐加快。
适合打字新手,字母和单词较为简单,出现速度较慢。
玩家通过不断练习和挑战,可以逐渐提高打字速度和准确率,从而解锁更高难度的关卡。
评分标准与奖励机制评分标准游戏通常根据玩家的打字速度、准确率和完成度等因素进行评分。
奖励机制玩家可以获得游戏内的虚拟奖励,如金币、道具等,用于兑换游戏内的其他功能或装饰。
vb课程设计打字游戏
vb课程设计打字游戏一、教学目标本课程旨在通过制作打字游戏,让学生掌握VB编程语言的基本语法、关键字、数据类型、变量、常量等基础知识,培养学生运用VB编程解决实际问题的能力。
同时,通过小组合作、讨论交流等环节,培养学生的团队协作精神、创新思维和审美情趣。
1.掌握VB编程语言的基本语法和关键字。
2.了解数据类型、变量和常量的概念及使用方法。
3.学会使用VB编程解决实际问题。
4.能够独立编写简单的VB程序。
5.具备调试和优化程序的能力。
6.能够运用VB编程语言制作有趣的打字游戏。
情感态度价值观目标:1.培养对编程科技的兴趣和好奇心。
2.增强团队协作、讨论交流的能力。
3.提升创新思维和审美情趣。
二、教学内容本课程以我国初级中学信息技术课程标准为依据,结合VB编程语言的特点,选择以下教学内容:1.VB编程语言概述:介绍VB的发展历程、特点和应用领域。
2.VB基本语法:讲解VB程序的基本结构、关键字、数据类型、变量和常量。
3.控制结构:讲解顺序结构、选择结构和循环结构的使用方法。
4.函数和算法:介绍常用数学函数、日期函数和字符串函数,讲解算法的概念和常用算法。
5.输入输出操作:讲解VB中的输入输出方法,如文本框、命令按钮等。
6.打字游戏设计与实现:以制作打字游戏为主线,让学生综合运用所学知识解决实际问题。
三、教学方法本课程采用以下教学方法,以提高学生的学习兴趣和主动性:1.讲授法:讲解VB编程语言的基本概念、语法和关键字。
2.案例分析法:分析典型打字游戏案例,引导学生学会运用VB编程解决实际问题。
3.实验法:让学生动手实践,制作属于自己的打字游戏。
4.小组合作法:鼓励学生分组合作,共同完成打字游戏设计任务。
5.讨论交流法:学生进行课堂讨论,分享心得体会和解决问题的方法。
四、教学资源为实现本课程的教学目标,教师需准备以下教学资源:1.教材:选用国内外优秀VB编程教材,如《VB编程入门与应用》等。
2.参考书:提供VB编程相关参考书籍,如《VB编程实例教程》等。
打字母小游戏课程设计
打字母小游戏课程设计一、课程目标知识目标: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.1 课程名称打字游戏课程### 1.2 课程目标1. 提高学生的打字速度和准确性。
2. 培养学生对打字游戏的兴趣,增强学习动力。
3. 锻炼学生的反应能力和手眼协调能力。
4. 培养学生的团队协作精神和竞技意识。
### 1.3 课程对象适合小学高年级、初中及高中生,以及有打字需求的社会人士。
### 1.4 课程时长10周,每周2课时,共计20课时。
## 二、课程内容### 2.1 课程模块#### 2.1.1 打字基础知识1. 打字姿势和手指分工2. 打字软件和工具的使用3. 常见键位布局(QWERTY、Dvorak等)#### 2.1.2 打字游戏技巧1. 游戏类型介绍(如:打字消消乐、打字飞镖等)2. 游戏操作方法及策略3. 高手打字技巧分享#### 2.1.3 团队协作与竞技1. 团队协作的重要性2. 竞技比赛规则与组织3. 比赛策略与心理调适### 2.2 教学方法1. 讲授法:讲解打字基础知识、游戏技巧和团队协作等。
2. 演示法:展示打字游戏操作及比赛过程。
3. 实践法:学生分组进行打字游戏练习和比赛。
4. 互动法:通过问答、讨论等方式激发学生兴趣,提高课堂氛围。
## 三、教学安排### 3.1 课时分配- 第1-2周:打字基础知识- 第3-4周:打字游戏技巧- 第5-6周:团队协作与竞技- 第7-8周:打字游戏实践与比赛- 第9-10周:总结与评估### 3.2 课堂组织1. 开场:简要介绍课程内容,激发学生学习兴趣。
2. 讲解:讲解课程知识点,结合实际案例进行分析。
3. 演示:展示游戏操作及比赛过程,让学生了解游戏玩法。
4. 实践:学生分组进行打字游戏练习,教师巡回指导。
5. 比赛与点评:组织学生进行竞技比赛,对比赛过程进行点评。
6. 总结:回顾课程内容,布置课后作业。
## 四、评估方式### 4.1 课堂表现1. 学生出勤率2. 课堂参与度3. 互动表现### 4.2 实践考核1. 打字速度和准确性测试2. 打字游戏比赛成绩### 4.3 课后作业1. 完成课后练习题2. 撰写课程心得体会## 五、课程预期效果通过本课程的学习,学生将能够:1. 掌握打字基础知识,提高打字速度和准确性。
课程设计打字游戏
汇编语言课程设计设计题目: 指法练习班级: 计算机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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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
评语: ________________________________
_________________________________________
_________________________________________
字母下落部分流程图
这个部分是游戏的核心部分。主要的想法是在某个地方出现字母,然后延迟一段时间
(延迟时间由游戏速度控制),判断是否有输入字符,同时判断字符是否为空格或者正确的字符。输入的字符正确,则用空格覆盖当前的字符,同时产生下一个字母,重复上面的过程。
若没有输入字符,则用空格覆盖当前字符,将当前字符在下一格处显示出来,不断的重复,直到最后笑脸处,将笑脸用空格覆盖,同时产生一个新的字母。