博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言小游戏——井字棋
阅读量:3960 次
发布时间:2019-05-24

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

一、游戏菜单逻辑。

#include "game.h"//主菜单void menu(){    printf("*******************************\n");    printf("**** 1.开始游戏  2.退出游戏****\n");    printf("*******************************\n");}//游戏算法void game(){    char ret = 0; //存储判断条件    char board[ROW][COL] = {0};    //棋盘初始化    InitBoard(board,ROW,COL);    //打印棋盘    DisplayBoard(board,ROW,COL);    //下棋    while(1)    {        //玩家下棋        PlayerMove(board,ROW,COL);        DisplayBoard(board,ROW,COL);        //判断玩家赢        ret = IsWin(board,ROW,COL);        if (ret != 'C')        {            break;        }                    //电脑下棋        ComputerMove(board,ROW,COL);        DisplayBoard(board,ROW,COL);        //判断电脑赢        ret = IsWin(board,ROW,COL);        if (ret != 'C')            {                break;            }        }        if (ret == '*')        {            printf("玩家赢\n");        }        else if (ret == '#')        {            printf("电脑赢\n");        }        else        {        printf("平局\n");        }        }void test(){    int input = 0;//srand函数调用(产生随机数)  time库调用    srand((unsigned int)time(NULL));    do    {        menu();        printf("请选择:");        scanf("%d",&input);        switch (input)        {        case 1:            game();            break;        case 2:            printf("退出游戏\n");            break;        default:            printf("选择错误,请选择“1”或“2”!\n");            break;        }    } while (input);}int main(){    test();    return 0;}

二、游戏本体代码。

#include "game.h"//初始化棋盘void InitBoard(char board[ROW][COL],int row,int col){    int i,j;    for (i=0;i
=1 && x<=row && y>=1 && y<=col) { if (board[x-1][y-1] == ' ') { board[x-1][y-1] = '*'; break; } else { printf("该位置已被占用,请重新输入!\n"); } } else { printf("输入坐标有误,请重新输入!\n"); } }}//电脑落子void ComputerMove(char board[ROW][COL],int row,int col){ int x,y; printf("电脑下棋:\n"); while(1) { x = rand() % row; y = rand() % col; if (board[x-1][y-1] == ' ') { board[x-1][y-1] = '#'; break; } } }//棋盘满返回‘1’//棋盘没满返回‘0’int IsFull(char board[ROW][COL],int row,int col){ int i,j; for (i=0;i

三、头文件

#define ROW 3  //行#define COL 3  //列#include 
#include
#include
void InitBoard(char board[ROW][COL],int row,int col);void DisplayBoard(char board[ROW][COL],int row,int col);void PlayerMove(char board[ROW][COL],int row,int col);void ComputerMove(char board[ROW][COL],int row,int col);char IsWin(char board[ROW][COL],int row,int col);// ROW*COL棋盘// | | // ---|---|---// | | // ---|---|---// | | // 判断结果四种状态//1.玩家赢 ‘*’//2.电脑赢 ‘#’//3.平局 ‘D’//4.继续 ‘C’

 

 运行结果:

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

你可能感兴趣的文章
机器学习算法汇总:人工神经网络、深度学习及其它
查看>>
解决Spring中AOP不能切入Struts的DispatchAction方法的问题
查看>>
出国以后才知道英语应该怎么学
查看>>
计算机专业权威期刊投稿经验总结
查看>>
如何在三个月内学会一门外语?
查看>>
看看你对Linux到底了解多少?
查看>>
网上看到的:ARM入门最好的文章(转)
查看>>
中国最美情诗100句
查看>>
javascript注册window的onload事件问题研究
查看>>
客户端技术分页控件javascript+css,可用于任何服务器端技术
查看>>
学习Swing 的网站[转]
查看>>
Google App engine 的第一个应用 midispot
查看>>
提问的智慧
查看>>
关于dom4j无法解析xmlns问题及生成非UTF-8字符集乱码问题的解决
查看>>
很好的一篇文章 如果让我重做一次研究生 王汎森
查看>>
保护U盘批处理文件
查看>>
hibernate 自动导入sql 文件import.sql 国际化编码的问题的解决方案
查看>>
第七颗头骨 & 忘魂花 凤凰
查看>>
李小龙哲学之言
查看>>
[心情] 如果有一天
查看>>