IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 使用C语言编写一个简单的三子棋 -> 正文阅读

[C++知识库]使用C语言编写一个简单的三子棋

基本的思路

我们要编写一个简易的c语言的时候,要搞清楚它的运行机制,所用的方法,在脑海里要有一个简明的思路,运行起来是什么样子的。我们要使这个代码成功运行起来需要的是电脑下棋的步骤。因为这是一个简易的三子棋,所以我们采用九宫格,电脑随机下棋子的方法实现。具体的构思如下图:

需要做到的一些事情:

1.所有的游戏数据都应该保存起来。要让电脑知道你在哪里下了棋子。

2.下棋的方式采用坐标

3.建立一个二维数组char board[3][3];-----空格

4.建立一个显示界面ShowBoard();

5.用户输入坐标PLayerMove(),对输入的坐标进行合法性的判断,如char board[4][4]就不合法,同时需要判断该位置是否有棋子。

6.每走一步,判断int result= IsEnd()是否三子连珠(四种情况,赢,输,平局,继续)

if(result !=继续){

break;}

ComputerMove();

result =IsEnd();

具体的编写

//头文件 game.h
#ifndef _GAME_H_
#define _GAME_H_

#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>

#define ROW 3
#define COl 3


#define WHITE 'x' //用户
#define BLACK '0' //电脑
#define INIT ' '

#define NEXT 'D'
#define DRAW 'N'


#pragma warning(disable:4996);

extern void  Game()

 
#endif



//main.c
#include "game.h"
void Menu()
{
printf("+------------------------------+\n");
printf("| 1.Play                0.Exit |\n");
printf("+------------------------------+\n");
}

int main()
{
 int select =0;
 int quit =0;
while(!quit)
  {
    Menu();
    printf("please Select#");
    scanf("%d",&select);
    switch(select)
    {
        case 1:
           Game();
               break;
        case 0:
            quit = 1;
               break;  
        default:
            printf("Enter Error\n");
               break;
    }
  }
  printf("byebye\n");
  system("pause");
  return 0;
 }
//game.c
#include "game.h"
static void InitBoard(char board[][COL],int row,int col)
{
  int x=0;
  int y=0;
  for (int =0;i<row;i++)
    {
        for (int j =0;j<col;j++)
          {
            board[i][j]=INIT ;
          }
    }
}
static void ShowBoard(char board[][COL],int row,int col)
{
sys("cls")
    printf("    ")
  for(int i=0;i<col;i++)
     {
       printf("%d",i);
     }
      printf("\n--------------\n");
  for(int i=0;i<row;i++)
     {
       printf("%2d", i+1);
     for(int j=0;j<col;j++)
        {
          printf("| %c ,board[i][j]");
        }  
         printf("\n--------------\n");
     } 

}
static void PlayerMove(char board[][COL],int row,int col)
{
   while(1)
     {
        printf("please Enter Postion<x,y>#" );
        sacnf("%d %d",&x,&y);
        if(x<1||y<1||x>3||y>3)
           {
                printf("Enter Postion Error\n");
                continue;
           }
             if(board[x-1][y-1]!=INIT)
                  {
                    printf("Enter Postion Is Not Empty\n");
                    continue;
                  }
                   board[x-1][y-1]= WHITE;
                   break;
     }
}
static void ComputerMove(char board[][COL],int row,int col)
{
while(1)
  {
    int x=rand()%row;
    int y=rand()%col;
    if(board[x][y]==NULL)
      {
         board[x][y]=BLACK;
         break;
      }
  }
}
static char IsEnd(char board[][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]!=INIT)
        {
         return  board[i][0];
        }
  }
for(int i=0;j<COL;j++)
            {
                 if(board[0][j]==board[1][j] &&\
                    board[1][j]==board[2][j] &&\
                    board[0][j]!=INIT)
                    {
                       return board[0][j];
                    }
            }

                  if(board[0][0]==board[1][1] &&\
                     board[1][1]==board[2][2] &&\  
                     board[1][1]!=INIT)
                     {
                        return board[1][1];
                     } 

                   if(board[0][2]==board[1][1] &&\
                      board[1][1]==board[2][0] &&\  
                      board[1][1]!=INIT)
                      {
                          return board[1][1];
                       } 
 for (int =0;i<row;i++)
    {
        for (int j =0;j<col;j++)
          {
            if(board[i][j]!=INIT )
             {
               return NEXT;
             }
          }
    }
      return  DRAW;
}


void Game()
{
  char board[ROW][COL]
  InitBoard(board,ROW,COL);

  srand((unsigned long)time(NULL));
  char rersult =0;  
  while (1)
   {
     ShowBoard(board,ROW,COL);
     PlayerMove(board,ROW,COL);
     result=IsEnd(board,ROW,COL);
     if(resule != NEXT)
       {
           break;
       }
           ShowBoard(board,ROW,COL);
           ComputerMove(board,ROW,COL);
           result=IsEnd(board,ROW,COL);
      if(resule != NEXT)
          {
             break;
          }
   } 
      ShowBoard(board,ROW,COL);
      switch(result) 
               {
                 case WHITE:
                     printf("You win\n");
                        break;
                 case BLACK:
                     printf("You lose\n");
                         break;
                 default:
                     printf("BUG\n");
                         break;
                }

}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 22:54:07  更:2022-01-29 22:54:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:25:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码