首页 C语言程序设计编写的打字母游戏

C语言程序设计编写的打字母游戏

举报
开通vip

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_ //自...

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; //控制延时时间,从控制速度 int sign = 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, "游戏结束!!!\n再来一局,挑战更高分数吧", "询问", 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时不返回信息 缓冲区的大小 指定一个回调窗口的句柄,一般为NULL initgraph(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()) { setco setfont(100, 0, "Wickenden Cafe NDP"); //设置字体 outtextxy(400, 90, s); //输出数字 setcolor(RGB(c, 0, 255)); //设置颜色 setfont(48, 0, "黑体"); //设置字体 if(score == 200) outtextxy(100, 200, "全部击中~~"); //输出文字 else if(score>190) outtextxy(100, 200, "不错~继续加油~"); //输出文字 else outtextxy(100, 200, "不要灰心~继续加油~"); //输出文字 c -= 25; //控制变色的变量自减实现变色 if (c < 0) c = 255; //控制颜色的变量小于0时,再把255赋给c Sleep(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,44 line(0,40,640,40); //用3条线规定一下工作区 while(flag&&num) { setfont(40, 0, "宋体"); //设置字母的字体和大小 i = rand()%2; //rand()函数返回 0,32767 之间的一个整数 if(i) target = 97 + rand() % 26; // 产生任意小写字母 else target = 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语言程序设计编写的打字母游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_841159
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:11
分类:
上传时间:2017-09-26
浏览量:74