Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言实现三子棋

C语言实现三子棋

作者头像
海盗船长
发布于 2020-08-27 09:17:18
发布于 2020-08-27 09:17:18
49100
代码可运行
举报
文章被收录于专栏:基础知识文章基础知识文章
运行总次数:0
代码可运行

头文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1. 头文件
#pragma once
#ifndef _SANZIQI_H_
#define _SANZIQI_H_
#define ROW 3
#define COL 3
void init_board(char arr[ROW][COL], int row, int col);//初始化
void show_board(char arr[ROW][COL], int row, int col);//打印棋盘
void computer_play(char arr[ROW][COL], int row, int col);//电脑走
void Player(char arr[ROW][COL], int row, int col);//玩家走
int Checkfull(char arr[ROW][COL], int row, int col);//判断棋盘是否有空格
char Win(char arr[ROW][COL], int row, int col);//判断输赢
#endif
2.游戏核心
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"三子棋.h"
void init_board(char board[ROW][COL], int row, int col)
{
	int x = 0,y = 0;
	for(x=0;x<row;x++)
		{for(y=0;y<col;y++)
		{
			board[x][y] = ' ';
		}
	}
}
void show_board(char board[ROW][COL], int row, int col)
{
    int i;
    for (i=0; i<row;i++)
    {
        printf("  %c | %c | %c  \n",board[i][0],board[i][1],board[i][2]);
        if (i != row - 1)
            printf(" ---|---|--- \n");
    } 
}
void computer_play(char board[ROW][COL],int row,int col)
{
	srand((unsigned int)time(NULL));
	while(1)
	{
		int x = rand() % 3;
		int y = rand() % 3;
		if(board[x][y]==' ')
		{
			board[x][y] = '#';break;
		}
	}
}
void Player(char board[ROW][COL], int row, int col)
{
    int x = 0;
    int y = 0;
    while (1)
    {
        scanf("%d,%d", &x, &y);
        x--;
        y--;
        if((0 <= x && x <= row - 1) && (0 <= y && y <= col - 1))
        {
            if (board[x][y] == ' ')
            {
                board[x][y] = '*';
                break;
            }
            else {
                printf("请不要把棋放到人家的棋上\n");
            }
        }
    else {
        printf("请在棋盘里面下棋\n");
    }
    }
}
int Checkfull(char board[ROW][COL], int row, int col)
{
	int x = 0,y = 0;
	for(x=0;x<row;x++)
		for(y=0;y<col;y++)
		{
			if(board[x][y]==' ')
				return 1;
		}
		return 0;
}
char Win(char board[ROW][COL],int row,int col)
{
	int i = 0;
	{if(Checkfull(board,ROW,COL) == 0)
		{
			return 'p';
	    }
	}
	for (i = 0; i < row; i++)
    {
        if ((board[i][0] == board[i][1]) && (board[i][1] == board[i][2]) && (board[i][2] != ' '))
        {
            return board[i][0];
        }
    }
    for (i = 0; i < col; i++)
    {
        if ((board[0][i] == board[1][i]) && (board[1][i] == board[2][i]) && (board[2][i] != ' '))
        {
            return board[0][i];
        }
    }
    if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && (board[2][2] != ' '))
    {
        return board[0][0];
    }
    if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && (board[2][0] != ' '))
    {
        return board[0][2];
    }
    return ' ';
}
 3.游戏
 #include<stdio.h>
#include<time.h>
#include"三子棋.h"

