VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 768|回复: 3

[交流] 为什么在vc上一运行不起来,有没有大神帮我看看

[复制链接]
30_avatar_middle
在线会员 发表于 2016-5-10 20:35:23 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <conio.h>
#include <graphics.h>                                //画图头文件
#include <time.h>                                        //时间头文件
      
#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()      
{
       
}

/*******************游戏说明界面函数***************************/
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())
        {       
                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--;                                                        //计数
        }
}




上一篇:中华吸血鬼2[1].0 源代码
下一篇:CListCtrl 防止闪烁
49_avatar_middle
online_vip 发表于 2016-5-11 09:07:11 | 显示全部楼层
你这个搞的另类撒,你还不如直接把代码放上来,人家能跑的直接看就是了
51_avatar_middle
online_admins 发表于 2016-5-11 14:22:22 | 显示全部楼层
代码太多了,不太好看,是编译错误还是执行错误?
12_avatar_middle
在线会员 发表于 2016-5-14 10:28:28 | 显示全部楼层
1、graphics.h找不到,你需要下载相对应的库进行安装
EasyX库(附带graphics.h) 2014冬至版 (2014-12-22)
http://www.easyx.cn/down.aspx?id=8&no=0

2、你的程序没有运行 初始化图形系统 就去调用绘图函数,在运行中会抛出异常
请在绘图前调用initgraph函数
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-20 14:13

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表