两个游戏
来源:互联网 发布:单片机中断系统流程图 编辑:程序博客网 时间: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;
}
- 两个游戏
- 两个在线flash游戏
- 两个游戏 (2)
- 推荐:两个特别好玩的游戏
- 用两个线程玩猜数字游戏.
- 用两个线程玩猜数字游戏
- 赛车游戏(一)通过蓝牙实现两个手机交互
- PSP上的两个时间类动作解谜游戏
- 阐述游戏AI设计的两个禁忌及解决方法
- 作业2用两个线程玩猜数字游戏
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 两个!!
- 两个
- 解决双核玩游戏 上网 卡机 或者速度太快的 两个小程序【FreeXploiT综合】
- storyboard创建带有NavigationController的界面
- java 异常处理
- Python函数带*的参数
- 小程序开发填坑汇总贴
- 编程练习——进制转换
- 两个游戏
- Linux 怎样设定SVN开机后自动启动?
- Qt5::WndowFlags枚举类型
- Python及其常用模块库下载及安装
- iOS 自动生成framework并自动进行模拟器和真机framework合并
- dfs【奇偶剪枝】
- 检查url是否可用
- PHP+Apache+MySQL配置过程
- 高精度乘法--速度较快