C 언어 지뢰 제거 게임 상세 코드 실현

본 논문 의 사례 는 C 언어 가 지뢰 제거 게임 을 실현 하 는 상세 한 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
사상 실현
본 논문 의 지뢰 제거 게임 은 주로 다음 과 같은 기능 을 실현 한다.
1.천둥 과 그 정보 보이 기
2.좌 표를 입력 하면 주변 9 칸 내 지뢰 수 를 관측 할 수 있다.
3.지뢰 를 클릭 하면 게임 종료
사용 하 는 IDE 는 VS 2013 입 니 다.

소스 코드
헤더 파일 saolei.h 만 들 기
모든 사용자 정의 함수 에 대한 설명 저장

#define COL 9
char** creatMat(int row, int col);
void intMat(char** Mat, int row, int col, char ch);
void setMine(char** Mat, int row, int col);
void showMat(char** Mat, int row, int col);
int getMineNum(char** Mat, int row, int col, int x, int y);
void game(char** mineMat, char** mineInfo, int row, int col);
원본 파일 만 들 기 SaoLei.c
구체 적 인 게임 구현 을 저장 합 니 다.

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include "saolei.h"
#include <Windows.h>

char** creatMat(int row,int col)
{
 //        
 char** Mat = (char**)malloc(sizeof(char *)*(row+2));//   2 2            
 //          
 for (int i = 0; i < row+2; ++i)
 {
 Mat[i] = (char*)malloc(sizeof(char)*(col+2));
 }
 return Mat;
}

void intMat(char** Mat, int row, int col, char ch)
{
 for (int i = 0; i < row+2; ++i)
 {
 for (int j = 0; j < col+2; ++j)
 {
 Mat[i][j] = ch;
 }
 }
}

void setMine(char** Mat, int row, int col)//    
{
 int count = MINE_NUM;//      
 while (count)
 {
 //x:1`row,y:1~col
 int x = rand() % row + 1;
 int y = rand() % col + 1;
 if (Mat[x][y] != '*')
 {
 Mat[x][y] = '*';
 --count;
 }
 }
}

void showMat(char** Mat, int row, int col)
{
 printf("------------------------------
"); // for (int i = 0; i <= col; ++i) { printf("%d ", i); } printf("
"); // for (int i = 1; i <= row; ++i) { printf("%d ", i); for (int j = 1; j <= col; ++j) { printf("%c ", Mat[i][j]); } printf("
"); } printf("------------------------------
"); } int getMineNum(char** Mat, int row, int col, int x, int y) {// static int posOffset[8][2] = { { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, -1 }, { 0, 1 }, { 1, -1 }, { 1, 0 }, { 1, 1 } }; int count = 0; for (int i = 0; i < 8; ++i) { int nx = x + posOffset[i][0]; int ny = y + posOffset[i][1]; if (Mat[nx][ny] == '*') { ++count; } } return 0; } void game(char** mineMat, char** mineInfo, int row, int col) { int step = 0; while (step < row * col - MINE_NUM) { int x, y; printf(" :
"); scanf("%d%d", &x, &y); if (mineMat[x][y] == '*') { printf("game over!
"); showMat(mineMat, row, col); break; } // x,y int num = getMineNum(mineMat, row, col, x, y); mineInfo[x][y] = num + '0'; showMat(mineInfo, row, col); ++step;// } if (step == row * col - MINE_NUM) { printf("win!
"); } } void test() { char** mineMat = creatMat(ROW, COL); char** mineInfo = creatMat(ROW, COL); intMat(mineMat, ROW, COL, '0'); intMat(mineInfo, ROW, COL, '*'); setMine(mineMat, ROW, COL); printf(" :"); showMat(mineMat, ROW, COL); printf(" :"); showMat(mineInfo, ROW, COL); game(mineMat, mineInfo, ROW, COL); } int main() { test(); system("pause"); return 0; }
게임 결과


END
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기