C语言 三子棋游戏

编程入门 行业动态 更新时间:2024-10-11 03:17:05

C语言 <a href=https://www.elefans.com/category/jswz/34/1769974.html style=三子棋游戏"/>

C语言 三子棋游戏

C语言 三子棋游戏 (可以使用机器学习的方式,来训练电脑落子,目前没做)
//游戏 头文件 game.h
#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define Line 3
#define Row 3
void Initboard(char board[Line][ROW],int line,int row);
void show_board(char board[Line][ROW],int line,int row);
void playermove(char board[Line][ROW],int line,int row);
void computermove(char board[Line][ROW],int line,int row);
void is_win(char board[Line][ROW],int line,int row);```c
//游戏功能实现代码块 game.c
#include "game.h"
void Initboard(char board[Line][ROW],int line,int row)
{int i = 0;int j = 0;for (i = 0 ; i < line ; i++){for (j = 0 ; j < row ; j++){board[i][j] = ' ' ;//将棋盘上的位置全部设置成空格}}
}void show_board(char board[Line][ROW],int line,int row)
{//棋盘形状//   |   |   //---|---|---//   |   |   //---|---|---//   |   |   int i = 0;int j = 0;for (i = 0; i < line; i++){for(j = 0; j < row; j++){printf(" %c ",board[i][j]);if (j < row -1){printf("|");}}printf("\n")if(i < line -1){for(j = 0; j < row; j++)printf("---");if (j < row -1){printf("|");}}printf("\n");}
}void playermove(char board[Line][ROW],int line,int row)
{//玩家输入坐标,判断坐标的合理性int x = 0;int y = 0;while(1){printf("玩家请输入一个坐标\n");scanf("%d%d",&x,&y);if (x >= 1 && x <= line && y >= 1 && y <= row){if (board[x-1][y-1] == ' '){board[x-1][y-1] = '*';break;}else{printf("该位置被占用了,请重新输入");continue;}}else{printf("坐标位置不合规,请重新输入坐标");}}	
}void computermove(char board[Line][ROW],int line,int row)
{//电脑下的位置随机产生---我感觉可以使用机器学习的方式,来训练电脑落子,这项功能后期学会了再来改进while(1){int x = rand() % 3;int y = rand() % 3;if (board[x][y] == ' '){board[x-1][y-1] = '#';break;}				
}int is_full(char board[Line][ROW],int line,int row)
{int i = 0;int j = 0;for (i = 0; i < line; i++){for(j = 0;j < row; j++){if(board[i][j] != 0){return 1;}}}return 0;
}void is_win(char board[Line][ROW],int line,int row)
{//返回 *-玩家赢//返回 #-电脑赢//返回 q-平局//返回 c-继续//1、判断行相同的情况int i = 0;for(i = 0; i < line ; i++){if( board[i][0]==board[i][1] && board[i][1]==board[i][2] && board[i][0]!=' '){return board[i][0];}}//2、判断列相同的情况int i = 0;for(i = 0; i < row ; i++){if( board[0][i]==board[1][i] && board[1][i]==board[2][i] && board[1][i]!=' '){return board[0][i];}}//3、判断主对角线相同的情况if(board[0][0]==board[1][1] && board[1][1]==board[2][2] && board[1][1!=' '){return board[0][0];}//3、判断从对角线相同的情况if(board[2][0]==board[1][1] && board[1][1]==board[0][2] && board[1][1!=' '){return board[0][2];}//4、判断棋盘上是否已近放满了int re = is_full()if (1 == re ){return 'q';}else if (0 == re ){return 'c';}
}
#include "game.h"
//测试 test().c
void mune()
{printf("******************\n");printf("******1-play*****\n");printf("******0-exit******\n");printf("******************\n");
}void playgame()
{char board[Line][Row] = {0};char ret ;//1、初始化棋盘(所有棋盘上的数据都是空格)Initboard(board,line,row);//2、打印棋盘 3*3的棋盘show_board(board,line,row);while(1){//3、玩家落子playermove(board,line,row);show_board(board,line,row);// 5、判断游戏是否结束ret = is_win(board,line,row);if (ret = '*'){printf("玩家赢\n");break;}else if (ret = '#'){printf("电脑赢\n");break;}else if(ret = 'q'){printf("平局\n");break;}//4、电脑落子computermove(board,line,row);show_board(board,line,row);ret = is_win(board,line,row);if (ret = '*'){printf("玩家赢\n");break;}else if (ret = '#'){printf("电脑赢\n");break;}else if(ret = 'q'){printf("平局\n");break;}}}void test()
{mune()int input = 0;srand((unsigned int)time(NULL));do{	printf("请进行选择-> \n");scanf("%d",&input);switch(input){case 0:{printf("游戏结束\n");break;}case 1:{playgame();break;}default :break;}while(input);
}
int main()
{test();return 0;
}

更多推荐

C语言 三子棋游戏

本文发布于:2024-03-07 22:51:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719123.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:三子   语言   游戏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!