void nume()
{
	printf("************************\n");
	printf("*********1、play********\n");
	printf("*********0、exit********\n");
	printf("************************\n");
}
void game()
{
	char board[ROW][COL];
    init_board(board,ROW,COL);
	while(1)
	{
		printf("电脑走:\n");
		computer_play(board,ROW,COL);
	    show_board(board,ROW,COL);
	     if (Win(board, ROW, COL) != ' ')
        {
            break;
        }
	    printf("玩家走\n");
        Player(board, ROW, COL);
        show_board(board, ROW, COL);
        if (Win(board, ROW, COL) != ' ')
        {
            break;
        }	
	}
	if (Win(board,ROW,COL) == '*')
    {
        printf("玩家赢\n");
    }
	else if (Win(board,ROW,COL) == '#')
    {
        printf("电脑赢\n");
    }
    else if (Win(board,ROW,COL) == 'P')
    {
        printf("平局\n");
    }

}
int main()
{
	int ch = 0;
	do{
		nume();
		printf("请选择:");
		scanf("%d",&ch);
		switch(ch)
		{
		case 1:game();break;
		case 0:printf("退出游戏");break;
		default:printf("输入错误,请重新输入");break;
		}
	}while(ch);
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言实战项目】三子棋游戏
三子棋是一个古老而又有趣的游戏,在国际上得到了大家的广泛喜爱。初学编程的你也一定迫不及待想要用c语言来设计一个自己的游戏吧!路漫漫其修远兮,我们今天从三子棋讲起。
修修修也
2024/04/01
1750
【C语言实战项目】三子棋游戏
【C语言】C语言实现扫雷&&三子棋
游戏刚开始时,我们需要对棋盘进行初始化操作,对棋盘进行清空,以保证后续游戏的正常进行。我们定义一个InitBoard()函数来进行棋盘的初始化操作
用户10925563
2024/06/04
2080
【C语言】C语言实现扫雷&&三子棋
三子棋小游戏(可改棋盘大小)
大家好!学习了那么久的c语言,我们都希望自己能做出一些成果来,而实现一些小游戏无疑是最先想到的选择。
是Nero哦
2024/01/18
2180
三子棋小游戏(可改棋盘大小)
三子棋_井字棋(C语言实现)
率先完成三子就是胜利! 具体实现、功能函数定义、函数声明分别放在了三个文件中。 从main函数入口开始。 啥也也不说了,都在代码里了 ---- 运行截图: 一个运行结果: ---- 函数声明在game.h文件 #pragma once //函数声明 //游戏逻辑 /* 1. 玩家选择 2. 创建数组,打印棋盘 3. 用户下棋,电脑下棋 4. 判断输赢,输出结果 */ #include <stdio.h> #include <stdlib.h> #include <time.h> #d
怠惰的未禾
2023/04/27
4370
三子棋_井字棋(C语言实现)
C语言实现三子棋
参考了B站UP主比特鹏哥的教程视频,加入了自己的学习笔记和理解。 链接:https://www.bilibili.com/video/BV1oi4y1g7CF?t=464&p=17 游戏框架 在做游戏
小孙同学
2022/01/14
1K0
C语言实现三子棋
抽丝剥茧C语言(中阶)三子棋
玩家1和玩家2,其中一名玩家先下棋,然后是另一名玩家下棋,以此循环,直到游戏结束位置(一个位置不能重复落子)。 只要三个相同的棋子连成一条线就可以获得胜利,包括横着,竖着,斜着。 还有一种就是平局,棋盘放满了,但是没有任何一方胜利。
有礼貌的灰绅士
2023/03/28
5100
抽丝剥茧C语言(中阶)三子棋
三子棋【开源代码】
为实现三子棋的基本功能,我们把这个项目拆分成三个部分:test.c,game.c, game.h
see.
2024/06/04
1130
改变行列实现三子棋、四子棋...
菜单只是一个对玩家的提示,它对于三子棋的实现是没有作用的。但是它可以使玩家更好的游玩你所创造的游戏。
大海里的番茄
2024/01/19
1380
改变行列实现三子棋、四子棋...
C语言实现智能三子棋
上篇博客对三子棋进行了升级,但仅仅是扩展到了多子棋,电脑算法采用的还是伪随机数的方法,电脑还是个憨憨,那么今天就对三子棋的算法进行一次优化吧,多子棋算法优化改变相应模块的条件就可以实现。
小孙同学
2022/01/14
3540
【C语言】三子棋游戏实现代码
注:首先要知道我们用二维字符数组(char board[ROW][COL])来抽象实现三子棋;
大耳朵土土垚
2024/03/13
1940
【C语言】三子棋游戏实现代码
【C语言】三子棋游戏的简单实现
我们来看主函数部分,先做个do…while循环,把菜单放进循环,循环条件为input,只要input不为0,即不退出游戏,玩家都可以重新输入继续玩:
YoungMLet
2024/03/01
1510
【C语言】三子棋游戏的简单实现
C语言简易版三子棋游戏的实现(超详细版)
《三子棋》是一款古老的民间传统游戏,又被称为黑白棋、圈圈叉叉棋、井字棋、一条龙、九宫棋等。游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子连成一条线的一方则视为胜利者。
用户11036582
2024/03/21
1650
C语言简易版三子棋游戏的实现(超详细版)
C语言实现简易三子棋项目
一个游戏最基础的部分就说选择菜单,玩家可以选择玩或者退出这个游戏。当然设计的游戏不能只玩一次就得重新打开,所以我们利用循环的方式让玩家选择玩或者不玩。 如果选择玩 -->: 进入游戏->游戏结束->重新进行选择; 如果选择不玩–>:结束循环,跳出选择菜单。
黎鹤舞
2024/03/19
1290
C语言实现简易三子棋项目
利用C语言实现三子棋游戏
无论写任何程序,我们都需要先去了解它的大概框架,这里我们先把它的初始界面写出来。一个游戏的初始界面会有菜单可供选择,这里我写了一个最基础的游戏菜单,只支持开始游戏和退出游戏。为了能够在不退出游戏的情况下一直游玩,所以这里我写了一个do while循环来让游戏一直进行下去。
Yui_
2024/10/16
980
利用C语言实现三子棋游戏
趣味益智小游戏 三子棋+五子棋 优化版(可任意选择棋盘大小)
今天牛牛给大家分享的是c语言实现三子棋和五子棋游戏,初学者可能有些不理解的地方,记得私信提问哦,牛牛会一 一回答的。
初阶牛
2022/12/06
8420
趣味益智小游戏 三子棋+五子棋 优化版(可任意选择棋盘大小)
c语言实现三子棋小游戏
 首先,在写程序之前分文件来写会使代码条理清晰,可读性强, 也是一个很好的编程习惯t首先写一个test.c文件用来写主函数框架,在写一个game.c文件把test.c内所需要的函数全部在此文件内实现,再写一个game.h头文件引用一些c标准库里面头文件以及用对函数的声明,在game.c和test.c内包含game.h即可。
用户11029129
2024/06/04
1700
c语言实现三子棋小游戏
三子棋游戏(详解+代码)
今天我们将用C语言实现九宫格三子棋游戏,本篇博客将对此进行详解,文章最后有完整代码。
ahao
2024/03/19
2240
三子棋游戏(详解+代码)
相关推荐
【C语言实战项目】三子棋游戏
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档