|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Juniorboy 于 2020-5-18 16:07 编辑
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #include <graphics.h>
- #include <windows.h>
- int a[12][12];//生成游戏区和辅助区(12*12)
- int main(void)
- {
- srand((unsigned int)time(NULL));//随机数种子;
- //给游戏区和辅助区赋值(游戏区为10*10);
- for (int i = 0; i < 11; i++)
- {
- for (int j = 0; j < 10; j++)
- {
- a[i][j] = 0;
- }
- }
- for (int i = 1; i <= 10; i++)
- {
- for (int j = 0; j <= 10; j++)
- {
- printf("%2d ", a[i][j]);
- }
- printf("\n");
- }
-
- //随机埋雷(雷为-1);
- for (int i = 0; i <10;)
- {
- //+1为了让随机数取值为1,if判断是为了防止重复赋值。
-
- if (a[rand() % 10 + 1][rand() % 10 + 1] == 0)
- {
- a[rand() % 10 + 1][rand() % 10 + 1] = -1;
- i++;
- }
- }
- //给不是雷的坐标赋值(0-8);
- for (int i = 1; i <= 10; i++)
- {
- for (int j = 1; j <= 10; j++)
- if (a[i][j] != 0)//找到整个数组中不是雷的元素;
- {
- for (i -= 1; i <= i + 1; i++)
- {
- for (j -= 1; j <= j + 1; j++)
- {
- int b = 0;//用来累计周围雷的个数;
- if (a[i][j] == -1)
- {
- b++;
- a[i][j] = b;
- }
- }
- }
- }
- }
-
- return 0;
复制代码
想写一个扫雷游戏,然后执行到53行哪里就报错了,然后调试显示j的值是6000多,求解,谢谢啦~
错误信息:0x00415259 处(位于 2.exe 中)引发的异常: 0xC0000005: 读取位置 0x00420000 时发生访问冲突。
你的程序最后的四层for循环,里面的两层循环结束条件有问题!死循环了!
i<=i+1 和 j<=j+1 永远成立,所以最里面的循环就进入了死循环
|
|