C语言小游戏入门之三子棋
来源:互联网 发布:开淘宝网店需要多少钱 编辑:程序博客网 时间:2024/06/09 18:31
//test.c#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){printf("*******************************\n");printf("*****1.play 0.exit****\n");printf("*******************************\n");}void game() //程序主体{char board[ROW][COL] = { 0 }; //将棋盘赋为0 char win = 0;srand((unsigned int)time(NULL)); //产生随机数Init_board(board, ROW, COL); display_board(board, ROW, COL); //打印空棋盘while (1){player_move(board, ROW, COL); //玩家走棋win = check_win(board, ROW, COL); //判断输赢if (win != ' ')break;display_board(board, ROW, COL);pc_move(board, ROW, COL);printf("\n");win=check_win(board, ROW, COL);if (win != ' ')break;display_board(board, ROW, COL);}if (win == 'X'){printf("玩家赢\n");printf("\n");}else if (win == 'O'){printf("电脑赢\n");printf("\n");}else if (win == ' '){printf("平局\n");}display_board(board, ROW, COL);printf("\n");return menu();}void test(){int input = 0;menu();do{printf("请选择:\n");scanf("%d", &input);switch (input){case 1:printf("请开始游戏\n");game();break;case 0:printf("退出游戏");break;default:printf("选择错误,请重新输入:");break;}} while (input);}int main() //主函数{test(); //调用test函数system("pause");return 0;}//game.c#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void Init_board(char arr[ROW][COL], int row, int col){memset(arr, ' ', row*col);}void display_board(char board[ROW][COL], int row, int col) //打印棋盘框架{int i = 0;for (i = 0; i<row; i++){printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);if (i != 2)printf("---|---|---\n");}}void player_move(char board[ROW][COL], int row, int col){int x = 0;int y = 0;while (1){printf("请输入坐标(1~3):");scanf("%d%d", &x, &y);x -= 1; y -= 1; //输入的坐标减一if (((x >= 0) && (x <= 2)) && ((y >= 0) && (y <= 2))){if (board[x][y] == ' '){board[x][y] = 'X';break;}else{printf("坐标已被占用\n");}}else{printf("无效坐标,请重新输入\n");}}}void pc_move(char board[ROW][COL], int row, int col){printf("\n");while (1){int x = rand() % 3;int y = rand() % 3;if (board[x][y] == ' '){board[x][y] = 'O';break;}}}static int is_full(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 check_win(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];if (is_full(board, row, col)){return ' ';}return ' ';}//game.h#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#define ROW 3#define COL 3void display_board(char arr[ROW][COL], int row, int col);char check_win(char arr[ROW][COL], int row, int col);int is_full(char arr[ROW][COL], int row, int col);int get_set_mine(char arr[ROW][COL], int row, int col);#endif //__GAME_H__
阅读全文
0 0
- C语言小游戏入门之三子棋
- C语言小游戏"三子棋"
- 三子棋小游戏--C语言
- C语言小游戏 三子棋
- C语言小游戏----三子棋
- C语言小游戏---三子棋
- C语言实现小游戏---三子棋
- c语言小程序之三子棋小游戏的实现
- C语言小游戏之猜数字,三子棋游戏
- C语言 小游戏之贪吃蛇
- c语言之猜数字的小游戏
- 012-C语言小游戏之推箱子
- c语言学习之小游戏2048
- 三子棋小游戏 5*5 c语言
- 用c语言编写三子棋小游戏
- 用C语言实现三子棋小游戏
- C语言实现简易三子棋小游戏
- C语言实现简单的三子棋小游戏
- 线性分类器定义和局限性
- intent.putExtra()数组 传入数组名称!不含[]
- C++ IOCP2
- 最大子段和
- 设计模式遵循的七大原则
- C语言小游戏入门之三子棋
- 关于Maven项目build时出现No compiler is provided in this environment的处理
- DL学习--GAN
- 《TCP/IP详解 卷1》 笔记: TCP的超时与重传
- myBatis 传入的参数是对的,但是总是没有返回结果
- spark特点
- linux --> shell --> cd,cp,mkdir...
- 第24章 配置开发板支持 u 盘
- javascript--列表页搜索 js实现 选中上一次搜索的条件