首页 > 其他分享 >三字棋小游戏

三字棋小游戏

时间:2023-03-30 13:02:26浏览次数:38  
标签:int 三字棋 小游戏 board printf row COL ROW

代码里面有一个小bug,看大家能不能发现

三字棋小游戏_#include

text.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "game.h"

//三字棋游戏

#include <stdio.h>

void menu()

{

    printf("************************************\n");

    printf("******   1.Play      0.Exit   ******\n");

    printf("************************************\n");

}

void game()

{

    int ret = 0;

    char board[ROW][COL] = {0};//数组存放棋盘数据

    InitBoard(board, ROW, COL);//初始化棋盘

    DisplayBoard(board, ROW, COL);//显示棋盘

    while (1)

    {

        Playermove(board, ROW, COL);//玩家下棋

        //判断玩家是否能赢

        ret = Iswin(board, ROW, COL);

        if (ret != 'C')

        {

            break;

        }

        Computermove(board, ROW, COL);//电脑下棋

        //判断电脑是否能赢

        ret = Iswin(board, ROW, COL);

        if (ret != 'C')

        {

            break;

        }

    }

    if (ret == '*')

    {

        printf("玩家赢\n");

    }

    else if (ret == '#')

    {

        printf("电脑赢\n");

    }

    else

    {

        printf("平局\n");

    }

}

int test()

{

    int input = 0;

    srand((unsigned int)time(NULL));

    do

    {

        menu();

        printf("请选择:>");

        scanf("%d", &input);

        switch (input)

        {

        case 1:

                game();

                return 1;

                break;

        case 0:

                printf("退出游戏\n");

                return 0;

                break;

        default:

                printf("输入错误,请重新输入\n");

        }

    } while (input);

}


int main()

{

    if (1 == test())

        game();

    return 0;

}

game.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

void InitBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			board[i][j] = ' ';
		}
	}
}
void DisplayBoard(char board[ROW][COL], int row, int col)
{
	int i = 0;
	
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			printf(" %c ", board[i][j]);//打印一行的数据
			if(j < col - 1)
			    printf("|");			
		}
		printf("\n");
		if (i < row - 1)
		{
			for (j = 0; j < col; j++)
			{
				printf("---");
				if (j < col - 1)
					printf("|");
			}
			printf("\n");
		}

	}
}
void Playermove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("玩家走:>\n");
		printf("请输入坐标:>x y\n");
		scanf("%d%d", &x, &y);
		//判断坐标是否合理
		if (x < row + 2 && y < col + 2)
		{
			board[x - 1][y - 1] = '*';
			DisplayBoard(board, ROW, COL);
			break;
		}
		else
			printf("坐标错误,请重新输入");
	}
}
void Computermove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("电脑走:>\n");
	while (1)
	{
		x = rand() % ROW;
		y = rand() % COL;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			DisplayBoard(board, ROW, COL);
			break;
		}
		
	}
}
int Isfull(char board[ROW][COL],int row,int col)//返回表示棋盘满了,返回0表示没满
{
	int i = 0;
	int j = 0;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			if (board[i][j] == ' ')
			{
				return 0;
			}
		}
	}
	return 1;//满了
}
char Iswin(char board[ROW][COL], int row, int col)
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		if (board[i][0] == board[i][1] && board[i][0] == board[i][2] && board[i][0] != ' ')
			return board[i][0];
	}
	for (i = 0; i < row; i++)
	{
		if (board[0][i] == board[1][i] && board[0][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[1][1] != ' ')
		return board[1][1];
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
		return board[1][1];
	if (1 == Isfull(board, ROW, COL))
	{
		return 'Q';
	}
	return 'C';
}

game.h

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#define ROW 3
#define COL 3
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);

标签:int,三字棋,小游戏,board,printf,row,COL,ROW
From: https://blog.51cto.com/u_15906483/6159487

相关文章

  • chatgpt写程序-python小游戏-2048-pygame
    闲的没事,用chatpgt弄了个小游戏,2048,利用pygame实现,无额外贴图。只需要告诉他写个python游戏2048,只用pygame实现,不要额外贴图。然后在他暂停后说请继续,最后会有一些bug,把报......
  • 使用unity构建射击小游戏
    使用unity构建射击小游戏成果图参考例程www.manning.com/hocking问题汇总1、renderer.material方法过时换成使用this.GetComponent()参考网址:https......
  • 初识C语言(12)小游戏
    制作一个小游戏:#include<iostream>#include<stdio.h>#include<time.h>voidmenu(){printf("***********************************\n");printf("*******1play0......
  • Three.js 进阶之旅:物理效果-3D乒乓球小游戏
    声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要本文在专栏上一篇内容《Three.js进阶之......
  • 使用简单算法两小时实现猎杀乌姆帕斯(Hunt the Wumpus)Python小游戏
    “HunttheWumpus”是什么?引用wiki百科:HunttheWumpus是GregoryYob于1973年开发的一款基于文本的冒险游戏。在游戏中,玩家在一系列连接的洞穴中穿行,这些洞穴排列......
  • [React][typescript]官方教程小游戏Tic-Tac-Toe
    本文记录一些跟随官方教程后的心得,按照最终版本代码逐块进行理解,包括typescript和react的一些基本操作和误区函数组件Game:最后输出的大组件,所有组件的父类Board:Game......
  • c++编程,对2048小游戏的扩充
    原游戏网址:(210条消息)C++小游戏(原创)——2048_c++小游戏下载_Ziwen.紫闻的博客-CSDN博客源代码: #include<iostream>#include<stdlib.h>#include<time.h>#include<......
  • c语言实现简单的飞机小游戏
    在今天浏览csdn的过程中,看到了一个用c语言做的简单的飞机小游戏,感觉非常有意思,代码如下:#include<stdio.h>#include<stdlib.h>#include<conio.h>intmain(){intx=15......
  • 猜数字小游戏
    这是python课上写的一个小游戏,其实就是一个猜数字的游戏这是while循环的形式 这是for循环 try...except是用来判断输入的是不是数字,如果不是就会提示并重新接收,下面就......
  • Dev-C++自带小游戏Jackpot改进
    1.项目简介这是Dev-C++自带的小游戏Jackpot,本质上是一个靠运气和一点点逻辑推理的猜字游戏2.源代码打开Dev-C++,点击左上方的“文件”,再点击“新建”,接着点击“项目”,出......