两个游戏

来源:互联网 发布:单片机中断系统流程图 编辑:程序博客网 时间:2024/06/05 18:19

三子棋,想写一个人工智能,写成了人工智障.zz

头文件

#ifndef __GAME_H__
#define __GAME_H__


#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>




#define ROWS 11
#define LOCS 11
#define ROW ROWS-2
#define LOC LOCS-2
#define MINENUMBER 20


void outboard(char mine[ROWS][LOCS], int row, int loc);
void outboard(char mine[ROWS][LOCS], int row, int loc);


int openmine(char mine[ROWS][LOCS], int row, int loc, int m, int n);




#endif//__GAME_H__



函数库


#define _CRT_SECURE_NO_DEPRECATE
#include "game.h"


void pboard(char board[ROW][LOC], int row, int loc)//打印棋盘
{
int i = 0;
int j = 0;
printf(" ------------\n");
for (i=0;i<ROW;i++)
{
printf("丨");
for (j=0;j<LOC;j++)
{
printf(" %c丨", board[i][j]);
}
printf("%d", i + 1);
printf("\n");
printf(" ------------");
printf("\n");
}
printf("   1   2   3\n\n");
}


void player(char board[ROW][LOC], int row, int loc)//玩家下棋
{
re:;
printf("请落子:输入横竖坐标\n");
int x = 0;
int y = 0;
scanf("%d%d", &x,&y);
if (x<1 || x>3 || y<1 || y>3) 
{
printf("输入错误,请重新输入\n");
goto re;
}
if (board[x-1][y-1] != ' ')
{
printf("输入错误,请重新输入\n");
goto re;
}
x--; y--;
board[x][y] = 'X';
}


