[灌水]打字游戏
/* 标准文档模板 */
#include <string.h>
#include "Stdio.h"
#include <stdlib.h>
#include "Conio.h"
#define MAX 200000L/*MAX可以调整游戏的速度*/
typedef struct link{char *str;int x;int y;}link;
void down(char *s,int x,int *y); /*让一个单词下降*/
void check(char *s); /*检查输入是否正确*/
void getouts(); /*到达底线的单词出队*/
void putins(char *s); /*单词表新单词入队*/
void getcheck(); /*输入单词并调用check()检查*/
void endgame1(); /*结束游戏,输出统计结果*/
void first(); /*初始化工作*/
void timed1(); /*游戏进行函数,负责调用alldown()和getcheck()*/
void alldown(); /*所有单词下降*/
void whit(char *none,char *s2); /*生成课覆盖s2的串none*/
void clean(char *s,int x,int y); /*清除屏幕上的一个单词*/
/***********************************/
link data[100];/*单词队列,存放屏幕上的单词信息,一滚动数组为数据结构*/
int top,botton,count,top1;
/*top=队尾;botton=队首;count=记数;top1=单词表的长度*/
char string1[200][15],da[16]; /*string1=单词表,da键盘输入记录 */
FILE *fi;
/**************************************************/
void whit(char *none,char *s2)
{int v;
v=strlen(s2);
none[v]='\0';
while(v--)
none[v]=' ';}
/**************************************************/
void check(char *s)
{int i;
for(i=botton;i!=top;i++,i=i%100)
{if(!strcmp(s,data[i].str))
{count++;
clean(data[i].str,data[i].x,data[i].y);
data[i].str=0;
break;}}}
/**************************************************/
void clean(char *s,int x,int y)
{char none[15]; /*none=用于覆盖的空串*/
whit(none,s);
gotoxy(x,y);
cputs(none);}
/**************************************************/
void down(char *s,int x,int *y)
{clean(s,x,*y);*y=*y+1;
gotoxy(x,*y);
cputs(s); }
/**************************************************/
void putins(char *s)
{data[top].str=s;
data[top].x=random(50)+5;
data[top].y=0;
top++;
top=top%100;}
/**************************************************/
void getouts()
{clean(data[botton].str,data[botton].x,data[botton].y);
data[botton].str=0;
data[botton].x=0;
data[botton].y=0;
botton++;
botton=botton%100;}
/**************************************************/
void alldown()
{int i;
for(i=botton;i!=top;i++,i=i%100)
{down(data[i].str,data[i].x,&data[i].y);}}
/**************************************************/
void first()
{int i;char s[15];
top=0;
botton=0;
count=0;
fi=fopen("data.sav","r");
i=0;
while(fscanf(fi,"%s",s)==1)
{strcpy(string1[i],s);i++;}
top1=i;
fclose(fi);}
/**************************************************/
[此贴子已经被作者于2005-2-3 16:48:58编辑过]