文档库 最新最全的文档下载
当前位置:文档库 › C语言练习打字小游戏

C语言练习打字小游戏

C语言练习打字小游戏
C语言练习打字小游戏

课程设计名称:练习训练游戏的分析与实现专业:中法计算机

目录

一游戏说明二总体设计三程序代码四运行结果五附录文档

一游戏说明

1系统实现了什么

本程序完成简单的指法练习全程,实现测试打字过程中返回正确错误个数的功能,能提示用户相关练习结果。部分功能通过类似window菜单界面实现,通过键盘来实现各项功能的设置。

2使用说明

(1)开始功能键选择

选择英文字符

选择其他字符

选择所有字符

退出游戏

(2)系统将打字结果与系统所定义标准相比较,若速度小于等于50 正确率小于等于80,则显示结果不太好,提示练习者继续,若速度大于50,争取率大于80,则问练习者是否愿意在尝试一次

3程序说明书

程序的功能说明:练习训练游戏是一个运行在Windows平台下的小型游戏软件,依据练习训练的游戏的基本规则,给用户进行打字成绩的显示,会在每次练习结束显示用户此次打字所用时间,打字正确个数,错误个数,以及正确率。并且依据不同情况,提示用户此次打字是not very good ,还是well done。在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。

4 软件可以实现的基本功能

(1)游戏区

.在屏幕上显示要去练习者要输入的语句,语句不能随机生成,必须从事先建立的标准文件中载入,要求语句难度可调,可由字母、数字、特殊付符号构成。

.用户可删除已键入的字母;

.实时显示所用时间;

统计,显示正确率,用户可查看详细的分类正确率,如字母的正确率、数字的正确率、特殊字符的正确率等;

(2)帮助:玩家通过帮助功能了解游戏规则和排行榜设置规则

(3)其它相关设置:设置背景颜色等

5模块设计说明

(1).游戏区模块

该模块为玩家提供练习训练游戏的主体功能,由系统自动产生一些符合要求的字符,并给用户一定的时间进行字符输入。并且根据用户的完成情况进行等级划分,提示用户的完成情况以及是否再来一次。流程图如下:

(2)帮助模块

帮助模块提供的功能是当玩家选项为帮助功能对应的选项数字时,进入帮助模块,给出用户游戏中相关提示的含义。

(3)整体流程图

二 总体设计

1 要求

(1)要求使用多文件方式实现设计; (2)要求在各个文件内实现结构化设计; (3)每个模块作为一个单独的C 文件。

2 文件及函数组成

自定义函数 系统函数 welcome() 实现欢迎界面

textbackground() Textcolor() gotoxy() Window() sleep() randomize() clock() time(NULL) getch() putchar() sound() delay() nosound() kbhit()

random()

difftime(int,int) exit() cputs()

menu()

window 的窗口界面

DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor)

画边框函数 Enter(int m,int n) 菜单选项的具体功能 Start() 开始打字 Bgcolor() 背景颜色 Ccolor() 字体颜色 Time() 设定时间 Help() 系统帮助 About() 系统信息 Qutigame()

退出系统

3 函数设计

(1)头文件

#include #include #include #include

#include

#include

这里的include 称为文件,因此也称为头文件或首部文件。C语言的头文件中包括了各个标准库函数的函数原型。因此,凡是在程序中调用一个库函数时,都必须包含该函数原型所在的头文件。

scanf和printf是标准输入输出函数,其头文件为stdio.h,在主函数前也用include命令包含了stdio.h文件。

stdio.h是输入输出头文件,所有有关输入输出的语句如"printf","scanf","putchar","getchar"等,都要用该头文件,头文件其实就是定义了这些函数的文件,它是系统提供给我们的接口

conio.h是TC特有的,用于输入输出图形方面

conio.h是字符屏幕操作函数啊!常用的getch() clrscr()清屏函数啊!清除正文窗口都在这里面定义

是TC里面的图形库,如果要用的话应该用TC来编译,VC++有他自己的另外图形库。含有一下系列的函数:

(2)变量参数

define MAXCHAR 100

#define ESC 0x011b /* 退出程序键,调用quitgame()函数*/

#define F1 0x3b00 /* 查看帮助信息,调用Help()函数*/

#define F2 0x3c00 /* 查看关于...信息,调用About()函数*/

#define F3 0x3d00 /* 以下功能键暂时保留,如果增加功能可使用*/

这些是一些定义变量及参数

(3)相关函数

○1函数名: outtextxy

功能: 在指定位置显示一字符串

○2函数名: settextstyle

功能:: 为图形输出设置当前的文本属性

用法: void far settextstyle (int font, int direction, char size);

fornt 为字体:DEFAULT_FONT,TRIPLEX_FONT,SMALL_FONT,SAN SSERIF_FONT,GOTHIC_FONT,也可以用0 ~ 4代替。

direction 为字符的排列方向:横向和竖向,0为横向排列,1为竖向排列。

size 为字体大小:可用interger做参数。

○3函数名:gotoxy

原型:extern void gotoxy(int x, int y);

用法:#include

功能:将光标移动到指定位置说明:gotoxy(x,y)将光标移动到指定行y和列x。设置光标到文本屏幕的指定位置,其中参数x,y为文本屏幕的坐标。

○4时间控制函数

原型:int Time_ control()

功能:利用文件,得到玩游戏的总时间,计算游戏积分。

参数:void

返回值:int Time:游戏前后的时间差异

三程序代码

/*

练习训练游戏

*/

#include

#include

#include

#include

#include

#include

#define MAXCHAR 100

#define ESC 0x011b /* 退出程序键,调用quitgame()函数*/

#define F1 0x3b00 /* 查看帮助信息,调用Help()函数 */

#define F2 0x3c00 /* 查看关于...信息,调用About()函数 */

#define F3 0x3d00 /* 以下功能键暂时保留,如果增加功能可使用 */

