C语言——井字小游戏

C语言——井字小游戏_第1张图片C语言——井字小游戏_第2张图片

 

 

1、定义文件名为  game.c 存放以下内容。

#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 playrmove(char board[ROW][COL], int row, int col)
{
	int x, y;
	printf("玩家走:");
	while(1)
	{
		printf("请输入位置:〉");
		scanf_s("%d,%d", &x, &y);
		if (x >= 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 playrmove2(char board[ROW][COL], int row, int col)
{
	int x, y;
	printf("玩家2走:");
	while (1)
	{
		printf("请输入位置:〉");
		scanf_s("%d,%d", &x, &y);
		if (x >= 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=0, y=0;
	printf("电脑走:》\n");
	while (1)
	{	
		x = rand()%row;
		y = rand()%col;
		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}
}

char iswin(char board[ROW][COL], int row, int col)
{
	int i;
	for (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 (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[2][0] == board[1][1] && board[1][1] == board[0][2] && board[2][0] != ' ')
		return board[2][0];
	if (1 == infull(board, ROW, COL))
	{
		return 'q';
	}
	return 'c';

}

int infull(char board[ROW][COL], int row, int col)
{
	int i, j;
	for (i = 0; i < row; i++)
		for (j = 0; i < col; j++)
			if (board[i][j] == ' ')return 0;

}

2、定义文件名为 game.h 存放以下内容。

#pragma once
#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 playrmove(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 infull(char board[ROW][COL], int row, int col);
void playrmove2(char board[ROW][COL], int row, int col);

3、定义文件名为 text.c 存放以下内容。(这个是主程序)

#include "game.h"
void menu()
{
	printf("***********************************************\n");
	printf("***********************************************\n");
	printf("*****0.退出  1.电脑对战  2.真人对战************\n");
	printf("***********************************************\n");
	printf("***********************************************\n");
}

void game()
{
	char p;
	char board[ROW][COL] = { 0 };
	initboard(board, ROW, COL);
	displayboard(board, ROW, COL);
	while (1)
	{
		playrmove(board, ROW, COL);
		displayboard(board, ROW, COL);
		p=iswin(board, ROW, COL);
		if (p != 'c')break;

		computermove(board, ROW, COL);
		displayboard(board, ROW, COL);
		p=iswin(board, ROW, COL);
		if (p != 'c')break;
	}
	if (p == '*')printf("玩家赢\n");
	else if (p == '#')printf("电脑赢\n");
	else printf("平局\n");
}

void game2()
{
	char p;
	char board[ROW][COL] = { 0 };
	initboard(board, ROW, COL);
	displayboard(board, ROW, COL);
	while (1)
	{
		playrmove(board, ROW, COL);
		displayboard(board, ROW, COL);
		p = iswin(board, ROW, COL);
		if (p != 'c')break;

		playrmove2(board, ROW, COL);
		displayboard(board, ROW, COL);
		p = iswin(board, ROW, COL);
		if (p != 'c')break;
	}
	if (p == '*')printf("玩家赢\n");
	else if (p == '#')printf("电脑赢\n");
	else printf("平局\n");
}


void text()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do 
	{
		menu();
		printf("请选择:〉");
		scanf_s("%d", &input);
		switch (input)
		{
		case 2: game2(); break;
		case 1: game(); break;
		case 0: printf("退出游戏\n"); break;
		default: printf("错误,请重新选择\n"); break;
		}

	} while (input);
}

int main()
{
	text();
	return 0;
}


然后就可以输入坐标玩游戏了。

C语言——井字小游戏_第3张图片

邮件:[email protected]

 文章多处存在借鉴,如有侵权请联系修改删除!

你可能感兴趣的:(C语言,c语言,小程序)