【天津pc源码】【bug反馈源码之家】【太阳城棋牌源码】扫雷c 源码_扫雷游戏源代码

时间:2024-12-23 23:06:26 编辑:社交app充值源码 来源:聊天交友直播源码

1.ɨ?扫雷?c Դ??
2.c语言怎么变的出扫雷
3.扫雷 c语言代码 告诉我~~

扫雷c  源码_扫雷游戏源代码

ɨ??c Դ??

       #includestdc++.h>#include#include#define LEFT 0x4B#define RIGHT 0x4D#define DOWN 0x#define UP 0x#define ESC 0xB

       int i, key;

       int score = 0;

       int gameSpeed = ;

       struct Food {

        int x; /* 食物的横坐标 */

        int y; /* 食物的纵坐标 */

        int exists; /* 食物是否存在的变量 */

       } food;

       struct Snake {

        int x[N];

        int y[N];

        int length; /* 蛇的节数 */

        int direction; /* 蛇的方向 */

        int alive; /* 蛇的生命,0活着,码扫天津pc源码1死亡 */

       } snake;

       void Initialize(void); /* 图形驱动 */

       void CloseGame(void); /* 关闭游戏函数 */

       void DrawGame(void); /* 画图函数 */

       void GameOver(void); /* 输出失败函数 */

       void PlayGame(); /* 游戏控制函数 主要控制序列 */

       void Delay(char ch); /* 调节游戏速度 */

       /* 主函数 */

       int main(void) {

        int choice;

        choice = Menu(); /* 游戏开始菜单 */

        Initialize();

        DrawGame();

        PlayGame(choice);

        CloseGame();

        return 0;

       }

       /* 游戏开始菜单 */

       int Menu() {

        char ch;

        printf("请选择游戏速度:\n");

        printf("1-快速 2-正常 3-慢速\n");

        printf("\n请按数字键...\n");

        do {

        ch = getch();

        } while (ch != '1' && ch != '2' && ch != '3');

        clrscr();

        return ch;

       }

       /* 初始化图形驱动 */

       void Initialize(void) {

        int gd = DETECT,雷游bug反馈源码之家 gm;

        initgraph(&gd, &gm, "c:\\tc");

        cleardevice();

       }

       /* 绘制游戏界面 */

       void DrawGame(void) {

        setcolor();

        setlinestyle(SOLID_LINE, 0, THICK_WIDTH);

        for (i = ; i <= ; i += ) {

        rectangle(i, , i + , ); /* 画出上边框 */

        rectangle(i, , i + , ); /* 画出下边框 */

        }

        for (i = ; i <= ; i += ) {

        rectangle(, i, , i + ); /* 画出左边框 */

        rectangle(, i, , i + ); /* 画出右边框 */

        }

       }

       /* 游戏结束 */

       void GameOver(void) {

        cleardevice();

        setcolor(RED);

        settextstyle(0, 0, 4);

        outtextxy(, , "GAME OVER");

        getch();

       }

       /* 输出分数 */

       void PrintScore(void) {

        char str[];

        setfillstyle(SOLID_FILL, YELLOW);

        bar(, , , );

        setcolor(6);

        settextstyle(0, 0, 2);

        sprintf(str, "Score: %d", score);

        outtextxy(, , str);

       }

       /* 关闭游戏 */

       void CloseGame(void) {

        getch();

        closegraph();

       }

       /* 游戏主循环 */

       void PlayGame(int choice) {

        randomize(); /* 随机数发生器 */

        food.exists = 1; /* 设置食物存在 */

        snake.alive = 0;

        snake.direction = 1;

        snake.x[0] = ;

        snake.y[0] = ;

        snake.length = 2;

        PrintScore();

        while (1) { /* 游戏循环 */

        while (!kbhit()) { /* 检查是否有按键 */

        if (food.exists == 1) { /* 需要食物 */

        food.x = rand() % + ;

        food.y = rand() % + ; /* 使用rand函数随机产生食物坐标 */

        while (food.x % != 0) food.x++;

        while (food.y % != 0) food.y++; /* 确保食物在整格中 */

        food.exists = 0; /* 食物现在出现 */

        }

        if (food.exists == 0) { /* 食物出现后显示 */

        setcolor(GREEN);

        rectangle(food.x, food.y, food.x + , food.y - );

        }

        for (i = snake.length - 1; i > 0; i--) { /* 贪吃蛇移动算法 */

        snake.x[i] = snake.x[i - 1];

        snake.y[i] = snake.y[i - 1];

        }

        switch (snake.direction) { /* 控制蛇头移动方向 */

        case 1: snake.x[0] += ; break;

        case 2: snake.x[0] -= ; break;

        case 3: snake.y[0] -= ; break;

        case 4: snake.y[0] += ; break;

        }

        for (i = 3; i < snake.length; i++) { /* 判断蛇头是否与身体相撞 */

        if (snake.x[i] == snake.x[0] && snake.y[i] == snake.y[0]) {

        GameOver();

        snake.alive = 1;

        break;

        }

        }

        /* 判断是否撞到墙壁 */

        if (snake.x[0] || snake.x[0] > || snake.y[0] || snake.y[0] > ) {

        GameOver();

        snake.alive = 1;

        }

        if (snake.alive == 1) break; /* 如果死亡则退出循环 */

        if (snake.x[0] == food.x && snake.y[0] == food.y) { /* 判断蛇是否吃到食物 */

        setcolor(0);

        rectangle(food.x, food.y, food.x + , food.y - ); /* 吃掉食物后用黑色擦去 */

        snake.x[snake.length] = -;

        snake.y[snake.length] = -; /* 暂时将增加的一节放到看不到的地方 */

        snake.length++;

        score += ;

        PrintScore();

        }

        setcolor(4); /* 每次移动后擦除后面的身体 */

        for (i = 0; i < snake.length; i++) rectangle(snake.x[i], snake.y[i], snake.x[i] + , snake.y[i] - );

        Delay(choice);

        setcolor(0);

        for (i = snake.length - 1; i > 0; i--) rectangle(snake.x[i], snake.y[i], snake.x[i] + , snake.y[i] - );

        }

        key = bioskey(0); /* 接受按键 */

        if (key == ESC) break;

        else if (key == UP && snake.direction != 4) snake.direction = 3;

        else if (key == RIGHT && snake.direction != 2) snake.direction = 1;

        else if (key == LEFT && snake.direction != 1) snake.direction = 2;

        else if (key == DOWN && snake.direction !=

c语言怎么变的出扫雷

       我觉得数组更好

       先建立int

       map[][]的数组,并全部初始化为

       然后随机埋雷.被埋雷的格子=,雷的周边元素++,

       这样,一张地图就做好了.

       然后每点一个格子,就-.

       若值在大于则不用-

       若点中,即:空白点

       则将全图扫描一次,凡是和接触的格子全部点开,并用一个变量count记录该次扫描点开的新格子数,若count>0,则再扫描一次,若count=0,则不再扫描.

       当然这是比较笨的办法,不过反正格子数也不多,笨点也没关系

       用搜索的办法的话编程会麻烦点,纠正1楼

       无谓之光

       的说法,应该是搜索8个方向才对.

       我的原则是:能用数组解决的坚决不用链表,数组就是天然的链表

扫雷 c语言代码 告诉我~~

       北京理工大学电子信息谢锦峰的答案,只要不是戏源太阳城棋牌源码很奇怪的输入就应该可以过。

       然而北理网络教室的代码网页源码中下载地址一个隐藏用例过不了。艹

       #include<stdio.h>

        struct lei

        { int n,扫雷sup卡密社区源码m;

        char ch[][];

        };

       static struct lei work[];

       void output(int ii);

       int jishu(int j,int k,int ii);

       void main()

       { int pd1=1,pd2=1; int i=1,j,k;

       int flag=1;

       while(flag)

        { scanf("%d%d",&pd1,&pd2);getchar();

        //printf("%d,%d\n",pd1,pd2);

        if(pd1==0||pd2==0) flag=0;

        else

        { work[i].n=pd1;

        work[i].m=pd2;

        for(j=1;j<=work[i].n;j++)

        { for(k=1;k<=work[i].m;k++)

        scanf("%c",&work[i].ch[j][k]);

        getchar();

        }

        i++;

        }

        }

        /*for(j=1;j<=work[i].n;j++)

        { for(k=1;k<=work[i].m;k++)

        printf("%c,",&work[i].ch[j][k]);

        printf("\n");

        }*/

        int ii;

        for(ii=1;ii<=i-1;ii++)

        { if(ii==1)printf("Field #%d:\n",ii);

        else printf("\nField #%d:\n",ii);

        output(ii);

        //if(ii==1&&i!=1)printf("\n");

        }

       }

       void output(int ii)

       { int j,k;

        for(j=1;j<=work[ii].n;j++)

        { for(k=1;k<=work[ii].m;k++)

        { if(work[ii].ch[j][k]=='*')

        printf("*");

        else

        { printf("%d",jishu(j,k,ii));

        }

        }

        printf("\n");

        }

       }

       int jishu(int j,int k,int ii)

       { int ji,ki,count=0;

        if(j==1&&k==1)

        { if(work[ii].ch[1][2]=='*')count++;

        if(work[ii].ch[2][1]=='*')count++;

        if(work[ii].ch[2][2]=='*')count++;

        return count;

        }

        if(j==1&&k==work[ii].m)

        { if(work[ii].ch[1][k-1]=='*')count++;

        if(work[ii].ch[2][k-1]=='*')count++;

        if(work[ii].ch[2][k]=='*')count++;

        return count;

        }

        if(j==work[ii].n&&k==1)

        { if(work[ii].ch[j-1][1]=='*')count++;

        if(work[ii].ch[j-1][2]=='*')count++;

        if(work[ii].ch[j][2]=='*')count++;

        return count;

        }

        if(j==work[ii].n&&k==work[ii].m)

        { if(work[ii].ch[j-1][k]=='*')count++;

        if(work[ii].ch[j][k-1]=='*')count++;

        if(work[ii].ch[j][k]=='*')count++;

        return count;

        }

        //四个角落处理完毕

        if(j==1&&k>1&&k<work[ii].m)

        { for(ji=1;ji<=2;ji++)

        for(ki=k-1;ki<=k+1;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        if(j==work[ii].n&&k>1&&k<work[ii].m)

        { for(ji=j-1;ji<=j;ji++)

        for(ki=k-1;ki<=k+1;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        if(j>1&&j<work[ii].n&&k==1)

        { for(ji=j-1;ji<=j+1;ji++)

        for(ki=1;ki<=2;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        if(j>1&&j<work[ii].n&&k==work[ii].m)

        { for(ji=j-1;ji<=j+1;ji++)

        for(ki=k-1;ki<=k;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

        //四条边处理完毕

        if(j>1&&j<work[ii].n&&k>1&&k<work[ii].m)

        { for(ji=j-1;ji<=j+1;ji++)

        for(ki=k-1;ki<=k+1;ki++)

        { if(k==ki&&j==ji)continue;

        if(work[ii].ch[ji][ki]=='*')

        count++;

        }

        return count;

        }

       }