#define F4 0x3e00

#define F5 0x3f00

#define F6 0x4000

#define F7 0x4100

#define F8 0x4200

#define F9 0x4300

#define F10 0x4400

#define KEY1 0x0231

#define KEY2 0x0332

#define KEY3 0x0433

#define KEY4 0x0534

#define KEY01 0x4f31

#define KEY02 0x5032

#define KEY03 0x5133

#define KEY04 0x4b34

char string[MAXCHAR+1];

int LittleWin(int WinType/*=1, quitgame; =2, Help;=3, About; =4, others;*/);/*when WinType=1, return 0, quit, return 1, not quit*/

void quitgame();

void Welcome();

void drawframe();

void Frame();

void GetCharacter();

void Typing();

int LittleWin(int WinType/*=1, quitgame; =2, Help;=3, About; =4, others;*/)

/*when WinType=1, return 0, quit, return 1, not quit*/

{

int i;

char ch;

window(18,6,62,20);

textbackground(LIGHTGRAY);

textcolor(BLACK);

clrscr(); 清除把之前显示出的文字自负去掉

gotoxy(1,1); 将光标移动到指定位置

cprintf("%c",201); 送格式化输出至屏幕for(i=0;i<43;i++)

cprintf("%c",205);

cprintf("%c",187);

for(i=0;i<13;i++)

{

gotoxy(1,i+2);

cprintf("%c",186);

gotoxy(45,i+2);

cprintf("%c",186);

}

gotoxy(1,14);

cprintf("%c",200);

for(i=0;i<43;i++)

cprintf("%c",205);

cprintf("%c",188);

gotoxy(20,1);

switch(WinType)

{

case 1:

cprintf(" Exit ");

textcolor(LIGHTRED);

gotoxy(18,3);

cprintf("Warning!");

textcolor(LIGHTBLUE);

gotoxy(5,5);

cprintf("This operation will exit the program!");

gotoxy(10,7);

cprintf("Do you really want to quit?");

textcolor(LIGHTGREEN);

gotoxy(18,9);

cprintf("OK? [Y/N]");

/*window(18,20,62,20);

textbackground(LIGHTBLUE);

textcolor(YELLOW);

clrscr();*/

window(19,18,61,18);

textbackground(LIGHTBLUE);

textcolor(WHITE);

clrscr();

gotoxy(5,1);

cprintf("Press Y to quit, press N to return.");

while(1)

{

ch=getch()从键盘输入一个字符赋给对应的字符变量;

if(ch=='Y'||ch=='y')

return 0;

else if(ch=='N'||ch=='n')

return 1;

}

break;

case 2:

cprintf(" Help ");

break;

case 3:

cprintf(" About ");

break;

case 4:

cprintf(" Info ");

break;

default:

break;

}

}

void quitgame()

{

if(LittleWin(1))

{

Frame();

return;

}

window(1,1,80,25);

textbackground(BLACK);

textcolor(LIGHTGRAY);

clrscr();

exit(0);

}

void Welcome()

{

int driver=VGA,mode=VGAHI; /*定义变量*/

int x1=20,y1=20,r=10,num,i;

int x2=20,y2=450;

int color1=10,color2=10; /*在此设置颜色,一改全改*/

static char ch1[28][2]={"W","e","l","c","o","m","e"," ","t","o"," ","t","h","e"," ","T","y","p","i","n","g"," ","W","o","r","l","d","!"};

initgraph(&driver,&mode,"C:\\tc "); /*初始化图形模式*/

setbkcolor(LIGHTBLUE);

setcolor(color1); /*步骤一、设置当前颜色用于绘图*/

for(num=0;num<30;num++)

{

circle(x1,y1,r); /*步骤二、使用当前颜色绘制一个闭合图形*/

setfillstyle(num%12,color1); /*步骤三、设置填充方式*/

floodfill(x1,y1,color1); /*步骤四、对闭合图形进行填充*/

x1+=20;

sound(300); /*输出声音*/

delay(3000);

nosound();

}

setcolor(color2);

for(num=0;num<30;num++)

{

circle(x2,y2,r);

setfillstyle(num%12,color2);

floodfill(x2,y2,color2);

x2+=20;

sound(300); /*输出声音*/

delay(3000);

nosound();

}

settextstyle(0,0,2);

setcolor(LIGHTRED);

sound(300); /*输出声音*/

delay(3000);

nosound();

outtextxy(180,90,"^o^ Hello! ^o^");

sound(300); /*输出声音*/

delay(3000);

nosound();

setcolor(YELLOW);

gotoxy(50,150);

for(i=0;i<28;i++)

{

outtextxy(50+i*16,150,ch1[i]);

sound(300); /*输出声音*/

delay(3000);

nosound();

}

/*outtextxy(50,150,"Welcome to the Typing World!");*/ setcolor(WHITE);

outtextxy(50,200,"This is a little");

sound(300); /*输出声音*/

delay(6000);

nosound();

outtextxy(100,250,"Typing Training");

sound(300); /*输出声音*/

delay(6000);

nosound();

outtextxy(150,300,"Software ... ^_^");

sound(300); /*输出声音*/

delay(6000);

nosound();

setcolor(LIGHTMAGENTA);

outtextxy(100,350,"Ver. 2004-04-30");

sound(300); /*输出声音*/

delay(6000);

nosound();

setcolor(LIGHTGREEN);

outtextxy(100,400,"Press any key to start...");

sound(300); /*输出声音*/

delay(6000);

nosound();

getch();

closegraph(); /*关闭图形*/

}

void drawframe()

