用c语言编写三子棋小游戏
来源:互联网 发布:java交换两个数 编辑:程序博客网 时间:2024/05/21 12:40
三子棋小游戏设计为人与电脑进行下棋的操作,相对比较简单的操作,下面为三子棋小游戏的代码。
game.h
#define _CRT_SECURE_NO_WARNINGS 1#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdio.h>#include<string.h>#include<time.h>#define ROWS 3#define COLS 3void init_board(char board[ROWS][COLS], int row, int col);void display_board(char board[ROWS][COLS], int row, int col);void com_board(char board[ROWS][COLS], int row, int col);void player_board(char board[ROWS][COLS], int row, int col);int winner(char board[ROWS][COLS], int row, int col);int loser(char board[ROWS][COLS], int row, int col);#endif
game.c
#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void init_board(char board[ROWS][COLS], int row, int col)//棋盘初始化{ memset(board ,' ', ROWS*COLS*sizeof(board[0][0]));}void display_board(char board[ROWS][COLS], 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_board(char board[ROWS][COLS], int row, int col)//玩家下棋 { int x = 0; int y = 0; flag1: printf("请输入坐标:"); scanf("%d%d",&x,&y); x = x - 1; y = y - 1; if ((x >= 0) && (x <= 2) && (y >= 0) && (y <= 2)) { if (board[x][y] == ' ') { board[x][y] = 'x'; } else { printf("输入错误\n"); goto flag1; } } else { goto flag1; } printf("\n"); }void comp_board(char board[ROWS][COLS], int row, int col)//电脑下 { srand((unsigned int)time(NULL)); while (1) { int x = rand() % 3; int y = rand() % 3; if (board[x][y] == ' ') { board[x][y] = 'o'; break; } } printf("\n"); }int winner (char board[ROWS][COLS], int row, int 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] == 'x')//人的行判断 { return 1; } if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] == 'o')//电脑的行判断 { return 2; } } for (j = 0; j < col; j++) { if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] == 'x')//人的列判断 { return 1; } if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] == 'o')//电脑的列判断 { return 2; } } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] == 'x')//人的斜判断 { return 1; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] == 'x')//人的斜判断 { return 1; } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] == 'o')//电脑的斜判断 { return 2; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] == 'o')//电脑的斜判断 { return 2; } int C = is_full(board, ROWS, COLS);//判断是否满了 if (C == 5) { return 3; }}int is_full(char board[ROWS][COLS], 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 4; } } } return 5; }
test.c
#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void venu(){ printf("*****************************\n"); printf("******1.play 0.exit**********\n"); printf("*****************************\n");}game(){ char board[ROWS][COLS]; init_board(board, ROWS, COLS);//棋盘初始化 display_board(board, ROWS, COLS);//打印棋盘 while (1) { player_board(board, ROWS, COLS);//玩家下棋 display_board(board, ROWS, COLS); if (winner(board, ROWS, COLS) == 1) { printf("你赢了\n"); break; } else if (winner(board, ROWS, COLS) == 3) { printf("平局\n"); break; } comp_board(board, ROWS, COLS);//电脑下棋 display_board(board, ROWS, COLS); if (winner(board, ROWS, COLS) == 2) { printf("电脑赢了\n"); break; } else if (winner(board, ROWS, COLS) == 3) { printf("平局\n"); break; } }}int main(){ int input = 0; venu(); do { printf("请选择 :\n"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出\n"); break; default: printf("输入错误"); break; } } while (input); return 0;}
下面为运行的界面:
本人是初学者,可能设计的过于简易,希望各位给于意见与建议。
阅读全文
1 0
- 用c语言编写三子棋小游戏
- 【三子棋】用c语言编写一个小游戏---三子棋
- 用c语言编写小游戏:贪吃蛇
- 用c语言编写猜数字小游戏
- c语言编写的小游戏
- C语言编写扫雷小游戏
- 用C语言编写的 俄罗斯方块小游戏(tetris game)
- C语言小游戏"三子棋"
- 三子棋小游戏--C语言
- C语言小游戏 三子棋
- C语言小游戏----三子棋
- C语言小游戏---三子棋
- c语言:编写猜数字小游戏。
- c语言编写猜数小游戏
- C语言编写猜数字小游戏
- C语言编写猜字小游戏
- 用C语言实现三子棋小游戏
- C语言实现小游戏---三子棋
- 欢迎使用CSDN-markdown编辑器
- 构建工具maven
- jQuery_easyUI窗口
- Linux 中使用env查看当前环境
- 基于udp的网络群聊系统
- 用c语言编写三子棋小游戏
- CloudStack相关技术-主存储和二级存储
- NYOJ 36. 最长公共子序列(基础DP)
- java技巧快捷键
- Tensorflow中图像处理函数
- Apache Shiro 是什么?
- Javascript 之ArrayLike
- 简单学生管理系统
- LeetCode Longest Substring Without Repeating Characters