列和对角线的判断就是指看是不是有三个符号连在了一起,之后要判断是电脑赢了,还是玩家赢了,而平局的话也要输出平局了这一个结果,代码在下面
if (ret == '*') { printf("玩家赢了\n"); //字符类型的符号反馈是谁赢了 } else if (ret == '#') { printf("电脑赢了\n"); } else { printf("平局\n"); } displayboard(board, ROW, COL); }
=========================================================================
---------------------------------------------------------------------------------------------------------------------------------
6,文章到这里也就结束了,附上我的代码,谢谢大家的浏览。
头文件
=========================================================================
#pragma once
//头文件的包含
#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 boar[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);
=========================================================================
源文件
=========================================================================
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void game()
{ char board[ROW] [COL]; //二维数组的创建 initboard(board, ROW, COL); //初始化棋盘--打印空格 displayboard(board, ROW, COL); //打印棋盘 char ret = 0; 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"); } displayboard(board, ROW, COL); } //准备与工作 void menu() { printf("************************************\n"); printf("************************************\n"); printf("******** 1.play **************\n"); printf("******** 0.exit **************\n"); printf("************************************\n"); printf("************************************\n"); } //菜单 int main(void) { int input = 0; srand((unsigned)time(NULL)); do { menu(); printf("请选择:>"); scanf_s("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择\n"); } } while (input); return 0; }
//主函数
=========================================================================
源1文件
=========================================================================
#define _CRT_SECURE_NO_WARNINGS 1
#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) { int j = 0; for (j = 0; j < col; j++) { printf("---"); if (j < col - 1) printf("|"); } printf("\n"); } } } //棋盘的打印 void playermove(char board[ROW][COL], int row, int col) { printf("玩家走:>\n"); int x = 0; int y = 0; while (1) { printf("请输入下棋的坐标:>"); scanf("%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[][COL], int row, int col) { printf("电脑走:>\n"); while (1) { int x = rand() % row; int y = rand() % col; if (board[x][y] == ' ') { board[x][y] = '#'; break; } } } //电脑走的实现 int isfull(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++) { 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][1] == board[i][2] && board[i][1] != ' ') { return board[i][1]; } } //判断列 for (i = 0; i < col; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') { return board[1][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]; } //平局判断 int ret = isfull(board, row, col); if (ret == 1) { return 'q'; } return 'c'; }
//游戏胜利的判断
=========================================================================