{

int i;

window(1,1,80,1);

textbackground(LIGHTGRAY);

textcolor(BLACK);

clrscr();

gotoxy(7,1);

cprintf("File Edit Run Compile Project Options Debug Help");

textcolor(RED);

gotoxy(7,1);

cprintf("F");

gotoxy(14,1);

cprintf("E");

gotoxy(21,1);

cprintf("R");

gotoxy(27,1);

cprintf("C");

gotoxy(37,1);

cprintf("P");

gotoxy(47,1);

cprintf("O");

gotoxy(57,1);

cprintf("D");

gotoxy(65,1);

cprintf("H");

window(1,25,80,25);

textbackground(LIGHTGRAY);

textcolor(BLACK);

clrscr();

gotoxy(7,1);

printf("F1-Help F2-About F3-Open F4-Restart Ctrl+F9-Run ESC-Quit");

textcolor(RED);

gotoxy(7,1);

cprintf("F1");

gotoxy(17,1);

cprintf("F2");

gotoxy(28,1);

cprintf("F3");

gotoxy(37,1);

cprintf("F4");

gotoxy(50,1);

cprintf("Ctrl+F9");

gotoxy(64,1);

cprintf("ESC");

window(1,2,80,24);

textbackground(LIGHTBLUE);

textcolor(LIGHTGRAY);

clrscr();

gotoxy(1,2);

cprintf("%c",213);

for(i=0;i<78;i++)

cprintf("%c",205);

cprintf("%c",184);

for(i=0;i<21;i++)

{

gotoxy(1,i+3);

cprintf("%c",179);

gotoxy(80,i+3);

cprintf("%c",179);

}

gotoxy(1,22);

cprintf("%c",192);

for(i=0;i<78;i++)

cprintf("%c",196);

cprintf("%c",217);

textcolor(WHITE);

gotoxy(37,1);

cprintf(" Type ");

}

void Frame() /*设置菜单函数*/ {

drawframe();

window(2,3,79,22);

textbackground(LIGHTBLUE);

textcolor(YELLOW);

clrscr();

gotoxy(25,2);

cprintf("The Typing World Menu\n");

gotoxy(12,4);

cprintf("1:Practice Only ENGLISH Characters.");

gotoxy(12,6);

cprintf("2:Practice Other Charcters.");

gotoxy(12,8);

cprintf("3:Practice All Charcters.");

gotoxy(12,10);

cprintf("4:Quit at once!");

GetCharacter();

}

void GetCharacter(void) /*设置得到字符函数*/

{

void Typing(); /*声明typing()函数*/

FILE *in;

int i,t,choice;

char ch;

t=abs(time(0))%700; /*获取随机数来指定下面指针的位*/ gotoxy(12,12);

cprintf("Please input your choice: ");

while(1)

{

gotoxy(38,12);

choice=bioskey(0);

if(choice==ESC||choice==KEY4||choice==KEY04)

{

quitgame();

break;

}

else if(choice==KEY1||choice==KEY01)

{

in=fopen("english.dat","r");

break;

}

else if(choice==KEY2||choice==KEY02)

{

in=fopen("others.dat","r");

break;

}

else if(choice==KEY3||choice==KEY03)

{

in=fopen("typeall.dat","r");

break;

}

}

clrscr(); /*清屏*/

fseek(in,t*1l,0);

fgets(string,MAXCHAR+1,in);

textcolor(WHITE);

gotoxy(1,2);

cprintf("********************************************************************* *********");

textcolor(YELLOW);

for(i=0;i

cprintf("%c",string[i]);

gotoxy(1,5);

textcolor(WHITE);

cprintf("********************************************************************* *********");

fclose(in);

gotoxy(1,6);

cprintf("Let's begin typing,OK?[Y/N]");

while(1)

{

gotoxy(28,6);

ch=getch();

if(ch=='n'||ch=='N') /*判断是否练习打字*/

{

quitgame();

break;

}

else if(ch=='y'||ch=='Y')

{

Typing();

break;

}

}

}

void Typing(void) /*设置打字(包括计算其他结果)函数*/ {

int i,j,Right_char=0,Wrong_char=0,Sum_char=0;

float Speed,Timeused,Right_rate;

char absorb_char,ch_1,ch_2,ch_3;

time_t star,stop; /*定义time变量,获取系统时间并显示在屏幕上*/

time(&star);

textcolor(WHITE);

gotoxy(1,6);

cprintf("time begin:%s",ctime(&star));

gotoxy(1,7);

i=0;

textcolor(YELLOW);

absorb_char=getch(); /*接受键盘输入的字符并在下面的while语句判断正错和计算结果*/

while(i

{

if(absorb_char=='\n')

continue;

else

cprintf("%c",absorb_char);

if(absorb_char==string[i])

{

Right_char++;

Sum_char++;

}

else

{

Wrong_char++;

Sum_char++;

}

i++;

absorb_char=getch();

}

time(&stop);

Timeused=difftime(stop,star); /*利用difftime()函数输出所用时间*/

Right_rate=(float)Right_char/(float)Sum_char*100;

Speed=(Sum_char/Timeused)*60;

textcolor(WHITE);

gotoxy(1,11);

cprintf("time end:%s",ctime(&stop)); /*下面显示分数*/

textcolor(LIGHTGREEN);

gotoxy(1,12);

cprintf("********************Your Score!*************************");

gotoxy(7,13);

textcolor(WHITE);

cprintf(" 1: TOTAL TIME USED:%.3f",Timeused);

gotoxy(7,14);

cprintf(" 2: YOU HAVE TYPED:%d",Sum_char);

gotoxy(7,15);

cprintf(" 3: Typing Right_Characters are:%d",Right_char);

gotoxy(7,16);

cprintf(" 4: Typing Wrong_Characters are:%d\n",Wrong_char);

gotoxy(7,17);

cprintf(" 5: YOUR TYPING SPEED IS :%.2f\\min\n",Speed);

gotoxy(7,18);

cprintf(" 6: YOUR TYPING RIGHT_RATE IS :%.2f%%\n",Right_rate);

textcolor(LIGHTGREEN);

gotoxy(1,19);

cprintf("********************Your Score!*************************");

gotoxy(1,20);

textcolor(WHITE);

if(Speed<=50||Right_rate<=80) /*询问用户是否重来一遍*/

{

cprintf("Not Very Good! Try it Again,OK?[Y/N]");

while(1)

{

gotoxy(39,20);

ch_2=getch();

if(ch_2=='n'||ch_2=='N')

{

quitgame();

break;

}

else if(ch_2=='y'||ch_2=='Y')

{

Frame();

break;

}

}

}

else

{

cprintf("Well Done!! One More Time?[Y/N]"); /*询问用户是否重来一遍*/

while(1)

{

gotoxy(35,20);

ch_3=getch();

if(ch_3=='n'||ch_3=='N')

{

quitgame();

break;

}

else if(ch_3=='y'||ch_3=='Y')

{

Frame();

break;

}

}

}

}

main(void) /*主函数包含两个要调用的函数*/ {

/*Welcome();*/

Frame();

}

_

四运行结果

功能选择界面

用户选择是否开始练习

若不开始则询问是否推出

一次练习结束系统的统计的相关数据

汇编课程设计汇本打字游戏

华北科技学院 课程设计说明书 专业:网络工程 课程名称: 汇编课程设计 设计题目: 打字游戏设计 设计时间: 2011-12-05 至2011-12-16 评语: ________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:___

课程设计报告的要求 1、需求分析 描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。 2、总体设计(程序设计组成框图、流程图) 3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,过程调用关系描述等)) 4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 5、测试结果,用几组测试数据进行测试算法设计的正确性。 6、附录。源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。 《汇编语言》课程设计案例 一、问题述及其需求分析 要求:利用汇编语言编写一个小的打字游戏 容:编写程序,在打开的菜单页面中选择游戏的难度。 难度选择包括以下5个选择 (1)very slow (2)slow (3)normal (4)fast (5)very fast 在编写过程中包括以下几个部分: (1)初始化上部分的字母 (2)获得下落的字母 (3)字母下移,同时覆盖原来的字母 (4)判断是否有输入 (5)若无输入则下落到最后 (6)覆盖原来的字符

