扫雷地图设置
目錄
?題目分析
代碼①
代碼②?
寫碼不易,大家多多支持!
共同進步,兼顧遠方!!!
?題目分析
1.第一個難點在于如何隨機生成10個雷,我們想到了rand();然后以時間為隨機種子,如此該問題就得到了解決
2.第二個就是要解決以雷為中心的九宮格的問題,第一種方法就是直接遍歷這個九宮格,然后給二維坐標加上條件[0,9];第二種就是生成12*12的二維地圖,不用最外面的一圈,此方法更簡單;至于最暴力的方法這里就不和大家討論了
代碼①
#include<stdio.h> #include<time.h> int main() {int map[10][10] = { 0 };srand(time(NULL)); //生成隨機種子//隨機生成10個雷for (int i = 1; i < 11;) {int r = rand() % 10;int c = rand() % 10;//排除重復if (map[r][c] == 0) {map[r][c] = -1;//確保生成10個雷i++; //以雷為中心的九宮格for (int j = r - 1; j <= r + 1; j++){for (int k = c - 1; k <= c + 1; k++){//格子沒有越界而且不是雷if (j >= 0 && j < 10 && k >= 0 && k < 10&&map[j][k]!= -1){map[j][k] += 1;}}}}}//輸出地圖for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++) {printf("%3d", map[i][j]);}printf("\n");}return 0; }代碼②?
#include<stdio.h> #include<time.h> int main() {int map[12][12] = { 0 };srand(time(NULL)); //生成隨機種子//隨機生成10個雷for (int i = 1; i < 11;){int r = rand() % 10 + 1;int c = rand() % 10 + 1;//排除重復if (map[r][c] == 0){map[r][c] = -1;//確保生成10個雷i++;//以雷為中心的九宮格for (int j = r - 1; j <= r + 1; j++){for (int k = c - 1; k <= c + 1; k++){//格子沒有越界而且不是雷if (map[j][k] != -1){map[j][k] += 1;}}}}}//輸出地圖for (int i = 1; i < 11; i++){for (int j = 1; j < 11; j++){printf("%3d", map[i][j]);}printf("\n");}return 0; }寫碼不易,大家多多支持!
總結
- 上一篇: Joomla模板开发-模版是如何执行的
- 下一篇: 可扩展标记语言类毕业论文文献有哪些?