1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言小游戏井字棋(三子棋)

C语言小游戏井字棋(三子棋)

时间:2018-12-09 23:28:41

相关推荐

C语言小游戏井字棋(三子棋)

1.自定义game.h头文件

#pragma once#include <stdio.h>//符号定义#define Row 3#define Col 3//函数声明//棋盘void showborad(char board[Row][Col],int row,int col);//玩家下棋void playermove(char board[Row][Col]);//电脑下棋void computermove(char board[Row][Col]);//打印棋盘void displayboard(char board[Row][Col]);//判断输赢char Iswin(char board[Row][Col]);

2.game.c游戏函数

#define _CRT_SECURE_NO_WARNINGS#include "game.h"#include <stdlib.h>//初始化棋盘void showborad(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] = ' ';printf("%c", board[i][j]);if (j < col - 1){printf("|");}}printf("\n");for (j = 0; j < col; j++){printf("-");if (j < col - 1){printf("|");}}printf("\n");}}//玩家下棋void playermove(char board[Row][Col]) {int x = 0;int y = 0;while (1){printf("玩家下棋\n");printf("请输入坐标:");scanf("%d %d", &x, &y);if (board[x-1][y-1] == ' '){board[x-1][y-1] = '*';break;}else{printf("输入无效!请重新输入\n");}}}//电脑下棋void computermove(char board[Row][Col]) {printf("电脑下棋\n");while (1){int x = rand() % 3;int y = rand() % 3;if (board[x][y] == ' '){board[x][y] = '#';break;}}}//打印棋盘void displayboard(char board[Row][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");for (j = 0; j < Col; j++){printf("-");if (j < Col - 1){printf("|");}}printf("\n");}}//判断输赢char Iswin(char board[Row][Col]) {int i = 0;int j = 0;for (i = 0; i < Row; i++){if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] == '*'){return '*';}else if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] == '*'){return '*';}else if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] == '*'){return '*';}else if (board[0][2] == board[1][1] && board[1][1] == board[0][2] && board[1][1] == '*'){return '*';}if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] == '#'){return '#';}else if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] == '#'){return '#';}else if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] == '#'){return '#';}else if (board[0][2] == board[1][1] && board[1][1] == board[0][2] && board[1][1] == '#'){return '#';}else{return 'C';}}for (i = 0; i < Row; i++){for (j = 0; j < Col; j++){if (board[i][j] != ' '){return 'Q';}}}}

3.test.c测试文件

#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){printf("* * * * * * * * * * * * * * * * * * *\n");printf("* * * * * * 1.play* * * * * * *\n");printf("* * * * * * 0.exit* * * * * * *\n");printf("* * * * * * * * * * * * * * * * * * *\n");}void game() {//存储数组char board[Row][Col];int row = Row;int col = Col;//初始化棋盘showborad(board,row,col);while (1) {//玩家下棋playermove(board);//打印棋盘displayboard(board);//判断输赢char c = Iswin(board);if (c == '*'){printf("玩家获胜!\n");break;}else if (c == 'Q'){printf("平局!\n");break;}//电脑下棋computermove(board);//打印棋盘displayboard(board);//判断输赢char d = Iswin(board);if (d == '#'){printf("电脑获胜!\n");break;}else if (c == 'Q'){printf("平局!\n");break;}}}int main(){int input = 0;srand((unsigned int)time(NULL));do {menu();printf("请输入:");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("已退出!\n");break;default:printf("输入无效,请重新输入!\n");break;}}while (input);return 0;}

4.运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。