c语言小游戏编程

程序设计实践 大作业 学号:20100302XXXX 姓名:XXX 班级:信息10-3班 实验题目:射击类飞机游戏 页脚内容1

成绩: 一.实验题目: 射击类飞机游戏 二.实验目的: 通过c语言编写一个射击类的打飞机小游戏,可以通过键盘来进行游戏,操作方法是“a”“d”“w”或者“←”“↑”“→”来控制,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次生还机会,游戏结束后可选择是否重新开始游戏…… 三.对游戏的改进: 这个游戏是我对一个小游戏进行的改造升级版,添加了颜色函数、终止函数,选择类函数,使游戏实现了可以终止,不再是分数、死亡数一直增加但是没有结束的情况;增加了颜色函数,使得游戏看起来更加的舒适;增加了终止函数,使游戏在死亡三次后自动结束游戏,并且可以选择是否重新开始游戏;另外增添了设置函数,使得可以对游戏进行设置,改变游戏大小,调整飞机运行速度等等,是游戏更加的人性化…… 四.实验内容 页脚内容2

编写出c语言代码,运行程序,并调试程序,最终实现游戏的功能。本程序主要包含游戏控制函数、设置是否继续游戏函数、输出函数、子弹移动函数、敌机移动函数、设置函数、菜单函数等7个主要函数,包含了不同的功能,对原来的程序作出了很大的改进,用到的主要语句有getche语句、for语句、while语句、printf语句、switch语句等等,添加了颜色函数,实现了诸多功能。可以在页面上显示制作人的主要信息等等…… 【流程图见打印版】 五.源程序: #include 页脚内容3

#include #include #include #define N 35 #define up 72 #define left 75 #define right 77 void run();//游戏控制函数 void yn();//设置是否继续游戏函数 void print(int [][N]);//输出函数 void movebul(int [][N]);//子弹移动函数 void movepla(int [][N]);//敌机移动函数 void setting(void);//设置函数 void menu(void);//菜单函数 int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡 页脚内容4

汇编语言课程设计报告-打字练习程序

提供全套毕业设计,欢迎咨询 汇编语言课程设计报告 程序题目:打字练习程序 学生姓名:XX 班级:2010级计算机科学与技术专业4班学号:XXX 院系:计算机科学学院 指导教师:XXX

目录

1设计目的 本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。通过课程设计,主要达到以下目的: 1. 增进对汇编语言的认识,加强用汇编语言编程的能力; 2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等; 3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础; 4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中; 5. 掌握屏幕输出显示的设计方法。 2概要设计 2.1 系统总体分析 根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。2.字母自动落下。3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。4.按下“Ese”键则程序返回到主界面。5.按空格键游戏暂停。6.在主界面按“E”则程序退出。打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。 2.2主模块框图及说明

是 否 否 是 是 图2-1程序设计流程图 程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER 进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。核心模块的流程大体如下面的流程图图2-1: 3 详细设计 3.1 主模块及子模块说明 主界面是程序的初始入口,也是其他功能模块的接入点。主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)

打字练习游戏程序

摘要 汇编语言(Assembly Language)是面向机器的程序设计语言,汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。 关键字:汇编语言、程序设计、助记符

