c语言-三子棋小游戏
此三子棋小游戏运用数组知识,只实现了简单功能。
头文件game.h
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ROW 3
#define COL 3
void InitBoard(char board[ROW][COL], int row, int col, char set);
void DisplayBoard(char board[ROW][COL], int row,int col);
void PlayGame(char board[ROW][COL], int row, int col);
源文件game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void InitBoard(char board[ROW][COL], int row, int col, char set){
memset(board, set, row*col*sizeof(board[0][0]));
}
void DisplayBoard(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++){
printf("%c", board[i][j]);
if (j != COL - 1){
printf(" |");
}
}
printf("\n");
if (i != ROW - 1){
printf("---+---+---");
printf("\n");
}
}
}
void PlayGame(char board[ROW][COL], int row, int col){
int i = 0;
int j = 0;
int m = 0;
int n = 0;
while (1){
int count = 0;
while (1){
printf("请输入放置棋子的坐标(如:a,b):>");
scanf("%d,%d", &i, &j);
if (board[i - 1][j - 1] != ' '){
printf("此坐标已被棋子占用!请重新输入!\n");
}
if (i<1 || i>3 || j<1 || j>3){
printf("坐标输入错误,请重新输入!\n");
}
else{
break;
}
}
printf("玩家走:\n");
printf("\n");
board[i - 1][j - 1] = 'X';
DisplayBoard(board, ROW, COL);
if ((board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][2] == 'X')
|| (board[1][0] == board[1][1] && board[1][1] == board[1][2] && board[1][2] == 'X')
|| (board[2][0] == board[2][1] && board[2][1] == board[2][2] && board[2][2] == 'X')
|| (board[0][0] == board[1][0] && board[1][0] == board[2][0] && board[2][0] == 'X')
|| (board[0][1] == board[1][1] && board[1][1] == board[2][1] && board[2][1] == 'X')
|| (board[0][2] == board[1][2] && board[1][2] == board[2][2] && board[2][2] == 'X')
|| (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == 'X')
|| (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == 'X')){
printf("恭喜你,你赢了!\n");
break;
}
for (m = 0; m < ROW; m++){
for (n = 0; n < COL; n++){
if (board[m][n] == ' '){
count++;
}
}
}
if (count == 0){
printf("平局!");
break;
}
while (1){
i = rand() % 3;
j = rand() % 3;
if (board[i][j] == ' '){
break;
}
}
board[i][j] = '*';
printf("电脑走:>\n");
printf("\n");
DisplayBoard(board, ROW, COL);
if ((board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][2] == '*')
|| (board[1][0] == board[1][1] && board[1][1] == board[1][2] && board[1][2] == '*')
|| (board[2][0] == board[2][1] && board[2][1] == board[2][2] && board[2][2] == '*')
|| (board[0][0] == board[1][0] && board[1][0] == board[2][0] && board[2][0] == '*')
|| (board[0][1] == board[1][1] && board[1][1] == board[2][1] && board[2][1] == '*')
|| (board[0][2] == board[1][2] && board[1][2] == board[2][2] && board[2][2] == '*')
|| (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == '*')
|| (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == '*')){
printf("很遗憾,电脑赢了!\n");
break;
}
}
}
测试部分
源文件test.c
/*
date:2018/11/22
author:Better_Me1
program:The Third Son Of Chess Games
compiler:Visual Studio 2013
*/
/*测试部分*/
#include "game.h"
void menu(){
printf("************ 三子棋小游戏 ************\n");
printf("****** 1.进入游戏 2.退出游戏 ******\n");
printf("**************************************\n");
}
void game(){
char chess[ROW][COL] = { ' ' };
InitBoard(chess, ROW, COL, ' ');//初始化
DisplayBoard(chess, ROW, COL);//打印棋盘
PlayGame(chess, ROW, COL);//玩游戏
}
void test(){
int input = 0;
while (input!=2){
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input){
case 1:
game();
break;
case 2:
printf("退出游戏!\n");
break;
default:
printf("输入有误,请重新选择!\n");
break;
}
}
}
void main(){
test();
system("pause");
}
运行效果: