最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言數組應用實現掃雷游戲

 更新時間:2022年06月07日 16:56:38   作者:xxzaa  
這篇文章主要為大家詳細介紹了C語言數組應用實現掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言數組應用實現掃雷游戲的具體代碼,供大家參考,具體內容如下

掃雷游戲(10×10的面板):

1.定義兩個12×12的字符型數組;
2.show_board[][]:初始化全為*
mine_board[][]:隨機賦值字符’0’或’1’
3.統(tǒng)計雷的個數:周圍8個位置的值累加-8×’0’

代碼:

game.h

#ifndef _GAME_H_
#define _GAME_H_

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#define ROW 12
#define COL 12
#define NUMS 20 ? ? //雷的個數
#pragma warning(disable:4996)?

void Menu();
void Game();

#endif

game.c

#include "game.h"
void Menu()
{
?? ?printf("########################\n");
?? ?printf("#####1.Play ?2.Exit#####\n");
?? ?printf("########################\n");
?? ?printf("請輸入:");
}
void SetMines(char board[][COL], int row,int col){
?? ?int num = NUMS;
?? ?while (num){
?? ??? ?int x = rand() % 10 + 1;
?? ??? ?int y = rand() % 10 + 1;
?? ??? ?if (board[x][y] == '0'){
?? ??? ??? ?board[x][y] = '1';
?? ??? ??? ?num--;
?? ??? ?}
?? ?}

}
int GetNums(char board[][COL], int row,int col, int x, int y)
{
?? ?return board[x-1][y-1] + board[x-1][y] + \
?? ??? ? ? board[x-1][y+1] + board[x][y+1] + \
?? ??? ? ? board[x+1][y+1] + board[x+1][y] + \
?? ??? ? ? board[x+1][y-1] + board[x][y-1] - 8 * '0';
}
void ShowBoard(char board[][COL], int row, int col){
?? ?printf(" ?");
?? ?for (int i = 1; i < col - 1; i++){
?? ??? ?printf(" %2d ", i);
?? ?}
?? ?printf("\n");
?? ?printf("—————————————————————\n");
?? ?for (int i = 1; i < row - 1; i++){
?? ??? ?printf("%2d|", i);
?? ??? ?for (int j = 1; j < col - 1; j++){
?? ??? ??? ?printf(" %c |", board[i][j]);
?? ??? ?}
?? ??? ?printf("\n");
?? ??? ?printf("—————————————————————\n");
?? ?}
}
void Game()
{
?? ?system("cls");
?? ?srand((unsigned long)time(NULL));
?? ?char show_board[ROW][COL];
?? ?char mine_board[ROW][COL];
?? ?memset(show_board,'*', sizeof(show_board));?
?? ?memset(mine_board,'0', sizeof(mine_board)); //初始化二維數組

?? ?SetMines(mine_board,ROW,COL); //布雷
?? ?int count = (ROW - 2)*(COL - 2) - NUMS;
?? ?int x = 0;
?? ?int y = 0;
?? ?do{
?? ??? ?ShowBoard(show_board,ROW,COL);
?? ??? ?printf("請輸入坐標:");
?? ??? ?scanf("%d %d", &x, &y);
?? ??? ?if (x<1 || x>ROW - 2 || y<1 || y>COL - 2){
?? ??? ??? ?printf("輸入位置越界,請重新輸入!\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?if (show_board[x][y] != '*'){
?? ??? ??? ?printf("該位置已被排除,請重新輸入!\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?if (mine_board[x][y] == '1'){

?? ??? ??? ?break;
?? ??? ?}
?? ??? ?int num = GetNums(mine_board,ROW,COL,x, y);
?? ??? ?show_board[x][y] = num + '0';
?? ??? ?count--;
?? ??? ?system("cls");
?? ?} while (count > 0);
?? ?if (count > 0){
?? ??? ?printf("你被炸死了!\n");
?? ??? ?ShowBoard(mine_board, ROW, COL);
?? ?}
?? ?else{
?? ??? ?printf("恭喜,你通過游戲!\n");
?? ?}
}

main.c

#include "game.h"

int main()
{
?? ?int quit = 0;
?? ?int select = 0;
?? ?while (!quit){
?? ??? ?Menu();
?? ??? ?scanf("%d", &select);

?? ??? ?switch (select){
?? ??? ?case 1:
?? ??? ??? ?Game();
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?quit = 1;
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("輸入有誤,請重新輸入!\n ");
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?printf("ByeBye!\n");
?? ?system("pause");
?? ?return 0;
}

運行結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C++超詳細講解運算符重載

    C++超詳細講解運算符重載

    本文包括了對C++類的6個默認成員函數中的賦值運算符重載和取地址和const對象取地址操作符的重載。運算符是程序中最最常見的操作,例如對于內置類型的賦值我們直接使用=賦值即可,因為這些編譯器已經幫我們做好了,但是對象的賦值呢?能直接賦值嗎
    2022-06-06
  • C語言驅動開發(fā)之內核使用IO/DPC定時器詳解

    C語言驅動開發(fā)之內核使用IO/DPC定時器詳解

    本章將繼續(xù)探索驅動開發(fā)中的基礎部分,定時器在內核中同樣很常用,在內核中定時器可以使用兩種,即IO定時器,以及DPC定時器,感興趣的可以了解一下
    2023-04-04
  • 在C/C++與Python之間實現通信的常見方法

    在C/C++與Python之間實現通信的常見方法

    在C/C++與Python之間實現通信的方式有很多,本文給大家介紹了一些常見的方法,文中通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • 教你用Matlab制作立體動態(tài)相冊

    教你用Matlab制作立體動態(tài)相冊

    沒想到吧,MATLAB竟也能制作3D相冊!本文將為大家詳細介紹Matlab制作立體動態(tài)相冊的方法步驟,感興趣的小伙伴可以跟隨小編一起動手試一試
    2022-03-03
  • C語言 指針的初始化賦值案例詳解

    C語言 指針的初始化賦值案例詳解

    這篇文章主要介紹了C語言 指針的初始化賦值案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C語言編寫多功能日歷

    C語言編寫多功能日歷

    之前看到本站給大家分享了一則C語言實現的簡單日歷,就手癢了,也想自己寫一個,既然有簡單了,那咱寫個稍微復雜點的,多功能的吧。呵呵,玩笑玩笑
    2015-03-03
  • C語言數據結構之迷宮問題

    C語言數據結構之迷宮問題

    這篇文章主要為大家詳細介紹了C語言數據結構之迷宮問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 詳解C語言fscanf函數讀取文件教程及源碼

    詳解C語言fscanf函數讀取文件教程及源碼

    這篇文章主要為大家介紹了詳解C語言算法fscanf讀取文件示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • C語言中數組的一些基本知識小結

    C語言中數組的一些基本知識小結

    這篇文章主要介紹了C語言中數組的一些基本知識小結,其中重點是對于數組的內存分配相關方面的知識整理,需要的朋友可以參考下
    2016-04-04
  • C語言實現奇數階魔方陣的方法

    C語言實現奇數階魔方陣的方法

    這篇文章主要介紹了C語言實現奇數階魔方陣的方法,涉及數組及相關數學函數的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02

最新評論

仁化县| 类乌齐县| 渭源县| 九龙城区| 芷江| 清镇市| 小金县| 苏尼特右旗| 徐闻县| 吉木萨尔县| 泾阳县| 昆山市| 富锦市| 东台市| 龙州县| 织金县| 霸州市| 滦平县| 南投县| 威宁| 昔阳县| 阿拉善右旗| 德惠市| 平泉县| 蒙自县| 安多县| 富顺县| 夹江县| 冷水江市| 夏津县| 上高县| 宣化县| 墨脱县| 福州市| 丰城市| 通渭县| 嵊泗县| 宣化县| 荥阳市| 秀山| 都昌县|