目录 摘要 0 目录 (1) 前言 (2) 第1章系统分析 (3) 第2章系统总体设计 (4) 2.1打字程序包括以下五个子程序: (4) 2.2算法的整体设计思路 (4) 2.3程序的主要特点 (4) 第3章详细设计 (5) 3.1主界面伪代码 (5) 3.2等级界面伪代码 (5) 3.3游戏界面伪代码 (6) 3.4清屏子程序设计 (6) 3.5密码程序设计 (7) 3.6宏代码 (8) 3.6.1在指定位置显示彩色字符串 (8) 3.6.2显示背景 (9) 3.6.3画横向边框的宏 (9) 3.6.4画竖边框的宏 (10) 3.7功能的进一步完善 (11) 3.7.1完善代码一 (11) 3.7.2完善代码二 (12) 3.7.3完善代码三 (12) 第4章软件使用说明书 (14) 4.1密码界面图: (14) 4.2主界面图: (14) 4.3等级选择界面: (14) 4.4游戏界面: (15) 参考文献 (17) 致谢 (18) 源代码: (19)

前言 随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。而汇编语言作为计算机专业大学生必修课,每个作为本专业的学生对汇编的理解和学习就显得尤为重要。汇编语言是计算机能够提供用户使用的最快而又最好最有效的与言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。 《打字游戏程序设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过具体的问题分析、设计、调试、运行程序。在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。

C语言编程游戏代码

#include #include #include #include #include #define L 1 #define LX 15 #define L Y 4 static struct BLOCK { int x0,y0,x1,y1,x2,y2,x3,y3; int color,next; intb[]={{0,1,1,1,2,1,3,1,4,1},{1,0,1,3,1,2,1,1,4,0},{1,1,2,2,1,2,2,1,1,2},{0,1,1,1,1,0,2,0,2,4}, {0,0,0,1,1,2,1,1,2,3},{0,0,1,0,1,1,2,1,3,8},{1,0,1,1,2,2,2,1,2,5},{0,2,1,2,1,1,2,1,2,6},{0,1,0,2,1,1,1 ,0,3,9},{0,1,1,1,1,2,2,2,3,10},{1,1,1,2,2,1,2,0,3,7},{ 1,0,1,1,1,2,2,2,7,12},{0,1,1,1,2,1,2,0,7,13},{0 ,0,1,2,1,1,1,0,7,14},{0,1,0,2,1,1,2,1,7,11},{0,2,1,2,1,1,1,0,5,16},{0,1,1,1,2,2,2,1,5,17},{1,0,1,1,1, 2,2,0,5,18},{0,0,0,1,1,11,2,1,5,15},{0,1,1,1,1,0,2,1,6,2,0},{0,1,1,2,1,1,1,0,6,21},{0,1,1,2,1,1,2,1,6 ,22},{1,0,1,1,1,2,2,1,6,19}}; static int d[10]={33000,3000,1600,1200,900,800,600,400,300,200}; int Llevel,Lcurrent,Lnext,Lable,lx,ly,Lsum; unsigned Lpoint; int La[19][10],FLAG,sum; unsigned ldelay; void scrint(),datainit(),dispb(),eraseeb(); void throw(),judge(),delayp(),move(0,note(0,show(); int Ldrop(),Ljudge(),nextb(),routejudge(); } main() { char c; datainit(); Label=nextb(); Label=Ldrop(); while(1){ delayp(); if(Label!=0) { Ljudge(); Lable=nextb(); } ldelay--; if(ldelay==0)

打字游戏

湖南农业大学东方科技学院 课程设计报告 课程名称:微机原理与接口技术 设计题目:打字游戏程序设计 学生姓名:罗英杰 学号: 2 年级专业:2008级计算机科学与技术 班级: 3 班 指导老师:王兴波 学院:东方科技学院 湖南·长沙 提交日期:2009年12月

一、任务与要求 1. 开始界面的提示信息:进入游戏,退出 2. 打字游戏:字母从屏幕上方下落,若用户在字母下落过程中输入正确字母,字母消失, 输入不正确,字母继续下落 3. 空格键退出游戏 二、分析与规划 1、结构分析图,如下 2、布局分析: 首先,出现菜单主界面起到提示作用。然后进入游戏,接着完成游戏的退出。

三、实现过程 1、出现菜单主界面: ZK db "WELCOME TO PLAY$" no db "shejiren: Luo Yingjie 2009/12/09 $" meg db "press Enter key to continue.......$" meg1 db "when a letter is dropping,please hit it!$" meg2 db "press space key to pause!$" meg3 db "press ESC key to return main interface!$" meg4 db "press letter 'E' to exit!$" 上面的代码菜单主界面的内容 clear_screen 00d,00d,24d,79d Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2 Init_game 00d,00d,0ah,dh,25d,nextsign3 Init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ;菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d Init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h

C编写的小游戏

C编写的小游戏 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

#i n c l u d e usingnamespacestd; constcharMOUSE='*'; constcharWAY=''; constcharWALL='@'; constcharPASS='.'; constcharIMPASS='X'; classGame{ public: Game(size_tuWidth,size_tuHeight):m_uWidth(uWidth),m_uHeigh t(uHeight),m_pcMaze(newchar[uWidth*uHeight]),m_mouse(0,1){ srand(time(NULL)); char(*pcMaze)[m_uWidth]=reinterpret_cast(m_pcMaze); for(size_ti=0;im_uWidth-5)) pcMaze[i][j]=WAY;

