C语言实现简易三子棋小游戏
来源:互联网 发布:剑灵灵女捏脸数据图表 编辑:程序博客网 时间:2024/05/21 21:49
实现三子棋游戏主要分为打印选择项、打印棋盘、玩家走、电脑走、以及判断输赢几部分。
以下为具体代码:
头文件game.h
#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define ROWS 3#define COLS 3void Init_Board(char arr[ROWS][COLS], int row, int col);char Print_Board(char arr[ROWS][COLS], int row, int col);void Player_Move(char arr[ROWS][COLS], int row, int col);void Computer_Move(char arr[ROWS][COLS], int row, int col);char Check_Win(char arr[ROWS][COLS], int row, int col);int IsFull(char arr[ROWS][COLS], int row, int col);#endif
游戏功能部分:
game.c
#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"//初始化棋盘void Init_Board(char arr[ROWS][COLS], int row, int col){ int m = 0; int n = 0; for (m = 0;m<row;m++) { for (n = 0; n < col; n++) arr[m][n] = ' '; }}//打印棋盘void Print_Board(char arr[ROWS][COLS], int row, int col){ int i = 0; for (i = 0; i < row; i++) { printf(" %c | %c | %c \n",arr[i][0],arr[i][1],arr[i][2]); if (i != row -1) printf("---|---|---\n"); } printf("\n");}//实现玩家走void Player_Move(char arr[ROWS][COLS], int row, int col){ int x = 0; int y = 0; printf("玩家走:>\n"); while (1) { printf("请输入坐标:>\n"); scanf("%d %d", &x, &y); if (x >= 1 && x <= ROWS && y >= 1 && y <= COLS) { if (arr[x - 1][y - 1] == ' ') { arr[x - 1][y - 1] = '*'; break; } else { printf("该位置已被占用\n"); } } else { printf("坐标输入有误,请重新输入!\n"); } }}//实现电脑走void Computer_Move(char arr[ROWS][COLS], int row, int col){ int x = 0; int y = 0; printf("电脑走:>\n"); while (1) { x = rand ()% row; y = rand ()% col; if (arr[x][y] == ' ') { arr[x][y] = 'x'; break; } }}//判断棋盘是否已满static int IsFull(char arr[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 (arr[i][j] == ' ') return 0; } } return 1;}//判断输赢char Check_Win(char arr[ROWS][COLS], int row, int col){ int i = 0; for (i = 0; i < row; i++) { if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && 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[0][i] != ' ') return arr[0][i]; } if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != ' ') { return arr[0][0]; } if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[1][1] != ' ') { return arr[1][1]; } if (IsFull(arr, row, col)) { return'E'; } return ' ';}
游戏实现
game.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 ret = 0; srand((unsigned )time(NULL)); char arr[ROWS][COLS] = { 0 }; Init_Board(arr, ROWS, COLS); Print_Board(arr, ROWS, COLS); while (1) { Player_Move(arr, ROWS, COLS); Print_Board(arr, ROWS, COLS); ret = Check_Win(arr, ROWS, COLS); if (ret != ' ') { break; } Computer_Move(arr, ROWS, COLS); Print_Board(arr, ROWS, COLS); if (ret != ' ') { break; } } if (ret == 'x') { printf("电脑赢\n"); } else { if (ret == '*') { printf("玩家赢\n"); } else if (ret == 'E') { printf("平局\n"); } }}void test(){ int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: break; default: printf("选择错误,请重新输入\n"); break; } } while (input);}int main(){ test(); system("pause"); return 0;}
打印选项
棋盘
实现玩家和电脑玩游戏
判断输赢
阅读全文
0 0
- C语言实现简易三子棋小游戏
- 简易小游戏扫雷——C语言编程实现
- C语言实现小游戏---三子棋
- C语言实现简易三子棋
- 用C语言实现三子棋小游戏
- C语言实现简单的三子棋小游戏
- 小游戏三子棋的C语言代码实现
- C语言实现扫雷小游戏(设定游戏简易程度,实现空白,实现跳过第一次选中雷)
- C语言小游戏"三子棋"
- 三子棋小游戏--C语言
- C语言小游戏 三子棋
- C语言小游戏----三子棋
- C语言小游戏---三子棋
- C语言实现小游戏2048
- c语言实现打字小游戏
- C语言实现小游戏--扫雷
- 2048小游戏c语言实现
- C语言实现2048小游戏
- ML--SVM学习小结(一)
- 一起Talk Android吧(第五十二回:Android中的Fragment交互续)
- 【java】--后台实现打印
- JavaScript 谷歌地图demo
- HDU1548A strange lift(BFS)
- C语言实现简易三子棋小游戏
- Ubuntu16.04安装ROS2
- NOIP2017普及组T1成绩
- 我的书单
- 关于指针的小知识
- 隐式Intent
- 基于51单片机的计算器(代码篇)
- 实用全面的 C++ 学习资源
- Java 设计模式小解