博客
关于我
c语言学习小结_05_扫雷小游戏和三子棋小游戏
阅读量:84 次
发布时间:2019-02-25

本文共 5243 字,大约阅读时间需要 17 分钟。

??????????????????

  • ????

    ????????????????????main.c????????????????saolei.c????????????????????????????

  • ??????main.c?

    • ????

      ?????Menu()??????????????????????

      void Menu() {
      printf("************************\n");
      printf("****1?Play 2 Exit*****\n");
      printf("please input your select:");
      }
    • ????

      ????????????????????????????????

      int main() {
      int quit = 0;
      int select = 0;
      while (!quit) {
      Menu();
      scanf("%d", &select);
      switch (select) {
      case 1: Game(); printf("????????\n"); break;
      case 2: quit = 1; break;
      default: printf("???????????"); break;
      }
      }
      printf("ByeBye!\n");
      system("pause");
      return 0;
      }
    1. ???????saolei.c?
      • ?????

        ???????????????show_board?mine_board????????????

        void Game() {
        char show_board[ROW][COL];
        char mine_board[ROW][COL];
        memset(show_board, '*', sizeof(show_board));
        memset(mine_board, '0', sizeof(mine_board));
        srand((unsigned long)time(NULL));
        SetMines(mine_board, ROW, COL);
        }
      • ????

        ??SetMines??????????????????????

        void SetMines(char mine_board[ROW][COL], int row, int col) {
        int count = NUMS;
        while (count) {
        int x = rand() % 5 + 1;
        int y = rand() % 5 + 1;
        if (mine_board[x][y] == '0') {
        mine_board[x][y] = '1';
        count--;
        }
        }
        }
      • ??????

        ???Game????????????????????????????????????

        int GetMines(char mine_board[ROW][COL], int row, int col, int x, int y) {
        return mine_board[x - 1][y - 1] + mine_board[x - 1][y] + mine_board[x - 1][y + 1] +
        mine_board[x][y - 1] + mine_board[x][y + 1] + mine_board[x + 1][y - 1] +
        mine_board[x + 1][y] + mine_board[x + 1][y + 1] - 8 * '0';
        }
      • ??????

        ???????????????????count???????????????

        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 > 10 || y < 1 || y > 10) {
        printf("??????????\n");
        continue;
        }
        if (show_board[x][y] != '*') {
        printf("??????????????????\n");
        continue;
        }
        if (mine_board[x][y] == '1') {
        break;
        }
        num = GetMines(mine_board, ROW, COL, x, y);
        show_board[x][y] = num + '0';
        count--;
        system("cls");
        } while (count > 0);
      • ????

        ???????????count?????????????????????

        if (count > 0) {
        printf("??????\n");
        } else {
        printf("???!\n");
        }
        printf("????????!\n");
        ShowBoard(mine_board, ROW, COL);
      1. ??????????japplet.c?
        • ?????

          ??japplet.c?????3x3???????????

          #define ROW 3
          #define COL 3
          #define PLAYER_CHESS 'X'
          #define COMPUTER_CHESS 'O'
          #define PLAYING 'P'
          #define DRAW 'D'
        • ??????

          ??????PlayerMove???????????

          static void PlayerMove(char board[ROW][COL], int row, int col) {
          int x = 0;
          int y = 0;
          int quit = 0;
          while (!quit) {
          printf("?????????????");
          scanf("%d %d", &x, &y);
          if (x < 1 || x > 3 || y < 1 || y > 3) {
          printf("?????????????");
          continue;
          }
          if (board[x - 1][y - 1] != ' ') {
          printf("???????????????????");
          continue;
          }
          board[x - 1][y - 1] = PLAYER_CHESS;
          quit = 1;
          }
          }
        • ??????

          ??Judge????????????????????????

          static char Judge(char board[ROW][COL], int row, int col) {
          for (int i = 0; i < row; i++) {
          if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ') {
          return board[i][0];
          }
          }
          for (int i = 0; i < col; i++) {
          if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') {
          return board[0][i];
          }
          }
          if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ') {
          return board[0][0];
          }
          if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') {
          return board[0][2];
          }
          for (int i = 0; i < row; i++) {
          for (int j = 0; j < col; j++) {
          if (board[i][j] == ' ') {
          return PLAYING;
          }
          }
          }
          return DRAW;
          }
        • ???????

          ?????ComputerMove??????????????????

          static void ComputerMove(char board[ROW][COL], int row, int col) {
          while (1) {
          int x = rand() % row;
          int y = rand() % col;
          if (board[x][y] == ' ') {
          board[x][y] = COMPUTER_CHESS;
          break;
          }
          }
          }
        • ??????

          ?Game????????result??????????????????

          void Game() {
          srand((unsigned long)time(NULL));
          char board[ROW][COL];
          memset(board, ' ', sizeof(board));
          char result = 'x';
          do {
          ShowBoard(board, ROW, COL);
          PlayerMove(board, ROW, COL);
          result = Judge(board, ROW, COL);
          if (result != PLAYING) {
          break;
          }
          ComputerMove(board, ROW, COL);
          result = Judge(board, ROW, COL);
          if (result != PLAYING) {
          break;
          }
          } while (1);
          if (PLAYER_CHESS == result) {
          printf("????????\n");
          } else if (COMPUTER_CHESS == result) {
          printf("??????!\n");
          } else {
          printf("???\n");
          }
          printf("????????????????????????\n");
          ShowBoard(board, ROW, COL);
          }
        1. ??????
          ???????????????????????????????????????????????????????????????????????

    转载地址:http://rfp.baihongyu.com/

    你可能感兴趣的文章
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    NISP国家信息安全水平考试,收藏这一篇就够了
    查看>>
    NIS服务器的配置过程
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>