elseif(i==0||i==m_uHeight- 1||j==0||j==m_uWidth-1) pcMaze[i][j]=WALL; else pcMaze[i][j]=rand()%4WAY:WALL; } ~Game(void){ if(m_pcMaze){ delete[]m_pcMaze; m_pcMaze=NULL; } } voidRun(void){ for(Show();!Quit()&&Step();); } private: classMouse{ public: Mouse(size_tx,size_ty):m_x(x),m_y(y){} size_tGetX(void){returnm_x;} size_tGetY(void){returnm_y;} voidStepRight(void){

C#打字游戏课程设计

C# 打字游戏程序核心代码主要部分: 设计程序流程图:

主窗体代码: using System; using System.Collections.Generic; using https://www.wendangku.net/doc/9e7226143.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //课程名称 C# 程序设计实践 //设计题目打字游戏 //专业计算机科学与技术 //班级 //学号 //姓名 //指导老师 namespace Typing_Game { public partial class FrmTyping : Form { public FrmTyping() { InitializeComponent();

public int right = 0; //正确个数计数 public int wrong = 0; //错误个数计数 public int sum = 0; //总个数技术 public int count = 0; //按键总次数 public float accuracy; //正确率 public int Minute = 1; //设置默认没局游戏时间 public int minute; //设置游戏中的倒计时分 public int second; //设置游戏中的倒计时秒 private void FrmTyping_Load(object sender, EventArgs e) { } //在状态栏中显示当前系统时间 private void timerSys_Tick(object sender, EventArgs e) { DateTime now = DateTime.Now; this.tsslSysTime.Text = "系统时间: " + now.Hour.ToString() + ":" + now.Minute.ToString() + ":" + now.Second.ToString()+'\t'; } //开始&结束按钮 private void tsmiStratOrOver_Click(object sender, EventArgs e) { if (tsmiStratOrOver.Text == "开始") { tsmiStratOrOver.Text = "结束"; timerWord.Start(); timerGame.Start(); timerGT.Start(); //在游戏开始时暂停&继续按钮可用 tsmiPauseOrContinue.Enabled = true; //在游戏未开始时选择游戏等级与设置游戏按钮无效 tsmiLevel.Enabled = false; tsmiOption.Enabled = false; //游戏开始初始化游戏数据 right = 0; wrong = 0;

C语言小游戏程序设计

程序设计实验 大作业 学院: 班级: 学号: 指导老师: 姓名: 实验项目名称:猜数字游戏成绩:

一、实验要求 根据所学知识编写一个小游戏--猜数字游戏 二、实验目的 为了加深对编程课程的基本知识的理解和掌握,并且掌握编程和程序调试的技巧通过程序的设计训练和提高学生的基本技能,掌握字符串的表示方法和字符串函数的功能、编程软件操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高解决实际问题的能力,巩固语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 三、功能模块分析 1.系统能够随机产生一个1到1000的数字 2.比较输入数字与随机产生数字的大小 3.选择是否继续游戏 四、修改处 1.将输出内容由英文变为汉字 2.改变背景及输出字体的颜色 3将随机产生的数值范围由1-100变为1-1000 四、设计思路 # include # include # include main() { void textbackground(int color); system("color fc"); int a,b; char c; srand(time(NULL)); a=1+(rand()%1000); printf("这有一个数字从1到1000.\n你能猜出它吗?\n输入你猜的数字.\n"); scanf("%d",&b); while(b!=-1) { if(b==a) { printf("恭喜你猜对了!\n你喜欢再玩一遍吗?(y or n)?");

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

2016-2017学年第一学期 《Windows程序设计》 课程设计报告 题目:小小打字游戏设计 专业: 班级: 姓名: 指导教师: 成绩: 二0一六年十一月十五日

目录 1 设计内容及要求 (1) 1.1 设计内容 (1) 1.2 系统功能 (1) 1.3 信息存储功能 (1) 2 系统设计 (1) 2.1 数据库设计 (1) 2.1.1 GameUser表 (1) 2.1.2 GameInfo表 (2) 2.2 游戏系统设计 (2) 2.2.1 程序项目设计 (2) 2.2.2 功能模块设计 (2) 3 C#系统实现 (5) 3.1 类图 (5) 3.2 核心代码 (6) 3.3 MySqlConn类 (10) 3.4 MainForm类 (11) 3.5 菜单事件 (12) 3.6 窗体键盘事件 (13) 3.7 MyRandom类 (15) 3.8 Program类 (16) 4 总结 (17) 4.1 收获 (17) 4.2 反思 (17) 5 参考文献: (18)

1 设计内容及要求 1.1 设计内容 软件名称:小小打字游戏 需求分析:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。 1.2 系统功能 (1)、登录功能:启动软件,出现登录界面,用户输入账号密码,正确后方可进入游戏; (2)、注册功能:不存在的用户,可以注册; (3)、软件互斥:通过创建互斥变量,使打字游戏软件只能单独开启一个; (4)、游戏控制:按F1开启游戏,F2暂停游戏,F3继续游戏,F4使用游戏积分兑换生命值; (5)、游戏显示:游戏窗口随机下落颜色不定的A到Z 26个字母,并根据游戏得分实时增加字母下落的速度; (6)、游戏操作:按下键盘上的A-Z 26个字母键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1; (7)、数据保存和清除:使用数据库保存用户的游戏数据,并可调用数据库数据显示在游戏界面上显示,管理员账号可以清除游戏数据记录; (8)、游戏界面信息显示:显示相应的游戏状态信息,暂停游戏提示,结束游戏提示以及游戏排名。 1.3 信息存储功能 需要存储的信息: (1)游戏分数、(2) 游戏等级、 (3) 用户、 (4)密码、(5)游戏开始时间、(6)游戏结束时间。 2 系统设计 2.1 数据库设计 2.1.1 GameUser表 表1 GameUser表

C编写的小游戏

C编写的小游戏集团档案编码:[YTTR-YTPT28-YTNTL98-UYTYNN08]

#i n c l u d e usingnamespacestd; constcharMOUSE='*'; constcharWAY=''; constcharWALL='@'; constcharPASS='.'; constcharIMPASS='X'; classGame{ public: Game(size_tuWidth,size_tuHeight):m_uWidth(uWidth),m_uHeight(uHe ight),m_pcMaze(newchar[uWidth*uHeight]),m_mouse(0,1){ srand(time(NULL)); char(*pcMaze)[m_uWidth]=reinterpret_cast(m_p cMaze); for(size_ti=0;im_uWidth-5)) pcMaze[i][j]=WAY; elseif(i==0||i==m_uHeight- 1||j==0||j==m_uWidth-1) pcMaze[i][j]=WALL; else pcMaze[i][j]=rand()%4?WAY:WALL; } ~Game(void){ if(m_pcMaze){ delete[]m_pcMaze; m_pcMaze=NULL; } } voidRun(void){ for(Show();!Quit()&&Step();); } private: classMouse{ public: Mouse(size_tx,size_ty):m_x(x),m_y(y){} size_tGetX(void){returnm_x;} size_tGetY(void){returnm_y;} voidStepRight(void){

汇编语言课程设计题2012

《汇编语言与微机原理》课程设计题目(2012) 题目一定时/计数技术应用程序设计 设计一个数字钟,在屏幕上显示分:秒(mm:ss)。按下非空格键开始计时,并显示 00:00,每过1 秒,ss 增1,到60 秒mm 增1,到60 分就是1 小时。经过1 小时后又回到00:00 重新计数。当按下空格键时,程序返回DOS,数字钟消失。 题目二信息检索程序设计 完成一个信息检索系统。在数据区,有9 个不同的信息,编号0-8,每个信息包括40 个 字符。从键盘接收0-8 之间的一个编号,然后再屏幕上显示出相应编号的信息内容,按“q” 键退出。 题目三图形变换程序设计 完成一个图形变换的程序,系统具有4 种可选择的功能,按字母“Y”画一个用点组成的 圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的 矩形;按“q”键退出。 题目四代码转换程序设计 完成一个字母或数制之间的转化程序,主程序分别具有 5 种可选择的子功能,按相应的字符 可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。 5 种可选择的子功能分别为: 1)实现小写字母向大写字母的转换 2)实现大写字母向小写字母的转换 3)实现二进制数向十六进制数的转换 4)实现十六进制数向二进制数的转换 5)实现十六进制数向十进制数的转换 题目五中断处理程序设计 编写一个中断处理程序,要求在主程序运行过程中,每隔20 秒响铃一次,同时在屏幕上 显示信息”The bell is ring!”,按键后恢复原状。 题目六指法练习程序 1.从屏幕上方以一定的时间间隔随机落下可显示字符,字符的出现位置亦是随机的; 2.在多个字符(可以简化为仅有一个字符)下落的过程中可输入任意键,若键入与其中的 任意一个字符相匹配的键,则该字符高亮显示并发出蜂鸣声,同时计分; 3.按ESC 键结束练习并显示命中率; 4.再次按ESC 键退出。 题目七密码设置模拟 编写程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码用*显示。 题目八计算器

