欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言實現(xiàn)掃雷游戲及其優(yōu)化

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

本文實例為大家分享了C語言實現(xiàn)掃雷游戲及其優(yōu)化的具體代碼,供大家參考,具體內(nèi)容如下

關(guān)于掃雷優(yōu)化

1.核心思想:使用兩個二維數(shù)組進(jìn)行設(shè)計,一個用于顯示,一個用于后臺雷的布置。
2.使用宏常量,后期可以任意修改游戲難度。
3.關(guān)于掃雷拓展模塊,目前使用的方法比較low,若周圍均沒有,則全部顯示。
4.剩余位置數(shù)使用全局變量count,必須考慮拓展之后count變化。

有待改進(jìn)之處

1.需設(shè)計標(biāo)記雷的步驟,增加用戶體驗。
2.拓展方式有待改進(jìn)。
3.界面布局仍需要進(jìn)行優(yōu)化。

掃雷游戲代碼

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<string.h>
#include<time.h>
#define ROW 12
#define COL 12
#define MINE_NUM 15
#define TOTAL 100
#pragma warning(disable:4996)
int count = TOTAL;
void inter(){
 printf("=======================\n");
 printf("=======游戲菜單========\n");
 printf("======1.開始游戲=======\n");
 printf("========2.退出=========\n");
 printf("=======================\n");
 printf("請輸入您的選擇: \n");
}
int GetRandIndex(int start, int end){
 return rand() % (end - start + 1) + start;
}
void layout(char mine[][COL], int row, int col){
 srand((unsigned long)time(NULL));
 int count = 0;
 while (count<MINE_NUM){
 int x = GetRandIndex(1, 10);
 int y = GetRandIndex(1, 10);
 if (mine[x][y] == '0'){
  mine[x][y] = '1';
  count++;
 }
 }
}
 
void Board(char board[][COL], int row, int col){
 printf(" ");
 int i = 1;
 for (; i <= 10; i++)
 {
 printf(" %d ", i);
 }
 printf("\n----");
 for (i = 1; i <= 29; i++)
 {
 printf("-");
 }
 printf("\n");
 for (i = 1; i <= 10; i++)
 {
 printf("%2d|",i);
 int j = 1;
 for (; j <= 10; j++){
  printf(" %c|", board[i][j]);
 }
 printf("\n");
  int k = 1;
  for (k = 1; k <= 11; k++)
  {
  printf("---");
  }
  printf("\n");
 }
 }
 
char GetMines(char mine[][COL],int row,int col){
 return mine[row - 1][col - 1] + mine[row - 1][col] + mine[row - 1][col + 1]\
 + mine[row][col - 1] + mine[row][col + 1]\
 + mine[row + 1][col - 1] + mine[row + 1][col] + mine[row +1][col + 1]-7*'0';
}
void expand(char mine[ROW][COL], char board[ROW][COL], int x, int y){
 if ((x >= 1) && (y >= 1) && (x <= ROW) && (y <= COL))
 {
 if (GetMines(mine, x, y) == '0')
 {
  if (x > 1 && x < 10 && y>1 && y < 10)
  {
  count = count - 8;
  }
  else if((x==1&&y==1)||(x==10&&y==10) || (x == 1 && y == 10) || (x == 10 && y == 1)) {
  count -= 3;
  }
  else {
  count -= 5;
  }
  board[x - 1][y - 1] = GetMines(mine, x-1, y-1);
  board[x - 1][y] = GetMines(mine, x - 1, y);
  board[x - 1][y + 1] = GetMines(mine, x - 1, y + 1);
  board[x][y - 1] = GetMines(mine, x , y - 1);
  board[x][y + 1] = GetMines(mine, x , y + 1);
  board[x + 1][y - 1] = GetMines(mine, x + 1, y - 1);
  board[x + 1][y] = GetMines(mine, x + 1, y);
  board[x + 1][y + 1] = GetMines(mine, x + 1, y + 1);
 }
 }
}
void Game(){
 char mine[ROW][COL];    
 char board[ROW][COL];     
 memset(mine,'0',sizeof(mine));
 memset(board, '*', sizeof(board));
 layout(mine, ROW, COL);
 Board(mine, ROW, COL);
 int x = 0;
 int y = 0;
 while (1){
 int i = 0;
 Board(board, ROW, COL);
 printf("請選擇您要排除的位置: ");
 scanf("%d %d", &x, &y);
 if (x >= 1 && x <= ROW - 2 && y >= 1 && y <= COL - 2){
  if (mine[x][y] == '0'){
  char num = GetMines(mine,x,y);
  board[x][y] = num;
  expand(mine, board, x, y);
  Board(board, ROW, COL);
  count--;
  if (count == MINE_NUM)
  {
   Board(board, ROW, COL);
   printf("你贏了!\n");
   break;
  }
  }
  else{
  printf("您輸了!\n");
  Board(mine, ROW, COL);
  break;
  }
  printf("還有%d個位置 \n", count);
 }
 else{
  printf("你輸入的坐標(biāo)有誤,請重新輸入!\n");
 }
 }
}
int main(){
 int quit = 0;
 int select = 0;
 while (!quit){
 inter();
 scanf("%d", &select);
 switch (select)
 {
 case 1:
  Game();
  Sleep(5000);
  system("cls");
  break;
 case 2:
  printf("再見!\n");
  quit = 1;
  break;
 default:
  printf("您的輸入不正確,請重新輸入!\n");
  break;
 }
 }
 system("pause");
 return 0;
}

相關(guān)運(yùn)行樣例

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:基于Opencv實現(xiàn)顏色識別

欄    目:C語言

下一篇:opencv攝像頭捕獲識別顏色

本文標(biāo)題:C語言實現(xiàn)掃雷游戲及其優(yōu)化

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/244.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有