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()
c语言游戏编程题经典100例{
char rank1; //rank1接受从键盘输入的字符,根据字符判断等级
int rank2 = 15; //控制延时时间,从控制速度
intsign = 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, "游戏结束\再来一局,挑战更高分数吧", "询问", 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); //设置颜
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论