计算机技术基础(c语言)课程设计 简单的打字游戏
打字小游戏
打字小游戏打字小游戏是一种旨在提高玩家打字速度和准确度的游戏。
玩家的目标是在规定的时间内尽可能多地输入正确的单词或短语。
游戏规则如下:1. 游戏开始时,屏幕上会显示一个单词或短语。
2. 玩家需要尽快输入正确的单词或短语,以获得分数。
3. 如果玩家输入的单词或短语与屏幕上显示的完全匹配,玩家将获得一定的分数。
4. 如果玩家输入错误,将不会获得分数,并且需要重新输入。
5. 游戏会计算玩家的打字速度和准确度,并显示在屏幕上,以便玩家了解自己的进展。
游戏的玩法如下:1. 玩家可以使用键盘上的字母键输入单词或短语。
一些游戏还可允许使用数字键盘或特殊符号键。
2. 游戏通常会设定一个时间限制,例如60秒或90秒。
玩家需要在规定的时间内尽可能多地输入正确的单词或短语。
3. 游戏通常会有多个关卡,每个关卡的难度会逐渐增加。
单词或短语的长度和复杂度也会增加。
4. 在一些游戏中,玩家可以选择不同的游戏模式,例如练习模式、挑战模式或竞赛模式,以适应不同的需求和技能水平。
一些术语和技巧可以帮助玩家更好地玩这个游戏:1. 打字速度:指玩家每分钟能够输入的单词数量。
玩家可以通过练习来提高打字速度。
2. 准确度:指玩家输入的单词与正确单词的匹配程度。
准确度越高,得分越高。
3. 视线转移:指玩家在屏幕上显示的单词和键盘上的字母之间的转换。
玩家可以通过练习来提高视线转移速度。
4. 键盘布局:指键盘上字母和符号的排列方式。
常见的键盘布局有QWERTY和DVORAK。
玩家可以选择适合自己的键盘布局来提高打字效率。
为了增加游戏的挑战性和乐趣,玩家可以尝试以下策略和方法:1. 练习常见单词和短语,以便能够更快地输入它们。
2. 提高准确度,避免输入错误的单词或短语,以获得更高的分数。
3. 注重节奏和流畅度,尽量避免停顿和错误,以提高打字速度。
4. 尝试不同的游戏模式和难度级别,以挑战自己并提高技能。
5. 参加打字比赛或与朋友进行比赛,以增加竞争和乐趣。
C语言打字练习程序课程设计报告
青岛理工大学《C语言程序设计》题目打字练习程序指导教师:李兰老师姓名:学号:2011班级:专业:计算机科学地点:现代教育中心机房201时间:2012.6.26 至2012.6.29一、内容本程序主要实现的是对使用者的打字速度进行练习和提高。
因为界面友好亲和,因此能让使用者在轻松愉快中练习并快速提高自己的打字速度和准确性。
程序主要的功能有记录使用者在本次使用中的击中数和总下落字母的个数之比。
并且游戏设置了九个等级,随着数字的增加,等级越高,字母下落的速度逐步提高,这样能够更好的迎合不同水平的用户需求。
使用本程序很简单,因为在写代码时,我很注重的是界面的友好,所以,在用户的每次操作前,界面上都有详细的操作提醒,只要跟着提示输入就能很快速地进入并开始练习。
二、上机环境操作系统:windows XP(win7兼容)开发工具:VC6.0三、函数调用关系图四、各函数功能说明1、void main( ) 主函数2、void printScreen( ) 刷新屏幕函数3、int levelChoice( ) 游戏等级选择函数4、int newWord( ) 生成新字符函数5、int moving( ) 字符下降函数6、int wordHit( ) 击中字符函数7、int result ( ) 结果输出函数8、int start( ) 程序开始提示操作9、void leave( ) 函数结束五、流程图六、程序运行效果图七、总结通过这次的C语言课程设计,我对程序设计的过程有了很具体的认识,我明白了作为一个开发者应该具有坚持和吃苦耐劳的素质和乐于交流和共享的品德。
而且由于在程序设计和代码编写的时候,程序中用到的很多函数是我们在课堂上并没有接触到甚至是没有听说过的,因此我们还得大量地参考有关书籍,并且从互联网上查找函数等的相关信息。
与此同时,与同学的交流更是并不可少的,这个也是作为将来的一个开发者必须要具备的素质,那就是团队合作精神。
C语言程序设计编写的打字母游戏
C语言程序设计编写的打字母游戏#include#include#include //画图头文件#include //时间头文件#pragma comment(lib, "Winmm.lib") //引用Windows Multimedia API(Application Programming Interface)int score = 0; //全局变量********整型的分数char s[5]; //全局变量*****字符型的分数struct player_ //自定义的结构体,并顺便定义一个结构体变量{char name[20];int score_;}player[11];/*******************函数声明***************************/void record_(); //记录本次成绩函数void welcome(); //欢迎界面函数void instructions(); //游戏说明界面函数void game(int rank2); //游戏函数void record(); //显示记录函数int rank_(char rank1); //等级选择函数void goodbye(); //退出界面函数/**********主函数******************************/int main(){char rank1; //rank1接受从键盘输入的字符,根据字符判断等级int rank2 = 15; //控制延时时间,从控制速度intsign = 1; //当做标记,用于标记是否弹MessageBox对话框welcome(); //调用欢迎界面函数instructions(); //调用游戏说明界面函数record(); //调用显示记录函数InputBox(player[10].name,20,"请输入玩家昵称");//以对话框形式获取用户输入函数rank1 = getch(); //读入一个字母rank2 = rank_(rank1); //调用等级函数game(rank2); //调用游戏函数HWND wnd = GetHWnd();while(sign) //sign作为标记,执行循环if (MessageBox(wnd, "游戏结束\再来一局,挑战更高分数吧", "询问", MB_YESNO | MB_ICONQUESTION) == IDYES) //消息框含有两个按钮:Yes和No**********问题标记图标出现在消息框game(rank2);else{sign = 0;goodbye();}closegraph(); //关闭图形对话框return 0;}/******************记录本次成绩函数***************************/void record_(){FILE * fp; //文件指针int i, j;struct player_ t; //定义结构体变量t,冒泡法比较大小时用player[10].score_ = score; //把该局的分数赋给该局用户的结构体变量中fp = fopen("记录.dat","rb"); //打开二进制文件for(i=0; i<10;i++){fread(player[i].name,20,1,fp); //读入记录中的成绩和姓名fread(&player[i].score_,4,1,fp);}fclose(fp); //关闭二进制文件for(j = 0; j<10; j++) //冒泡法排序for(i = 0; i<10-j; i++)if(player[i].score_ < player[i+1].score_){t = player[i];player[i] = player[i+1];player[i+1] = t;}fp = fopen("记录.dat","wb"); //打开文件for(i = 0; i < 10; i++) //把排好序列的数据存入记录文件{fwrite(player[i].name,20,1,fp);fwrite(&player[i].score_,4,1,fp);}fclose(fp); //关闭文件}/******************欢迎界面函数***************************/void welcome(){char ch;mciSendString("open \\"res\\\\Sleep Away.mp3\\" alias mymusic", NULL, 0, NULL);//载入音乐转化为mciSendString(_T("play mymusic repeat"), NULL, 0, NULL); //播放音乐//指向接收返回信息的缓冲区,为NULL时不返回信息缓冲区的大小指定一个回调窗口的句柄,一般为NULLinitgraph(640, 480); //初始化画图界面IMAGE img; //定义IMAGE对象loadimage(&img, "res\\\\00.jpg"); // 读取图片到 img 对象中putimage(0, 0, &img); //在坐标 (0, 0) 位置显示 IMAGE 对象ch = getch(); //吸收掉一个按键cleardevice(); //清屏}/*******************游戏说明界面函数***************************/void instructions(){int c=255; //控制变色的变量setcolor(YELLOW); //设置颜色setfont(30, 0, "黑体"); //设置字体outtextxy(0, 0, "游戏说明:"); //输出文字setcolor(WHITE); //设置颜色setfont(28, 0, "宋体"); //设置字体outtextxy(0, 30, "一、每次游戏下落200个字母"); //输出文字outtextxy(0, 58, "二、请按数字键选择游戏等级"); //输出文字outtextxy(0, 86, "三、统计被击中的个数"); //输出文字setfont(30, 0, "华文行楷"); //设置字体outtextxy(20, 220, "等级一二三四五六七八九");//输出文字outtextxy(20, 260, "按键 1 2 3 4 5 6 7 8 9");//输出文字while(!kbhit()) //kbhit()作用是判断是否有字母输入{setcolor(RGB(c, 255, 0)); //设置颜色setfont(80, 0, "楷体"); //设置字体outtextxy(140, 130, "请选择等级"); //输出文字setcolor(RGB(c, 0, 255)); //设置颜色setfont(100, 0, "Wickenden Cafe NDP"); //设置字体outtextxy(100, 335, "let's go ! ! !"); //输出文字c -= 25; //控制颜色的变量自减if (c < 0) c = 255; //控制颜色的变量小于0时,再把255赋给c Sleep(20); //延时20毫秒}cleardevice(); //清屏}/**************退出界面函数**********************************/ void goodbye(){int c = 255; //控制变色的变量cleardevice(); //清屏setcolor(YELLOW); //设置颜色setfont(48, 0, "黑体"); //设置字体outtextxy(104, 120, "的最终成绩是:"); //输出文字setfont(48, 0, "华文楷体"); //设置字体setcolor(RGB(255,255,0)); //设置颜色outtextxy(140, 320, "按任意键退出游戏"); //输出文字setcolor(YELLOW); //设置颜色setfont(48, 0, "黑体"); //设置字体outtextxy(104, 120, "的最终成绩是:"); //输出文字outtextxy(104,70,player[10].name);record_(); //调用记录本次成绩函数while(!kbhit()){setcolor(RGB(255, 0, c-100)); //设置颜色setfont(100, 0, "Wickenden Cafe NDP"); //设置字体outtextxy(400, 90, s); //输出数字setcolor(RGB(c, 0, 255)); //设置颜色setfont(48, 0, "黑体"); //设置字体if(score == 200)outtextxy(100, 200, "全部击中!!"); //输出文字elseif(score>190)outtextxy(100, 200, "不错!继续加油!");//输出文字elseouttextxy(100, 200, "不要灰心!继续加油!");//输出文字c -= 25; //控制变色的变量自减实现变色if (c < 0)c = 255; //控制颜色的变量小于0时,再把255赋给cSleep(20); //延时20毫秒}getch(); //提供给用户时需要等待输入后再退出}/***********等级选择函数*****************************/ int rank_(char rank1){int rank2;switch(rank1) //判断字符,确定等级{case '0': rank2 = 11; break;case '1': rank2 = 10; break;case '2': rank2 = 9; break;case '3': rank2 = 8; break;case '4': rank2 = 7; break;case '5': rank2 = 6; break;case '6': rank2 = 5; break;case '7': rank2 = 4; break;case '8': rank2 = 3; break;case '9': rank2 = 2; break;default: rank2 = 15; break;}return rank2;}/****************显示记录函数*************/void record(){FILE * fp; //文件指针int a[10], j;char b[10][10];fp = fopen("记录.dat","rb"); //打开文件for(j=0; j<10;j++){fread(player[j].name,20,1,fp); //读取文件中的信息fread(&player[j].score_,4,1,fp);}fclose(fp); //关闭文件setfont(60, 0, "Arial"); //设置字体setcolor(RGB(250,250,0)); //设置颜色outtextxy(250, 0, "TOP10"); //输出文字for(j = 0; j<10; j++){sprintf(b[j], "%d", player[j].score_); //把整型转换成字符型setcolor(RGB(0,100,255)); //设置颜色setfont(40, 0, "Arial"); //设置字体outtextxy(420, 50+40*j, b[j]); //输出分数outtextxy(120, 50+40*j, player[j].name); //输出名字}}/******************游戏函数***************************/ void game(int rank2){cleardevice(); //清屏score = 0; //清除掉原有的分数outtextxy(0, 0, "玩家:");outtextxy(90,0,player[10].name);setfont(20, 0, "Arial"); //设置字体outtextxy(100, 460, "人有享受片刻优雅恬适的权力,让打字母放松你一下吧!");int i;char target; // 目标字母char key; // 用户的按键int x, y; // 字母的位置int flag = 1; //标记是否按了退出键int sum = 0; //成绩计数int num = 200; //规定下落字母的个数srand(time(NULL)); //随机时间种子设置第一个随机函数的值setfillstyle(BLACK); //设置最下面矩形内图的颜色setcolor(YELLOW); //设置颜色line(0,450,640,450); //用3条线规定一下工作区line(0,440,640,440); //用3条线规定一下工作区line(0,40,640,40); //用3条线规定一下工作区while(flag&&num){setfont(40, 0, "宋体"); //设置字母的字体和大小i = rand()%2; //rand()函数返回 0~32767 之间的一个整数if(i)target = 97 + rand() % 26; // 产生任意小写字母elsetarget = 65 + rand() % 26; // 产生任意大写字母x = rand() % 610; // 产生任意下落位置for (y=41; y<380; y++){setcolor(RGB(255,0,255)); // 设置字母的颜色outtextxy(x, y, target); // 显示字母if(kbhit()){key = getch(); // 获取用户按键if((key == target) || (key == target - 32)||(key == target + 32)) {score++; //分数统计sprintf(s, "%d", score); //把整型转换成字符型setfont(30, 0, "Arial"); //设置字体outtextxy(500, 0, "分数"); //输出文字outtextxy(600, 0, s); //输出分数bar(x-10, y-10, x +35, y + 50); //击中用黑矩形擦去字母break; // 跳出循环,进行下一个字母}else if (key == 27) //判断是否按了{flag = 0; // 如果按 ESC,退出游戏主循环break;}}Sleep(rank2); //控制清除字母的时间也就是控制下落速度bar(x, y, x + 35, y + 60); //擦最下面的字符}num--; //计数}}。
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#有了进一步的认识和掌握。
打字小游戏
打字小游戏打字小游戏是一种基于键盘输入的游戏,目标是在规定的时间内打出尽可能多的单词或短语,以获取更高的分数。
以下是详细的游戏规则和玩法:目标:游戏的主要目标是在规定的时间内打出尽可能多的单词或短语,以获取更高的分数。
每个单词或短语的长度和难度都不同,因此需要快速而准确地键入。
规则:1. 游戏开始后,屏幕上将出现一个单词或短语。
2. 玩家需要在规定的时间内键入正确的单词或短语。
如果时间用完或者玩家输入错误,游戏结束。
3. 打出正确的单词或短语可以获得分数,分数的多少取决于单词或短语的长度和难度。
4. 游戏的难度会随着时间的推移而增加,单词或短语的长度和难度也会增加。
5. 玩家可以使用键盘或鼠标来输入单词或短语,但是必须输入正确才能获得分数。
玩法:1. 打字小游戏需要玩家有一定的打字基础,因此需要练习打字技巧。
2. 玩家需要快速而准确地输入单词或短语,以获得更高的分数。
3. 玩家可以使用快捷键来加快打字速度,例如使用Tab键来切换到下一个单词或短语。
4. 玩家可以在游戏之前选择不同的难度级别,以适应不同的技能水平。
5. 玩家可以与其他玩家进行比赛,以看谁能获得更高的分数。
术语和技巧:1. WPM(每分钟字数):用于衡量打字速度的单位,表示每分钟可以打出的单词数。
2. CPM(每分钟击键数):用于衡量击键速度的单位,表示每分钟可以按下多少个键。
3. 视觉记忆:通过记忆单词或短语的外观来加速打字速度。
4. 手指位置:在打字时,手指应该放在键盘上的正确位置,以便快速而准确地输入单词或短语。
5. 快捷键:在打字过程中,使用快捷键可以加快打字速度,例如使用Tab键来切换到下一个单词或短语。
总之,打字小游戏是一种有趣而富有挑战性的游戏,可以帮助玩家提高打字速度和准确性。
玩家需要不断练习,掌握打字技巧和技巧,以获得更高的分数并赢得比赛。
纯c语言编写的打字母游戏
#include <stdio.h>#include <stdlib.h>#include<windows.h>#include<conio.h>#include<time.h>#define NN 20#define MM 65#include<process.h>char a[NN][MM],c;int b[11]={0},N/*jiaohuan*/,i,j/*jishu*/,t/*dajishu*/,k=0,u=0,m,p,q,n,M;double s;void gamebegin();void levelselect();void sure();void former();void gaming();void gameend();void gamebegin(){printf("本游戏为了方便中国玩家,在难懂部分用中文或双语书写\n");printf("welcome to the typing game, do you want to test your typing skill?\n1 yes,i want to try it 2 no,thanks\n");printf("please write down the number which points at your option\n****************************************************\n(since then you should make your decision in this way)\n");do{scanf("%d",&b[0]);switch(b[0]){case 1:levelselect();b[1]=1;break;case 2:exit(0);b[1]=1;break;default:printf("please select again\n");}}while(b[1]==0);}void levelselect(){system("cls");printf("please choose your game level 1\n");printf("1 easy 2 medium 3 difficult\n");do{scanf("%d",&b[2]);switch(b[2]){case 1:N=2000;b[3]=1;break;case 2:N=1000;b[3]=1;break;case 3:N=800;b[3]=1;break;default:printf("please select again\n");}}while(b[3]==0);system("cls");printf("please choose your game level 2\n");printf("1 lowercase小写字母2 lowercase+capital大写加小写3 lowercase+capital+number 大写加小写加数字\n");printf("*****************************************************************\n^.^the punctuation will take up among all the three level,so it is a challenge to you.GO for it!\n符号在三个等级中随机出现\n");do{scanf("%d",&b[4]);switch(b[4]){case 1:p=30;q=97;b[5]=1;break;case 2:p=62;q=97;b[5]=1;break;case 3:p=94;q=97;b[5]=1;break;default:printf("please select again\n");}}while(b[5]==0);system("cls");printf("please write down the number of letter you want to hit\n为了计算精确,请输入三的倍数,为了时间的精准,请让字母的个数大于60\n");scanf("%d",&b[6]);}void sure(){system("cls");printf("please affirm your answer\n");printf("your answer is:the level 1 is number %d,the level 2 is %d, there are %d letters to run the game\n1 yes 2 no,i will select again\n",b[2],b[4],b[6]);do{scanf("%d",&b[7]);{case 1:gaming();b[9]=1;break;case 2:former();b[9]=1;break;default:printf("please select again\n");}}while(b[9]==0);}void former(){gamebegin();sure();}void gaming(){printf("game introduction:there will be many letter to drop down,so you should hit it!come on!");system("cls");printf("please input arbitrary letter to begin the game\n");getch();for(i=0;i<NN;i++){for(j=0;j<MM;j++){a[i][j]=32;}}while(M<(b[6]/3+NN-1)){M++;if(k<b[6]){srand((unsigned)time(NULL));a[u][rand()%(MM-1)]=(rand()%p+q);a[u][rand()%(MM-1)]=(rand()%p+q);a[u][rand()%(MM-1)]=(rand()%p+q);k=k+3;}Sleep(N);system("cls");{c=getch();for(i=0;i<NN;i++){for(j=0;j<MM-1;j++){if(c==27){exit(1);}else if(c==a[i][j]){putchar('\a');a[i][j]=32;t++;}}}}for(i=0;i<NN;i++){a[i][MM-1]='\0';}for(m=u++;m>=0;m--)printf("%s\n",a[m]);for(m=NN-1;m>=u;m--)printf("%s\n",a[m]);if(u==NN)u=0;for(j=0;j<MM-1;j++){a[u][j]=32;}}}void gameend(){system("cls");printf("我的游戏还有很大纰漏。
打字程序c课程设计
打字程序c 课程设计。
一、课程目标知识目标:1. 学生能理解打字程序C的基本结构和语法规则。
2. 学生能掌握打字程序C中的变量定义、数据类型及其使用方法。
3. 学生能了解打字程序C中的顺序结构、选择结构和循环结构。
技能目标:1. 学生能运用打字程序C编写简单的程序,实现基本输入、输出功能。
2. 学生能运用打字程序C编写具有判断和循环功能的程序,解决实际问题。
3. 学生能通过编写打字程序C,提高编程思维和问题解决能力。
情感态度价值观目标:1. 学生能对打字程序C产生兴趣,积极参与编程学习。
2. 学生在学习过程中,培养合作意识,主动与同学交流讨论。
3. 学生通过编程学习,认识到编程对生活、学习的重要性,激发创新精神。
课程性质:本课程为信息技术课程,旨在培养学生的编程兴趣和基本技能,提高学生的问题解决能力。
学生特点:六年级学生具有一定的计算机操作能力,对新鲜事物充满好奇心,但编程基础为零。
教学要求:教师需关注学生的个体差异,采用任务驱动的教学方法,引导学生主动探究,注重培养学生的实际操作能力和创新精神。
通过分解课程目标为具体学习成果,便于教学设计和评估。
二、教学内容1. 打字程序C基础知识:- 变量定义、数据类型及其使用方法(教材第1章)- 运算符、表达式和语句(教材第2章)2. 打字程序C控制结构:- 顺序结构(教材第3章)- 选择结构(教材第4章)- 循环结构(教材第5章)3. 打字程序C应用实例:- 输入输出练习(教材第6章)- 判断与循环应用(教材第7章)- 简单游戏编程(教材第8章)教学内容安排与进度:第一周:打字程序C基础知识,重点学习变量定义、数据类型及其使用方法。
第二周:打字程序C基础知识,学习运算符、表达式和语句。
第三周:打字程序C控制结构,学习顺序结构。
第四周:打字程序C控制结构,学习选择结构。
第五周:打字程序C控制结构,学习循环结构。
第六周:打字程序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 语言编程知识,提高编程技能。
课程设计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.第二个确实是掉下来的数字可能有相同的,就会显现打字错误,认真检查后终于发觉了那个问题,采纳在之前先检查随机数是不是重复五、总结展望参考资料和程序成品,我了解了游戏的最大体形式。
打字测试c语言课程设计
打字测试c语言课程设计一、课程目标知识目标:1. 学生能掌握C语言基础的输入输出语句,理解其工作原理;2. 学生能理解并运用C语言的基本数据类型及变量声明;3. 学生能通过打字测试,熟练编写具有基础逻辑结构的C语言程序。
技能目标:1. 学生能够使用C语言编写简单的计算程序,进行数值运算;2. 学生通过打字测试,提高编程速度和准确性;3. 学生能够对C语言程序进行调试和修正,培养解决问题的能力。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学生的学习热情;2. 学生在合作学习过程中,培养团队精神和沟通能力;3. 学生通过编程实践,认识到编程对解决现实问题的重要性,增强社会责任感。
课程性质:本课程为实践性较强的C语言入门课程,注重基础知识的掌握和实际操作能力的培养。
学生特点:学生为初中年级,对计算机编程有一定的好奇心,动手能力强,但注意力容易分散。
教学要求:结合学生特点,课程设计应注重趣味性和实际操作,强调在实践中学习,提高学生的编程兴趣和技能。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. C语言基础知识:- 数据类型:整型、浮点型、字符型等基本数据类型的使用和声明;- 输入输出语句:printf()和scanf()函数的使用;- 变量:变量的定义、赋值和作用域。
2. 基本控制结构:- 顺序结构:程序的执行流程;- 选择结构:if语句、switch语句的使用;- 循环结构:for循环、while循环和do-while循环。
3. 打字测试:- 设计简单的打字测试程序,要求学生完成指定的代码编写任务;- 通过测试,检验学生对C语言基础知识的掌握和编程速度。
4. 编程实践:- 设计具有实际意义的编程任务,如计算器、简单的排序算法等;- 学生独立完成编程任务,培养解决问题的能力。
教学内容安排和进度:第一课时:C语言基础知识介绍,数据类型、变量和输入输出语句;第二课时:基本控制结构,顺序结构和选择结构;第三课时:循环结构,for循环、while循环和do-while循环;第四课时:打字测试,检验学生对基础知识的掌握;第五课时:编程实践,完成实际编程任务。
打字测试c语言课程设计
打字测试c语言课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等;技能目标要求学生能够运用C语言进行简单的程序设计,具备基本的编程能力;情感态度价值观目标要求学生培养良好的编程习惯,提高解决问题的能力,增强自信心。
通过对C语言的学习,使学生了解编程的基本概念,培养学生的逻辑思维和创造性思维,提高学生的动手实践能力,使学生能够运用C语言解决实际问题,增强学生对计算机科学的兴趣和热情。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等。
具体安排如下:1.C语言的基本语法:介绍C语言的基本结构,包括变量、常量、运算符、表达式等。
2.数据类型:讲解整型、浮点型、字符型等基本数据类型的使用和转换。
3.运算符:介绍算术运算符、关系运算符、逻辑运算符等,并讲解其优先级和结合性。
4.控制结构:讲解顺序结构、选择结构、循环结构等程序控制流程。
5.函数:介绍函数的定义、声明、调用,以及函数的参数传递和返回值。
三、教学方法本课程采用讲授法、讨论法、案例分析法、实验法等多种教学方法。
1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法和编程原理。
2.讨论法:学生进行小组讨论,共同解决问题,培养学生的合作能力和沟通能力。
3.案例分析法:通过分析实际编程案例,使学生了解编程的实际应用,提高学生的编程能力。
4.实验法:安排实验室实践环节,使学生在动手实践中掌握C语言的编程技巧。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:提供相关的C语言参考书籍,丰富学生的学习资源。
3.多媒体资料:制作教学PPT、视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:保障实验室的正常运行,为学生提供实践编程的环境。
c语言打字程序课课程设计
c语言打字程序课课程设计一、教学目标通过本章的学习,使学生掌握C语言编程的基本方法,能够运用C语言设计一个简单的打字程序。
具体目标如下:1.理解C语言的基本语法和数据类型。
2.掌握C语言的输入输出函数。
3.了解函数的定义和调用。
4.能够运用C语言编写简单的程序。
5.能够运用C语言设计实现一个打字程序。
情感态度价值观目标:1.培养学生对计算机编程的兴趣和热情。
2.培养学生解决问题的能力和创新精神。
二、教学内容本章主要介绍C语言编程的基本方法,通过设计一个简单的打字程序,让学生掌握C语言的基本语法和数据类型,以及函数的定义和调用。
1.C语言概述和基本语法。
2.数据类型和变量。
3.输入输出函数。
4.函数的定义和调用。
5.打字程序的设计和实现。
第1章 C语言概述第2章基本数据类型第3章输入输出函数第4章函数的定义和调用第5章打字程序的设计和实现三、教学方法采用讲授法、案例分析法和实验法进行教学。
在讲授基本语法和数据类型时,通过示例代码和图表进行讲解,让学生更好地理解和掌握。
在讲解输入输出函数和函数的定义和调用时,通过设计一个简单的打字程序,让学生动手实践,加深对知识点的理解和运用。
同时,学生进行小组讨论和实验,培养学生的团队合作能力和解决问题的能力。
四、教学资源教材:《C语言程序设计》参考书:《C语言编程实例解析》多媒体资料:C语言编程视频教程实验设备:计算机、编程软件五、教学评估为了全面、客观地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总成绩的30%。
2.作业:包括编程练习和理论作业,每次作业占总成绩的10%。
3.考试:包括期中和期末考试,各占总成绩的20%。
4.项目:设计并实现一个打字程序,占总成绩的20%。
评估方式将根据学生的实际表现进行调整,以确保评估的公正性和准确性。
六、教学安排本课程的教学进度安排如下:1.每周课时:2课时。
2.教学时间:第1-8周,每周一下午2:00-4:00。
用C和SFML编程实现打字小游戏
用C和SFML编程实现打字小游戏打字小游戏是一种能够提高打字速度和准确性的娱乐方式。
本文将介绍如何使用C语言和SFML库编程实现一个简单的打字小游戏,并提供一份基本的代码框架供参考。
1. 准备工作在正式开始编程之前,需要确保你已经安装了C语言的开发环境和SFML库。
如果没有安装,可以自行搜索并按照官方指引进行安装。
2. 创建窗口使用SFML库中的函数,我们可以轻松地创建一个窗口来运行我们的小游戏。
以下是一个简单的代码示例:```c#include <SFML/Graphics.h>int main() {sfRenderWindow* window;sfVideoMode mode = {800, 600, 32};sfEvent event;window = sfRenderWindow_create(mode, "Typing Game", sfDefaultStyle, NULL);sfRenderWindow_setFramerateLimit(window, 60);while (sfRenderWindow_isOpen(window)) {while (sfRenderWindow_pollEvent(window, &event)) {if (event.type == sfEvtClosed)sfRenderWindow_close(window);}sfRenderWindow_clear(window, sfBlack);// 在这里添加游戏逻辑sfRenderWindow_display(window);}sfRenderWindow_destroy(window);return 0;}```上述代码创建了一个800x600的窗口,并在每秒钟刷新60次。
其中的`// 在这里添加游戏逻辑`注释表示我们可以在此处编写游戏逻辑。
3. 绘制文本为了显示打字游戏中的文本,我们首先需要创建一个文本对象,并设置其字体、大小和位置。
打字游戏 c语言编写
bar(getmaxx()-60,0,getmaxx(),getmaxy());
setcolor(WHITE);
rectangle(MenuX,MenuY,MenuX+MenuWidth,MenuY+3*MenuSinH);
line(MenuX,MenuY+MenuSinH,MenuX+MenuWidth,MenuY+MenuSinH);
sprintf(str,"Lose :%d",x2);
outtextxy(MenuX+28,MenuY+MenuSinH+15,str);
sprintf(str,"Hit ratio :%3.0f\%",k);
outtextxy(MenuX+28,MenuY+2*MenuSinH+15,str);
outtextxy(MenuX+10,MenuY+2*MenuSinH+50,"Sorry!You did a bad work!");
while(!kbhit())
{
setfillstyle(1,c1);
pieslice(x,y,0,360,r);
setcolor(c2);
line(x-2.5*d-1,y-2.5*d,x-2.5*d-1,y-2.5*d+i);
line(getmaxx()-100,50,getmaxx()-12,50 );
line(getmaxx()-100,88,getmaxx()-12,88 );
line(getmaxx()-100,126,getmaxx()-12,126 );
课程设计打字游戏
汇编语言课程设计设计题目: 指法练习班级: 计算机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。
C语言打字母游戏系统设计
C语言打字母游戏系统设计一、项目要求设计一款打字母小游戏,帮助学生练习键盘,运行效果如下图所示。
“按任意键继续”是不断闪烁的。
二、编译环境 Visuall C++6.0 + EasyX(Visual C++ 6.0),采用C++程序。
1. 创建工程在Visual C++6.0中,选择“文件”—>“新建”,弹出如下界面。
先创建工程,选择“Win32 Console Application”工程,给出存储位置和工程名,点“确定”按钮。
后面选择默认,即可。
2. 在工程中创建C++文件在Visual C++6.0中,选择“文件”—>“新建”,弹出如下界面。
刚才创建工程名给出文件名,不要给扩展名,默认创建C++文件,扩展名为cpp 点“确定”按钮,完成C++文件创建。
界面效果如下图所示。
3. 添加类库因为C语言中的图形库头文件graphics.h是Dos环境下的,只能使用TurboC进行编译调试,TurboC2.0环境不是图形化可视界面,调试程序不如VC++6.0。
但在Visual C++6.0中,原有C语言中的图形库头文件graphics.h不可用,有些人员开发了DLL文件,让Visual C++6.0能识别C语言的graphics.h,方便利用C语言进行图形化的设计。
即,要进行图形化设计,需要安装EasyX,添加类库。
安装过程如下:(1)双击EasyX中的Setup文件,效果如下图所示。
单击“下一步”,选择你的开发平台,安装类库。
这里选择Visual C++6.0即可,点击“安装”,弹出安装成功,“关闭”即可。
三、相关知识1. 本项目涉及到的头文件#include <graphics.h>#include <conio.h>#include <time.h>(1) graphics.h是TC里面的图形库,分为:像素函数、直线和线型函数、多边形函数、填充函数等。
纯c语言编写的打字游戏代码
xx信息科技大学软件工程1301SHERO组#include <stdlib.h>#include <stdio.h>#include <process.h>#include <conio.h>#include <time.h>void func();void fun();void fu();int k=0,num;void main(){int choice,choice1 ;float result;system("color 5A");printf("开始游戏:1结束:0\n");scanf("%d",&choice);do{switch (choice){case 1:printf("请选择字母【7】数字【8】数字+字母【9】"); scanf("%d",&choice1);switch(choice1){case 7:func();break;case 8:fun();break;case 9:fu();break;}system("cls");printf("\n\n\n\n\n\n\n\n\n\n 您成功地击落%d个字母!",k); printf("\n 您有%d个字母未击落!",num-k);result=(float)k/num; printf("\n 您的准确率为%.2f!",result);break;case 0:exit(1);break;default :system("cls");printf("指令有误!请检查指令。
\n");getchar();}printf("\n\n\n\n\n\n\n继续游戏:1scanf("%d",&choice);} while(1);}/***************字母模块*****************/void func(){int a[25][80];int i,l,j,m=0,n=0,t,t1,temp,c=0;int sure,sure1=0,dif,N;do{do{system("cls");printf("\n请选择难度等级:困难:1普通:2结束:0简单:3\n");");scanf("%d",&dif);if(dif!=1&&dif!=2&&dif!=3){printf("\n指令有误,按任意键继续!"); getchar();}elsesure1=1;}while (sure1!=1);if(dif==1)N=10;if(dif==2)N=500;if(dif==3)N=2000;printf("\n请输入字母个数:");scanf("%d",&num);switch (dif){case 1: printf("\n你选择了困难等级,%d个字母进行练习。
c语言简单游戏课程设计
c语言简单游戏课程设计一、课程目标知识目标:1. 掌握C语言的基本语法和编程结构;2. 学习使用C语言进行简单的游戏设计,理解游戏设计的基本流程;3. 熟悉C语言中的数据类型、运算符、控制结构等知识在游戏编程中的应用;4. 了解如何在C语言中实现图形用户界面,为游戏添加视觉元素。
技能目标:1. 能够独立编写简单的C语言程序,实现基础的游戏逻辑;2. 能够运用控制结构进行游戏流程的控制,如循环和分支结构;3. 能够在游戏中合理运用变量和函数,提高代码的可读性和可维护性;4. 学会使用调试工具,具备基本的程序调试能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生创新精神和实践能力;2. 培养学生团队协作意识,学会与他人共同解决问题;3. 培养学生严谨、细心的学习态度,养成良好的编程习惯;4. 引导学生体验编程的乐趣,树立自信心,勇于面对挑战。
本课程针对初中年级学生,结合学科特点和教学要求,注重培养学生在C语言编程方面的实际操作能力。
课程设计以实际案例为引导,让学生在实践中掌握编程知识,提高编程技能,同时关注学生情感态度的培养,使学生在学习过程中形成积极向上的心态。
通过分解课程目标为具体的学习成果,为教学设计和评估提供明确依据。
二、教学内容1. C语言基础语法:变量定义与使用、数据类型、运算符、表达式;2. 控制结构:顺序结构、选择结构(if-else)、循环结构(for、while);3. 函数:函数定义、函数调用、参数传递、返回值;4. 游戏设计基本概念:游戏循环、用户输入、图形显示;5. 图形库使用:如何在C语言中调用图形库,实现简单的图形显示;6. 简单游戏案例:贪吃蛇、五子棋等游戏的设计与实现。
教学内容依据课程目标进行选择和组织,以课本为基础,结合以下进度安排:第一周:C语言基础语法学习,理解变量和数据类型;第二周:学习运算符、表达式,掌握控制结构;第三周:学习函数定义和调用,了解游戏设计基本概念;第四周:引入图形库,学习如何在C语言中实现图形显示;第五周:结合前四周所学知识,进行简单游戏案例分析与实现。
c语言课程设计小型打字平台
c语言课程设计小型打字平台一、教学目标本课程的目标是使学生掌握C语言的基本知识,能够运用C语言设计小型打字平台。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、指针等概念。
2.技能目标:学生能够熟练使用C语言进行编程,具备独立设计和开发小型打字平台的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队协作精神。
二、教学内容教学内容主要包括C语言的基本语法、数据结构、函数、指针等。
具体安排如下:1.第一章:C语言基础知识,包括变量、常量、运算符、表达式等。
2.第二章:控制语句,包括条件语句、循环语句等。
3.第三章:数据结构,包括数组、字符串、结构体等。
4.第四章:函数,包括函数的定义、调用、返回值等。
5.第五章:指针,包括指针的概念、指针的运算等。
6.第六章:小型打字平台的设计与实现,包括用户界面设计、输入输出操作、键盘事件处理等。
三、教学方法为了提高学生的学习兴趣和主动性,我们将采用多种教学方法:1.讲授法:用于讲解C语言的基本概念和语法。
2.案例分析法:通过分析实际案例,让学生掌握C语言的应用。
3.实验法:让学生动手实践,设计和开发小型打字平台。
4.讨论法:鼓励学生提问和发表观点,促进师生之间的交流。
四、教学资源我们将提供以下教学资源:1.教材:《C语言程序设计》2.参考书:《C语言 Primer》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总成绩的30%。
2.作业:包括编程练习、课后作业等,占总成绩的30%。
3.考试:包括期中和期末考试,占总成绩的40%。
期中和期末考试将涵盖本课程的所有内容,包括理论知识和技术操作。
我们将根据学生的表现,给予及时的反馈,帮助学生提高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机技术基础(C程序) 课程设计报告一.题目:简单打字游戏二、选题背景:在全球信息化高度发展的今天,计算机技术是现代人必须掌握的基本技术。
而一手精湛的打字技术更是我们自动化人所必备的资本。
本c语言程序的开发为广大计算机使用者提供了一个很好的平台。
三、设计思想:本程序主要应用了e l s e…i f语句、g o t o语句等函数。
建立打字练习的程序。
通过使用积分的方式,给使用者以直观的视觉冲击。
激励使用者的练习兴趣。
三、程序流程图:四:程序清单#include "conio.h"#include "stdlib.h"#include "graphics.h"main(){char a[36];int i,j,x,key,t,score=0;int gd=DETECT,gr;initgraph(&gd,&gr,"");cleardevice();for(i=0;i<10;i++)a[i]=48+i;for(i=10;i<36;i++)a[i]=55+i;a[i]=0;for(i=1;i<81;i++){gotoxy(i,3);printf("%c",220);gotoxy(i,18);printf("%c",220);}gotoxy(5,1);printf("score:");settextstyle(1,0,8);outtextxy(100,350,"TYPE GAME"); sleep(2);randomize();for(;;){gotoxy(12,1);printf(" ");gotoxy(12,1);printf("%d",score);i=rand()%80;if(i==0)i=1;x=rand()%36;t=0;for(j=4;!kbhit()&&j!=18;j++) {gotoxy(i,j);printf("%c",a[x]);gotoxy(i,j);if(score<10)delay(10000);else if(score<20)delay(7000);else if(score<30)delay(5000);else if(score<40)delay(4000);if(score==40){clrscr();textmode(C40);delay(100000);gotoxy(18,12);printf("YOU WIN!");delay(100000);exit(1);}gotoxy(i,j);printf(" ");gotoxy(i,j);}if(j==18){t=1;score--;}if(t==1)continue;key=bioskey(0);if(key==0x011b)break;else if(key==0x231&&a[x]==49) {score++;continue;}else if(key==0x332&&a[x]==50) {score++;continue;}else if(key==0x433&&a[x]==51) {score++;continue;}else if(key==0x534&&a[x]==52) {score++;continue;}else if(key==0x635&&a[x]==53) {score++;continue;}else if(key==0x736&&a[x]==54) {score++;continue;}else if(key==0x837&&a[x]==55) {score++;continue;}else if(key==0x938&&a[x]==56) {score++;continue;}else if(key==0x939&&a[x]==57) {score++;continue;}else if(key==0xb30&&a[x]==48) {score++;continue;}else if(key==0x1e61&&a[x]==65) {score++;continue;}else if(key==0x3062&&a[x]==66) {score++;continue;}else if(key==0x2e63&&a[x]==67) {score++;continue;}else if(key==0x2064&&a[x]==68) {score++;continue;}else if(key==0x1265&&a[x]==69) {score++;continue;}else if(key==0x2166&&a[x]==70) {score++;continue;}else if(key==0x2267&&a[x]==71) {score++;continue;}else if(key==0x2368&&a[x]==72) {score++;continue;}else if(key==0x1769&&a[x]==73) {score++;continue;}else if(key==0x246a&&a[x]==74) {score++;continue;}else if(key==0x256b&&a[x]==75) {score++;continue;}else if(key==0x266c&&a[x]==76) {score++;continue;}else if(key==0x326d&&a[x]==77) {score++;continue;}else if(key==0x316e&&a[x]==78) {score++;continue;}else if(key==0x186f&&a[x]==79) {score++;continue;}else if(key==0x1970&&a[x]==80) {score++;continue;}else if(key==0x1071&&a[x]==81) {score++;continue;}else if(key==0x1372&&a[x]==82) {score++;continue;}else if(key==0x1f73&&a[x]==83){score++;continue;}else if(key==0x1474&&a[x]==84) {score++;continue;}else if(key==0x1675&&a[x]==85) {score++;continue;}else if(key==0x2f76&&a[x]==86) {score++;continue;}else if(key==0x1177&&a[x]==87) {score++;continue;}else if(key==0x2d78&&a[x]==88) {score++;continue;}else if(key==0x1579&&a[x]==89) {score++;continue;}else if(key==0x2c7a&&a[x]==90) {score++;continue;}else{score--;continue;}}cleardevice();outtextxy(100,200,"GAME OVER");getch();closegraph();}五、主要问题的解决方法及技术关键1、主要问题的解决方法:用“graphics.h”库存函数实现图形的初始化绘制。
用e l s e…i f语句、g o t o语句等函数编译字母下降和积分的程序。
2、技术关键:程序的关键在于使打字键盘与计分系统同步。
用key来判断是否键盘敲击正确时使分数正向增加,否则分数减少。
通过获取key的程序使游戏继续进行下去。
六、设计结果说明1、设计优点:能够很好的给使用者提供打字练习的平台,游戏实用性强。
2.设计不足:程序的游戏背景过于单调。