羽衫之
羽衫之
Memory
关注数: 9
粉丝数: 21
发帖数: 345
关注贴吧数: 9
怎么写出英语单词的游戏 类似金山打字通里的激流勇进(青蛙过河 我写了很普遍的那种打字母游戏,就想做出一个打单词的游戏,而且单词还是编程语言的词汇(有个室友英语太差,每次都要背)。。结果发现调试的时候能成功读取到按键,而且得分也确实会增加,打成功的单词也会消失,但是我运行的时候单词就是不消失,而且分数也不增加!请问各位大神,有知道可能的原因的吗? 下面是代码:(就很简陋emmm) #include<iostream> #include<conio.h> #include<stdlib.h> #include<time.h> #include"graphics.h" using namespace std; #define wordnum 12//单词个数 string words[40]={"const","string","true","new","delete","static","sort","define","stack","queue","namespace","inline"}; void Welcome() { setcolor(YELLOW); setfont(32,0,"黑体");//设置字体大小和字体样式(字号 风格 字体) outtextxy(230,200,"欢迎来到打字母游戏"); int color=255; setfont(18,0,"华文行楷"); while(true) { setcolor(RGB(color,0,0)); color-=10;//颜色越来越暗 出现闪烁效果 if(color<0) color=255;//红色 outtextxy(300,380,"按任意键进入游戏"); Sleep(20); if(_kbhit())//有按键 { getch();//接收按键 否则会留在缓冲区 cleardevice();//清屏 准备进入游戏界面 return ; } } } void PlayGame() { int x=0,y=0; short target;//目标单词序号 string str_target;//目标单词 srand(time(0));//设置时间种子 int score=0; int level=1; int miss=0; setcolor(WHITE); while(true) { target=rand()%wordnum;//随机生成单词序号 str_target=words[target]; x=rand()%670+2;//随机生成产生单词的位置 setfillcolor(getbkcolor());//以背景色填充 //setfillstyle(EMPTY_FILL);//以背景色填充 //setfillstyle(SOLID_FILL,0);//用这个设置填充颜色并不行 只会出现白色 //让该字母从最顶上面往下落 for(y=1;y<520;y+=level) { int flag=0; setfont(18,0,"无衬线"); outtextxy(x,y,str_target.data());//string->char * ...char *p=str.data() Sleep(20); //bar画一个填充矩形 setfillstyle决定填充颜色 short i=0; while(_kbhit())//一直有按键 { wchar_t ch=_getch(); if(ch==27)//'esc'--> exit { return ; } if(ch==str_target[i]||ch==(str_target[i]+32))//字母大小写 { ++i; if(i==str_target.size())//这个单词打对了 { bar(x,y,x+10*str_target.size(),y+16);//擦除刚写出来的 score++; if(score%10==0) { level++; } flag=1; break; } } else i=0;//一旦打错 必须从头开始打这个单词 } setfont(16,0,"无衬线"); outtextxy(10,10,"当前分数:"); char strscore[20]; sprintf(strscore,"%d",score);//swprintf_s(strscore,L"当前分数:%d",score); //swprintf可以处理任意类型数据 而sprintf只能处理字符 字符串 整型数据 outtextxy(100,10,strscore); outtextxy(10,30,"出错次数:"); char strmiss[20]; sprintf(strmiss,"%d",miss);//swprintf_s(strscore,L"当前分数:%d",score); //swprintf可以处理任意类型数据 而sprintf只能处理字符 字符串 整型数据 outtextxy(100,30,strmiss); outtextxy(10,50,"难度等级:"); char strlevel[20]; sprintf(strlevel,"%d",level);//swprintf_s(strscore,L"当前分数:%d",score); //swprintf可以处理任意类型数据 而sprintf只能处理字符 字符串 整型数据 outtextxy(100,50,strlevel); if(flag==1) break; } if(y>=520) { miss++; } Sleep(180); bar(x,y,x+10*str_target.size(),y+20);//擦除刚写出来的 到等级4的时候就会出现白色轨迹..... } } int main() { initgraph(720,520);//640*480 basic Welcome();//欢迎界面 PlayGame();//游戏界面 closegraph(); cout<<"游戏结束 玩的开心否?"<<endl; system("pause"); return 0; }
1
下一页