亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲

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

本文實(shí)例為大家分享了C語(yǔ)言數(shù)組應(yīng)用實(shí)現(xiàn)掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下

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

1.定義兩個(gè)12×12的字符型數(shù)組;
2.show_board[][]:初始化全為*
mine_board[][]:隨機(jī)賦值字符’0’或’1’
3.統(tǒng)計(jì)雷的個(gè)數(shù):周圍8個(gè)位置的值累加-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 ? ? //雷的個(gè)數(shù)
#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("請(qǐng)輸入:");
}
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)); //初始化二維數(shù)組

?? ?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("請(qǐng)輸入坐標(biāo):");
?? ??? ?scanf("%d %d", &x, &y);
?? ??? ?if (x<1 || x>ROW - 2 || y<1 || y>COL - 2){
?? ??? ??? ?printf("輸入位置越界,請(qǐng)重新輸入!\n");
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?if (show_board[x][y] != '*'){
?? ??? ??? ?printf("該位置已被排除,請(qǐng)重新輸入!\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("恭喜,你通過(guò)游戲!\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("輸入有誤,請(qǐng)重新輸入!\n ");
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?printf("ByeBye!\n");
?? ?system("pause");
?? ?return 0;
}

運(yùn)行結(jié)果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c/c++那些你一定會(huì)出錯(cuò)的數(shù)組筆試題匯總

    c/c++那些你一定會(huì)出錯(cuò)的數(shù)組筆試題匯總

    這篇文章主要給大家匯總介紹了關(guān)于c/c++那些你一定會(huì)出錯(cuò)的數(shù)組筆試題,除了基本數(shù)據(jù)類型之外,其余的都作為類對(duì)象,包括數(shù)組,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二)

    C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++11新特性之列表初始化的具體使用

    C++11新特性之列表初始化的具體使用

    在我們實(shí)際編程中,我們經(jīng)常會(huì)碰到變量初始化的問(wèn)題,本文主要介紹了C++11新特性之列表初始化的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • TypeScript的函數(shù)定義與使用案例教程

    TypeScript的函數(shù)定義與使用案例教程

    這篇文章主要介紹了TypeScript的函數(shù)定義與使用案例教程,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 關(guān)于C++類的成員初始化列表的相關(guān)問(wèn)題

    關(guān)于C++類的成員初始化列表的相關(guān)問(wèn)題

    下面小編就為大家?guī)?lái)一篇關(guān)于C++類的成員初始化列表的相關(guān)問(wèn)題。小編覺(jué)得挺
    2016-05-05
  • 詳解C語(yǔ)言學(xué)習(xí)記錄之指針

    詳解C語(yǔ)言學(xué)習(xí)記錄之指針

    關(guān)于指針,其是C語(yǔ)言的重點(diǎn),C語(yǔ)言學(xué)的好壞,其實(shí)就是指針學(xué)的好壞。其實(shí)指針并不復(fù)雜,學(xué)習(xí)指針,要正確的理解指針,本片文章能給就來(lái)學(xué)習(xí)一下
    2021-11-11
  • 在VC中隱藏控制臺(tái)程序窗口的實(shí)現(xiàn)代碼

    在VC中隱藏控制臺(tái)程序窗口的實(shí)現(xiàn)代碼

    大家都知道,當(dāng)編寫一個(gè)win32 console application時(shí),當(dāng)運(yùn)行此類程序的時(shí)候默認(rèn)情況下會(huì)有一個(gè)類似dos窗口的console窗口,但是有的時(shí)候我們只想在程序中運(yùn)行一段功能代碼,不希望顯示這個(gè)console窗口,讓代碼執(zhí)行完畢之后程序自動(dòng)退出
    2013-04-04
  • Qt實(shí)現(xiàn)解壓帶有密碼的加密文件

    Qt實(shí)現(xiàn)解壓帶有密碼的加密文件

    Quazip是Qt平臺(tái)下面的一個(gè)壓縮解壓縮庫(kù)。本文將利用Quazip實(shí)現(xiàn)解壓帶有密碼的加密文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-02-02
  • C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程

    C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程

    利用C/C++開(kāi)發(fā)大型應(yīng)用程序中,內(nèi)存的管理與分配是一個(gè)需要認(rèn)真考慮的部分,下面這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過(guò)程,需要的朋友可以參考下
    2021-09-09
  • Opencv2.4.9函數(shù)HoughLinesP分析

    Opencv2.4.9函數(shù)HoughLinesP分析

    這篇文章主要為大家詳細(xì)介紹了Opencv2.4.9函數(shù)HoughLinesP,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論