void computer(char board[ROW][LOC], int row, int loc ,int c)//电脑下棋函数  
{
int flag = 1;


//mdzz


//if (c == 2)//master
//{
// if (board[1][1] == ' ')//先占中
// {
// board[1][1] = 'O'; flag = 0; goto flag;
// }
// //获胜
// if (board[0][0] == board[0][1] == 'O'&& board[0][2] == ' '){//row0
// board[0][2] = 'O'; flag = 0;}
// if (board[0][0] == board[0][2] == 'O'&& board[0][1] == ' '){
// board[0][1] = 'O';flag=0;}
// if (board[0][2] == board[0][1] == 'O'&& board[0][0] == ' '){
// board[0][0] = 'O';flag=0;}
// if (board[1][0] == board[1][1] == 'O'&& board[1][2] == ' '){ //row1
// board[1][2] = 'O';flag=0;}
// if (board[1][0] == board[1][2] == 'O'&& board[1][1] == ' '){
// board[1][1] = 'O';flag=0;}
// if (board[1][2] == board[1][1] == 'O'&& board[1][0] == ' '){
// board[1][0] = 'O';flag=0;}
// if (board[2][0] == board[2][1] == 'O'&& board[2][2] == ' '){ //row2
// board[2][2] = 'O';flag=0;}
// if (board[2][0] == board[2][2] == 'O'&& board[2][1] == ' '){
// board[2][1] = 'O';flag=0;}
// if (board[2][2] == board[2][1] == 'O'&& board[2][0] == ' '){
// board[2][0] = 'O';flag=0;}


// if (board[0][0] == board[1][0] == 'O'&& board[2][0] == ' '){ //loc0
// board[2][0] = 'O';flag=0;}
// if (board[0][0] == board[2][0] == 'O'&& board[1][0] == ' '){
// board[1][0] = 'O';flag=0;}
// if (board[1][0] == board[2][0] == 'O'&& board[0][0] == ' '){
// board[0][0] = 'O';flag=0;}
// if (board[0][1] == board[1][1] == 'O'&& board[2][1] == ' '){ //1
// board[2][1] = 'O';flag=0;}
// if (board[0][1] == board[2][1] == 'O'&& board[1][1] == ' '){
// board[1][1] = 'O';flag=0;}
// if (board[1][1] == board[2][1] == 'O'&& board[0][1] == ' '){
// board[0][1] = 'O';flag=0;}
// if (board[0][2] == board[1][2] == 'O'&& board[2][2] == ' '){ //2
// board[2][2] = 'O';flag=0;}
// if (board[0][2] == board[2][2] == 'O'&& board[1][2] == ' '){
// board[1][2] = 'O';flag=0;}
// if (board[1][2] == board[2][2] == 'O'&& board[0][2] == ' '){
// board[0][2] = 'O';flag=0;}


// if (board[0][0] == board[1][1] == 'O'&& board[2][2] == ' '){ //斜
// board[2][2] = 'O';flag=0;}
// if (board[0][0] == board[2][2] == 'O'&& board[1][1] == ' '){
// board[1][1] = 'O';flag=0;}
// if (board[2][2] == board[1][1] == 'O'&& board[0][0] == ' '){
// board[0][0] = 'O';flag=0;}
// if (board[0][2] == board[1][1] == 'O'&& board[2][0] == ' '){
// board[2][0] = 'O';flag=0;}
// if (board[0][2] == board[2][0] == 'O'&& board[1][1] == ' '){
// board[1][1] = 'O';flag=0;}
// if (board[2][0] == board[1][1] == 'O'&& board[0][2] == ' '){
// board[0][2] = 'O';flag=0;}
// //防守
// if (board[0][0] == board[0][1] == 'X'&& board[0][2] == ' '){//row0
// board[0][2] = 'O'; flag = 0;
// }
// if (board[0][0] == board[0][2] == 'X'&& board[0][1] == ' '){
// board[0][1] = 'O'; flag = 0;
// }
// if (board[0][2] == board[0][1] == 'X'&& board[0][0] == ' '){
// board[0][0] = 'O'; flag = 0;
// }
// if (board[1][0] == board[1][1] == 'X'&& board[1][2] == ' '){ //row1
// board[1][2] = 'O'; flag = 0;
// }
// if (board[1][0] == board[1][2] == 'X'&& board[1][1] == ' '){
// board[1][1] = 'O'; flag = 0;
// }
// if (board[1][2] == board[1][1] == 'X'&& board[1][0] == ' '){
// board[1][0] = 'O'; flag = 0;
// }
// if (board[2][0] == board[2][1] == 'X'&& board[2][2] == ' '){ //row2
// board[2][2] = 'O'; flag = 0;
// }
// if (board[2][0] == board[2][2] == 'X'&& board[2][1] == ' '){
// board[2][1] = 'O'; flag = 0;
// }
// if (board[2][2] == board[2][1] == 'X'&& board[2][0] == ' '){
// board[2][0] = 'O'; flag = 0;
// }


// if (board[0][0] == board[1][0] == 'X'&& board[2][0] == ' '){ //loc0
// board[2][0] = 'O'; flag = 0;
// }
// if (board[0][0] == board[2][0] == 'X'&& board[1][0] == ' '){
// board[1][0] = 'O'; flag = 0;
// }
// if (board[1][0] == board[2][0] == 'X'&& board[0][0] == ' '){
// board[0][0] = 'O'; flag = 0;
// }
// if (board[0][1] == board[1][1] == 'X'&& board[2][1] == ' '){ //1
// board[2][1] = 'O'; flag = 0;
// }
// if (board[0][1] == board[2][1] == 'X'&& board[1][1] == ' '){
// board[1][1] = 'O'; flag = 0;
// }
// if (board[1][1] == board[2][1] == 'X'&& board[0][1] == ' '){
// board[0][1] = 'O'; flag = 0;
// }
// if (board[0][2] == board[1][2] == 'X'&& board[2][2] == ' '){ //2
// board[2][2] = 'O'; flag = 0;
// }
// if (board[0][2] == board[2][2] == 'X'&& board[1][2] == ' '){
// board[1][2] = 'O'; flag = 0;
// }
// if (board[1][2] == board[2][2] == 'X'&& board[0][2] == ' '){
// board[0][2] = 'O'; flag = 0;
// }


// if (board[0][0] == board[1][1] == 'X'&& board[2][2] == ' '){ //斜
// board[2][2] = 'O'; flag = 0;
// }
// if (board[0][0] == board[2][2] == 'X'&& board[1][1] == ' '){
// board[1][1] = 'O'; flag = 0;
// }
// if (board[2][2] == board[1][1] == 'X'&& board[0][0] == ' '){
// board[0][0] = 'O'; flag = 0;
// }
// if (board[0][2] == board[1][1] == 'X'&& board[2][0] == ' '){
// board[2][0] = 'O'; flag = 0;
// }
// if (board[0][2] == board[2][0] == 'X'&& board[1][1] == ' '){
// board[1][1] = 'O'; flag = 0;
// }
// if (board[2][0] == board[1][1] == 'X'&& board[0][2] == ' '){
// board[0][2] = 'O'; flag = 0;
// }
//
//}
//未落子
flag:;
if (flag)
{
printf("电脑下棋中,请等待...\n");
Sleep(1000);
int m = 0, n = 0;
srand(time(NULL));          //随机   以时间为种子
m = rand() % 3;
n = rand() % 3;
while ((board[m][n] != ' ')
//&& (board[m][n] == 'O')
//&& (board[m][n] == 'X')//如果坐标不符合要求则循环
)
{
m = rand() % 3;
n = rand() % 3;
}
board[m][n] = 'O';
}
}


