用C语言实现三子棋小游戏
来源:互联网 发布:石材效果图软件 编辑:程序博客网 时间:2024/06/05 02:54
#ifndef __GAME_H__#define __GAME_H__#define COL 3#define ROW 3#include<time.h>#include<stdlib.h>#include<stdio.h>#include<windows.h>#include<stdio.h>#include<windows.h>void init_board(char arr[COL][ROW], int col, int row);void display_board(char arr[COL][ROW], int col, int row);void blue_player_move(char arr[COL][ROW], int col, int row);//blue|'X'void red_player_move(char arr[COL][ROW], int col, int row);//red|'O'void computer_move(char arr[COL][ROW], int col, int row);char check_win(char arr[COL][ROW], int col, int row);void pve_game();void pvp_ganme();#endif//__GAME_H__
# define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void init_board(char arr[COL][ROW], int col, int row){ memset(arr, ' ', sizeof(arr[COL][ROW]) * col*row);}void display_board(char arr[COL][ROW], int col, int row){ int i = 0; for (i = 0; i < col; i++) { printf(" %c | %c | %c\n", arr[i][0], arr[i][1], arr[i][2]); if (i!=col-1) printf("---|---|---\n"); } printf("\n");}void computer_move(char arr[COL][ROW], int col, int row){ while (1) { int x = rand() % 3; int y = rand() % 3; if (arr[x][y] == ' ') { arr[x][y] = 'O'; break ; } }}void blue_player_move(char arr[COL][ROW], int col, int row)//blue|'X'{ int x = 0; int y = 0; while (1) { printf("请blue玩家输入你要下的坐标( x , y ):>"); scanf("%d %d", &x, &y); if (((x <= 3 && y <= 3) && (x >= 1 && y >= 1)) && (arr[x - 1][y - 1] == ' ')) { arr[x - 1][y - 1] = 'X'; break; } else { printf("输入错误\n"); } }}void red_player_move(char arr[COL][ROW], int col, int row)//red|'O'{ int x = 0; int y = 0; while (1) { printf("请red玩家输入你要下的坐标( x , y ):>"); scanf("%d %d", &x, &y); if (((x <= 3 && y <= 3) && (x >= 1 && y >= 1)) && (arr[x - 1][y - 1] == ' ')) { arr[x - 1][y - 1] = 'O'; break; } else { printf("输入错误\n"); } }}static int is_full(char arr[COL][ROW], int col, int row){ int i = 0; int j = 0; for (i = 0; i < col; i++) { for (j = 0; j < row; j++) { if (arr[i][j] == ' ') { return 0; } } } return 1;}char check_win(char arr[COL][ROW], int col, int row)//判定函数,COL、ROW改变此函数需修改{ int i = 0; char Q = 0; for (i = 0; i < col; i++) { if ((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2])&&(arr[i][2]==arr[i][0])&& (arr[i][0] != ' ')) return arr[i][0]; } for (i = 0; i < col; i++) { if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i])&&(arr[2][i]==arr[0][i]) && (arr[0][i] != ' ')) return arr[0][i]; } if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]) && (arr[2][2] == arr[0][0]) && (arr[1][1] != ' ')) { return arr[1][1]; } if ((arr[2][0] == arr[1][1]) && (arr[1][1] == arr[0][2])&&(arr[0][2]==arr[2][0]) && (arr[1][1] != ' ')) { return arr[1][1]; } if (is_full(arr,col,row)) { return 'Q'; } else return ' ';}
# define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void menu(){ printf("**************************************************************************************\n"); printf("****************** 1.play 2.Game rules 0.exit **********************\n"); printf("**************************************************************************************\n");}void menu_Game_mode(){ printf("**********************************************************************************\n"); printf("********** 1.player with player 0.player with computer **********\n"); printf("**********************************************************************************\n");}void menu3(){ printf("**************************************************************************************\n"); printf("********* 1.computer before player 0.player before computer *********\n"); printf("**************************************************************************************\n");}void menu_first_player(){ printf("**********************************************************************************\n"); printf("**** 1.red player before bule player 0.bule player before red player ****\n");//red is 'O' bule is 'X' printf("**** blue player is 'X' red player is 'O' ***\n"); printf("**********************************************************************************\n");}void menu_Game_rules(){ printf("**************************************************************************************\n"); printf("****** 当一方三子连成一条直线时该方获胜,若棋盘下满还未有人获胜则为平局 ******\n"); printf("**************************************************************************************\n");}void pve_game(){ int a = 0; char win = 0; char board[COL][ROW] = { 0 }; srand((unsigned int)time(NULL)); init_board(board, COL, ROW); system("cls"); menu3(); printf("请选择:>"); scanf("%d", &a); display_board(board, COL, ROW); switch (a) { case 1: { while (1) { computer_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); blue_player_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); } system("cls"); display_board(board, COL, ROW); if (win == 'X') { printf("恭喜您取得胜利!!!\n"); } else if (win == 'O') { printf("电脑取得胜利,不要气磊,再战一局吧\n"); } else if (win == 'Q') { printf("平局啦!再战一局吧\n"); } break; } case 0: { while (1) { system("cls"); blue_player_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); computer_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); } system("cls"); display_board(board, COL, ROW); if (win == 'X') { printf("恭喜您取得胜利!!!\n"); } else if (win == 'O') { printf("电脑取得胜利,不要气磊,再战一局吧\n"); } else if (win == 'Q') { printf("平局啦!再战一局吧\n"); } break; } default: printf("输入错误\n"); break; }}void pvp_game(){ int a = 0; char win = 0; char board[COL][ROW] = { 0 }; init_board(board, COL, ROW); system("cls"); menu_first_player(); printf("请选择:>"); scanf("%d", &a); display_board(board, COL, ROW); switch (a) { case 1:// red('O') first { while (1) { system("cls"); display_board(board, COL, ROW); red_player_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); blue_player_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); } system("cls"); display_board(board, COL, ROW); if (win == 'X') { printf("恭喜blue玩家取得胜利!!!\n"); } else if (win == 'O') { printf("恭喜red玩家取得胜利!!!\n"); } else if (win == 'Q') { printf("平局啦!再战一局吧\n"); } break; } case 0:// blue('X') first { while (1) { system("cls"); blue_player_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); red_player_move(board, COL, ROW); win = check_win(board, COL, ROW); if (win != ' ') break; system("cls"); display_board(board, COL, ROW); } system("cls"); display_board(board, COL, ROW); if (win == 'X') { printf("恭喜blue玩家取得胜利!!!\n"); } else if (win == 'O') { printf("恭喜red玩家取得胜利!!!\n"); } else if (win == 'Q') { printf("平局啦!再战一局吧\n"); } break; } default: printf("输入错误\n"); break; }}void play_game(){ int input = 0; menu_Game_mode(); printf("请选择:>"); scanf("%d", &input); system("cls"); switch (input) { case 0: pve_game(); break; case 1: pvp_game(); break; default: printf("输入错误\n"); break; }}void test(){ int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); system("cls"); switch (input) { case 1: play_game(); break; case 0: break; case 2: system("cls"); menu_Game_rules(); break; default: printf("输入错误\n"); break; } } while (input != 0);}int main(){ test(); system("pause"); return 0;}
阅读全文
0 0
- 用C语言实现三子棋小游戏
- C语言实现小游戏---三子棋
- 用C语言实现简单的三子棋小游戏
- C语言实现简易三子棋小游戏
- C语言实现简单的三子棋小游戏
- 小游戏三子棋的C语言代码实现
- C语言小游戏"三子棋"
- 三子棋小游戏--C语言
- C语言小游戏 三子棋
- C语言小游戏----三子棋
- C语言小游戏---三子棋
- C语言实现小游戏2048
- c语言实现打字小游戏
- C语言实现小游戏--扫雷
- 2048小游戏c语言实现
- C语言实现2048小游戏
- 用c语言编写三子棋小游戏
- c语言小程序之三子棋小游戏的实现
- BZOJ 4326 NOIP 2015 DAY2 T3 浅谈二分及树上差分数组DFS动态统计
- xsd文件反向生成JavaBean
- 5、守护线程与yield
- Noip 2016 组合数问题
- 16秋第二次作业
- 用C语言实现三子棋小游戏
- BZOJ 3107 [cqoi 2013] DP 解题报告
- 每日一练(20171020)
- linux 系统下Tomcat 开启关闭
- 关于WebClient超时问题
- MySql的使用心得
- C++中##(两个井号)和#(一个井号)用法
- LeetCode 70 Climbing Stairs
- UITableView的基本使用 cell的单选和多选