使用C语言编写简单小游戏

纯真童趣的《泡泡堂》,还有武林情仇,笑傲江湖的《剑侠情缘on line》.它是e 时代常谈的话题,是交互式娱乐的主力军,是一种高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式 .作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1,总是从Hello,world开始学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序: #incolude <> /*把输入输出函数的头文件包含进来*/ int main() { printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/ return 0;/*退出main函数,并返回0*/ } 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧! 1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件码也有许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2,心动的开始,一个运动中的笑脸大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构: struct move_point { int x, y;/*该点的位置,包括x坐标和y坐标*/ int xv, yv;/*该点在x轴,y轴的速度*/ }; 运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码: gotoxy, ;/*把光标移到指定的坐标*/ printf(" ");/*输出一个空格,把先前的字符擦去*/ 然后我们让物体按其速度运动: += ;/*水平方向按x轴的速度运动*/ += ;/*垂直方向按y轴的速度运动*/ 运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸: gotoxy, ; printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/ 怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能让我们来控制它运动呢?答案是肯定的,让我们继续往下学吧! 3,交互的实现——让我们来控制笑脸运动 这个程序的主要功能是接受按键,如果接收的是方向键,就让笑脸顺着方向移动,如果接收的是ESC键就退出程序,其他按键则忽略处理.接受按键我们用以下两条语句: while (bioskey(1) == 0);/*等待按键*/ key = bioskey(0);/*把接收的按键的键盘码赋给变量key*/ 然后用switch语句来判断按键以及执行相关操作,如下: switch (key) /*对变量key的值进行判断*/ { case UP: /*如果按的是向上键*/ … break; /*让物体向上运动,并退出switch*/

打字训练测试软件-Java课程设计

《程序设计实践》题目:打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管12-2 学号: 201213156619 姓名:刘克豪 2014 年 11 月 09 日

基础类、IO流与异常处理程序设计 一、实践要求 1.掌握Java常用基础类API。 2.掌握输入输出流常用类API。 二、实践要求 利用Java常用基础类API、输入输出流常用类API、Java异常处理等完成所选项目的程序设计。 三、项目需求 所选项目名称:打字训练测试软件 四、项目设计方案 EnglishGame类:主要构造都在这里完成。 MyKey类:是该程序的一个内部类。 EnglishGame作为主函数的入口。调用actionPerformed类的方法实现事件监听器。当发生点击事件时就会弹出输入框,开始英文打字功能。从而达到打字训练测试的目的。 五、核心算法详细设计 1 . public void actionPerformed(ActionEvent e) {} 2.public void keyReleased(KeyEvent arg0) {} 3. public static void main(String[] args) {} 4. public JPanel creatMenu() {} 六、完整源码 package shiyansan; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.io.FileReader; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.SwingUtilities; //所使用的包 public class EnglishGame implements ActionListener { private static JFrame f = new JFrame("英文打字游戏"); private static Container con = f.getContentPane(); JPanel mainPanel,panel0,panel1,panel2,panel3,panel4,panel5,panel6,panel7; JButton button1,button2,button3,button4,button,button5,button6; JTextPane tp1,tp2; FileReader fr; File frr; Date date1,date2; int num,len1,len2,count; long time; double rightrate; char[] ch; public void actionPerformed(ActionEvent e) {

汇编打字练习