int win(char board[ROW][LOC], int row, int loc)
{
if ((board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][2] == 'X') ||
(board[1][0] == board[1][1] && board[1][1] == board[1][2] && board[1][2] == 'X') ||
(board[2][0] == board[2][1] && board[2][1] == board[2][2] && board[2][2] == 'X') ||
(board[0][0] == board[1][0] && board[1][0] == board[2][0] && board[2][0] == 'X') ||
(board[0][1] == board[1][1] && board[1][1] == board[2][1] && board[2][1] == 'X') ||
(board[0][2] == board[1][2] && board[1][2] == board[2][2] && board[2][2] == 'X') ||
(board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == 'X') ||
(board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == 'X'))
{
return 1;//玩家获胜
}


if ((board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][2] == 'O') ||
(board[1][0] == board[1][1] && board[1][1] == board[1][2] && board[1][2] == 'O') ||
(board[2][0] == board[2][1] && board[2][1] == board[2][2] && board[2][2] == 'O') ||
(board[0][0] == board[1][0] && board[1][0] == board[2][0] && board[2][0] == 'O') ||
(board[0][1] == board[1][1] && board[1][1] == board[2][1] && board[2][1] == 'O') ||
(board[0][2] == board[1][2] && board[1][2] == board[2][2] && board[2][2] == 'O') ||
(board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == 'O') ||
(board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == 'O'))
{
return 2; //电脑获胜
}
if ((board[0][0] != ' ') && (board[0][1] != ' ') && (board[0][2] != ' ') &&
(board[1][0] != ' ') && (board[1][1] != ' ') && (board[1][2] != ' ') &&
(board[2][0] != ' ') && (board[2][1] != ' ') && (board[2][2] != ' '))
{
return 3; //平局
}
}


主体部分


#define _CRT_SECURE_NO_DEPRECATE
#include "game.h"


int main()
{
//play()开始or结束游戏?
begin:;
printf("***************************************\n");
printf("************ 是否开始游戏?*************\n");
printf("************  1.开始游戏   *************\n");
printf("************  2.结束游戏   *************\n");
printf("***************************************\n");
printf("***************************************\n");


int panduan = 0;
scanf("%d", &panduan);
switch (panduan)
{
case 1:
break;
case 2:
goto end;
default:
printf("输入错误,重新输入\n");
goto begin;
}
printf("***************************************\n");
printf("************   请选择难度  *************\n");
printf("************   1.noob      *************\n");
printf("************   2.master    *************\n");
printf("***************************************\n");
printf("***************************************\n");
int c = 0;
scanf("%d", &c);
if ((c != 1) && (c != 2))
{
printf("输入错误,重新输入\n");
goto begin;
}
//board()棋盘初始化
char board[ROW][LOC];
int i = 0;
int j = 0;
for (i = 0; i<ROW; i++)
{
for (j = 0; j<LOC; j++)
{
board[i][j] = ' ';
}
}
//pboard()打印棋盘
pboard(board,ROW,LOC);
//game()游戏
           //玩家下子
while(1)
{
player(board, ROW, LOC);
//               //pboard()打印棋盘
pboard(board, ROW, LOC);
//            //判断胜负
int w = 0;
w = win(board, ROW, LOC);
switch (w)
{
case 2:
printf("电脑获胜\n");
goto begin;
case 1:
printf("玩家获胜\n");
goto begin;
case 3:
printf("平局\n");
goto begin;
}
//            //电脑下子
computer(board, ROW, LOC,c);
//pboard()打印棋盘
pboard(board, ROW, LOC);
//               //判断胜负
w = win(board, ROW, LOC);
switch (w)
{
case 0:
printf("电脑获胜\n");
goto begin;
case 1:
printf("玩家获胜\n");
goto begin;
case 2:
printf("平局\n");
goto begin;
}
}
    //游戏结束


end:;
printf("再见\n");
system("pause");
return 0;
}


原创粉丝点击