| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1907 人关注过本帖, 1 人收藏
标题:[灌水]打字游戏
取消只看楼主 加入收藏
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏(1)
 问题点数:0 回复次数:3 
[灌水]打字游戏
/* 标准文档模板 */ #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编辑过]

搜索更多相关主题的帖子: 游戏 灌水 打字 
2005-02-03 12:34
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
void getcheck() {char c; long i; static int len=0; textcolor(GREEN); for(i=0;i<MAX;i++) {c=kbhit(); if(!c)continue; c=getch(); if(c==13) {check(da); len=0; gotoxy(20,24); cputs(" "); continue;} if(c==8) {if(len)da[--len]='\0'; gotoxy(20,24); cputs(" ");} else{ if(len<15)da[len]=c; len++; da[len]='\0';}/*else*/ gotoxy(20,24); cputs(da);} /*for*/ textcolor(YELLOW);} /**************************************************/ void timed1(int maxt,int bot) {int t=0; gotoxy(1,bot+2); cputs("00000000000000000000000000000000000000000000000000000000000000000000000000000000"); while(maxt--) {putins(string1[t++]); if(t>=bot)getouts(); alldown(); gotoxy(2,bot+3); printf("%d ",maxt); getcheck(); }} /**************************************************/ void endgame1() {clrscr(); textcolor(RED); gotoxy(17,10); cprintf("You have got:"); gotoxy(17,13); printf("%d",count); gotoxy(17,15); cprintf("words"); } /*************************************************/ int main(void) {int i; textcolor(YELLOW); randomize(); first(); timed1(30,20); /*两个参数,前一个调整运行时间,后一个调整单词下落的底线高度*/ endgame1(); getch(); getch(); return 0;}

[此贴子已经被作者于2005-2-3 16:31:33编辑过]


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2005-02-03 12:37
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
单词表需要有一个data.sav的文件提供
把下面这些单词拷进一个文本,再保存为data.sav就可以了。WIN-TC下编译通过
poor
ride
save
street
table
teeth
tower
ticket
deal
wake
small
cat
fault
angel
boat
breath
beer
call
club
card
corner
country
cow
even
degree
dog
dollar
dream
drop
fat
fish
furniture
God
guest
history
home
line
lion
look
loud
million
month
parrot
part
fall
couple
apple
kiss
crow

[此贴子已经被作者于2005-2-3 12:41:05编辑过]



我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2005-02-03 12:38
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

谢谢神的批评,我刚才对代码进行了一些修正
问题1:[浪费内存]
我已经取消了whit串,而加入函数whit生成正好合适空串
问题2:[定义变量时候思路混乱]
这是我编程时候的疏忽,我先写了check函数,为了更普遍,用了参数*s,
因为没什么大问题,这阳也比较容易看懂,这个缺点没有修改
问题3:[不检查字符串da的大小]
已经改正
问题4:[da数组没有被及时清空]
其实da没有清空的必要,标记len=0就相当于清空了
问题5:[过长的代码行]
这个因为一看就懂,没有修改……
问题6: [随即数问题]
已经修改成random(50)+5;我想让字母接近屏幕中间些;
问题7:[整个程序不美观]
刚才可真累死我……
WIN-TC导出的HTML拷到帖子里一开始一团糟——换行都没了
(是不是论坛BUG?)
最后还是编辑好了……尽力解决了一定程度上的外表美观问题……
代码美观可就有些难了……
尚未解决的问题:
1.[字符乱码问题]
2.[如果输入了掉落字符串的上面一个字符串的时候,有时会出现两个一起消失]
乱码?我TEST的时候没出现过,
2可能是我原来在清除字符串的时候用down函数的原因,现在加入clean函数,
TEST问题好象没再出现了

PS:knocker应该长得比较漂亮吧?

[此贴子已经被作者于2005-2-3 16:51:17编辑过]



我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2005-02-03 16:47
快速回复:[灌水]打字游戏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028993 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved