C 언어 지뢰 제거 프로젝트 실현
5303 단어 C 언어지뢰 를 제거 하 다
핵심 사상 은 천둥 의 분 포 는'답안'으로 간주 하고,낙자 의 바둑판 은'시험지'로 간주 하 는 것 이다.
답안 지 를 맞 추 는 동시에"답"을 맞 춰 야 합 니 다.이 위치 에 천둥 이 있 는 지 없 는 지,있 으 면 붐!주변 9 궁 격 에 있 는 레이 의 수 를 판단 하지 않 고 이 문 자 를'시험지'에 인쇄 합 니 다!
또한 배열 의 경 계 를 넘 는 것 을 방지 하기 위해 모든 칸 에 9 궁 격 이 있 는 것 을 확보 하기 위해 행 과 열 에 모두 2 를 더 해 야 한다.
마지막 으로 승 부 를 판단 하 는 기준:총 칸 수-뇌 수=낙자 횟수,승 리 를 판정 할 수 있 습 니 다!
다음은 테스트 모듈:
#include"game.h"
void meau() {
printf("****************************
");
printf("********* 1.play ***********
");
printf("********* 0.exit ***********
");
printf("****************************
");
}
void game() {
//
char mine[ROWS][COLS] = { 0 };//
char show[ROWS][COLS] = { 0 };//
// //
Initboard(mine,ROWS,COLS,'0');
//DisplayBoard(mine, ROW, COL);
Initboard(show, ROWS, COLS,'*');
DisplayBoard(show, ROW, COL);
//
setboom(mine , ROW , COL);
//DisplayBoard(mine, ROW, COL);
//
FindBoom(mine,show,ROW,COL);
}
void main() {
int input = 0;
srand((unsigned int)time(NULL));
do
{
meau();
printf(" :
");
scanf("%d",&input);
switch (input)
{
case 1:
//printf("
");
game();
break;
case 0:
printf("
");
break;
default:
printf(" , ");
break;
}
} while (input);
}
다음은 게임 헤더 파일 모듈 입 니 다.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9
#define COL 9
#define COUNT 80
#define ROWS ROW+2
#define COLS COL+2
//
void Initboard(char board[ROWS][COLS], int rows, int cols,char set);
//
void DisplayBoard(char board[ROWS][COLS], int rows, int cols);
//
void setboom(char board[ROWS][COLS], int row, int col);
//
void FindBoom(char mine[ROWS][COLS], char show[ROWS][COLS], int row ,int col);
다음은 게임 프로그램 모듈 입 니 다.
#include"game.h"
//
void Initboard(char board[ROWS][COLS], int rows, int cols, char set) {
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++) {
board[i][j] = set;
}
}
}
// 9*9
void DisplayBoard(char board[ROWS][COLS], 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 ", board[i][j]);
}
printf("
");
}
printf("--------------------
");
}
//
void setboom(char board[ROWS][COLS], int row, int col) {
printf("
");
int x = 0;
int y = 0;
//
int count = COUNT;
while (count)
{
int x = rand() % row + 1; // 1~9
int y = rand() % col + 1;
if (board[x][y] != '1')
{
board[x][y] = '1';
count--;
}
}
}
//
int GetCount(char mine[ROWS][COLS],int x,int y) {
int count = 0;
for (int i = x-1; i <= x+1; i++)
{
for (int j = y-1; j <= y+1; j++)
{
if (mine[i][j] == '1') {
count++;
}
}
}
return count;
}
//
void FindBoom(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) {
int x = 0;
int y = 0;
int count = 0;
int win = 0;
// 9*9-10 = 70 ;
//
while (win < row*col - COUNT) {
printf(" :->
");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col) {
if (mine[x][y] == '1') {
printf(" BOOM BOOM BOOM
");
DisplayBoard(mine, ROW, COL);
break;
}
else {
// mine
// show[x][y];
count = GetCount(mine,x,y);
show[x][y] = count + '0';//count , + 0 ! !
DisplayBoard(show,ROW,COL);
win++;
}
}
else {
printf(" , ");
}
}
if (win == row * col - COUNT) {
printf("
");
}
}
결론:지뢰 제거 게임 은 2 차원 배열 을 신속 하고 정교 하 게 활용 하려 면 몇 번 더 연습 해 야 한다.이런 배열 의 전 참,배열 조작,배열 사고,배열 과 배열 간 의 연동 사 고 를 일상적인 조작 에 융합 시 켜 야 한다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.