课程设计 2010~ 2011学年第二学期 设计题目打字练习程序的设计 院(系)计算机科学与信息工程 专业计算机科学与技术 班级 09104301学号 27 学生姓名李迅 设计时间2011年 6 月 20 日——2011年 6 月 24日 指导教师宓双 提交日期 2011年6月23日

上海应用技术学院课程设计任务书

指导教师(签名):宓双教研室主任(签名): 2011年6 月19 日2010年6 月19日

目录 1概述: (1) 1.1基本功能: (2) 1.2拓展功能 (3) 1.3其他功能 (3) 2详细设计说明 (3) 2.1原“TYPETEST.ASM”程序结构 (4) 2.2已经实现的功能(修改的、新编写的)程序结构 (5) 3对该“打字练习程序”的进一步设想 (10) 3.1 (10) 3.2 (11) 3.3 (11) 4课程设计总结 (11) 5软件使用说明 (12) 6附录(参考文献,原代码:) (12) 参考文献: (12) 原代码 (12)

1概述: 编写一个程序,执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。 因此程序要包含以下几个模块:菜单显示模块、字母显示模块、字母下落模块、暂停处理模块、退出返回模块等。

1.1 基本功能: 2认真阅读“typetest.asm”源程序, 理解程序每一条指令在程序中的作用。绘制程序流程图(简略总图,各模块详细流程图),给程序中的关键语句(后跟分号)作注释。 3设置输入界面, 用户输入密码后才能进入主菜单; 4修改主菜单, 在主菜单上显示当天日期; 5修改主菜单, 增加可供用户选择难度级别的选项。 6为用户打分,正确输入字母使用时间越少,得分越高。 7修改程序, 在屏幕右上角显示用户得分、已输入字母数、正确数。

c语言编写的小游戏代码

用vc6.0新建一个Win32 Application工程,把附件代码拷贝进去即可。上下左右键控制蛇的方向,空格键用于启动或者停止游戏。 上下左右空格键 #include #include #include #define C_W 516 #define C_H 548 //#define C_W 1024 //#define C_H 1024 #define GO_RIGHT 0x01 #define GO_DOWN 0x02 #define GO_LEFT 0x03 #define GO_UP 0x04 #define SNAKE_NUMBER 30 typedef struct node_struct { unsigned char direction; unsigned char cnt; }s_node,*s_node_handle; s_node s_count[SNAKE_NUMBER ]; typedef struct SNAKE { unsigned char Head_X; unsigned char Head_Y; unsigned char Tail_X; unsigned char Tail_Y; unsigned char h_index; unsigned char t_index;

unsigned char food_state; unsigned char score; unsigned char snake_state; } Snake_Data,*Snake_Data_handle; Snake_Data snk_1; #define MAP_X 64 #define MAP_Y 64 unsigned char game_map[MAP_Y][MAP_X]; LRESULT CALLBACK Win_tetris_Proc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state ) { snk_1.Head_X = 0x01;//head x snk_1.Head_Y = 0x00;//head y snk_1.Tail_X = 0x00;//tail x snk_1.Tail_Y = 0x00;//tail y snk_1.h_index=0; snk_1.t_index=0; snk_1.food_state=0; snk_1.score=0; snk_1.snake_state = 1; s_count[snk_1.h_index].cnt=2; s_count[snk_1.h_index].direction=GO_RIGHT; s_count[snk_1.t_index].cnt=2; s_count[snk_1.t_index].direction=GO_RIGHT; WNDCLASS wndcls; wndcls.cbClsExtra=0;

汇编打字程序完整代码

汇编打字程序完整代码 已经经过测试,可以直接使用 Init_game macro op1,op2,op3,op4,op5 local ns mov cx,00h mov dh,op1 mov dl,op2 ns:mov ah,02h;设置光标位置 mov bh,00h;页号为0 int 10h push cx mov ah,0ah;在当前光标位置写字符 mov al,op3;al=字符的ascii码 mov bh,00h;bh=页号bl=字符属性 mov cx,01h;cx=写入字符重复次数 int 10h pop cx;cx=0 inc cx;cx=cx+1 inc op4 cmp cx,op5 jne ns endm clear_screen macro op1,op2,op3,op4 ;清屏宏定义cx,屏幕的左上角,dx屏幕的右下角mov ah,06h mov al,00h mov bh,0ah;改变行属性的色彩,字的色彩,bh空白行的属性/07就是正常的黑底白字mov ch,op1 mov cl,op2 mov dh,op3 mov dl,op4 int 10h mov ah,02h;设置光标的位置从0000开始 mov bh,00h mov dh,00h mov dl,00h int 10h endm menu macro op1,op2,op3 ;菜单显示宏定义 mov ah,02h mov bh,00h

mov dl,op2 int 10h mov ah,09h lea dx,op3 int 21h endm data segment ZK db "WELCOME TO PLAY!$" no db "date:2014/4/7 BY luozhilei QQ:1121364692 $" meg db "press Enter to start.......$" meg1 db "when a letter is dropping,please hit it!(just press the$ " meg2 db "dropping letter,so easy!)$" meg3 db "press space key to pause!repress space to continue!$" meg4 db "press ESC key to return main menu!$" meg5 db "press letter 'E' to exit!$" meg6 db "version 1.0","$" speed dw 600d letters_bak db "jwmilzoeucgpravskntxhdyqfb" db "iytpkwnxlsvxrmofzhgaebudjq" db "nwimzoexrphysfqtvdcgljukda" letters db 78d dup(0) letter_counter db 0 life_flag db 78 dup(0) position_flag db 78 dup(0) present_position db 1 data ends stack segment para stack 'stack' db 64 dup(0) stack ends code segment main proc far assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov letter_counter,00h mov present_position,1 lea si,position_flag; mov ah,00h mov cx,00h ------------------------------------ lea di,letters;di的偏移地址为letters lea si,letters_bak;si的偏移地址为letter_bak mov cx,00h;cx=0