三子棋
来源:互联网 发布:好了歌注 知乎 编辑:程序博客网 时间:2024/06/03 21:00
设置了头文件
Game.H
#ifndef GAME_H
#define GAME_H
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROWS 3
#define LISTS 3
void game();
void pane(char arr[ROWS][LISTS],int rows, int lists);
void init(char arr[ROWS][LISTS],int rows, int lists);
void player_go(char arr[ROWS][LISTS],int rows, int lists);
void computer_go(char arr[ROWS][LISTS],int rows, int lists);
char check_win(char arr[ROWS][LISTS],int rows, int lists);
#endif //GAME_H
Test.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void test()
{
int input = 0;
do
{
srand((unsigned int)time(NULL));
void screen();
void game();
screen();
printf("请选择:>\n");
scanf("%d", &input);
switch (input)
{
case 0: break;
case 1:game(); break;
default:printf("输入错误\n");break;
}
} while (input);
}
void screen()
{
printf("---------------------------\n");
printf("----1.play----0.exit--------\n");
printf("---------------------------\n");
}
int main()
{
test();
return 0;
}
Game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void game()
{
char w = 0;
char arr[ROWS][LISTS] = { 0 };
init(arr, ROWS, LISTS);
pane(arr, ROWS, LISTS);
while (1)
{
player_go(arr, ROWS, LISTS);
pane(arr, ROWS, LISTS);
w = check_win(arr, ROWS, LISTS);
if (w == '#')
{
printf("平局\n");
break;
}
computer_go(arr, ROWS, LISTS);
pane(arr, ROWS, LISTS);
w = check_win(arr, ROWS, LISTS);
if (w == '*')
{
printf("玩家赢\n");
break;
}
if (w == 'I')
{
printf("电脑赢\n");
break;
}
}
}
void player_go(char arr[ROWS][LISTS],int rows,int lists)
{
int i = 0;
int j = 0;
printf("玩家走:\n");
printf("请输入坐标:>");
flag:
scanf("%d,%d", &i, &j);
if (i >= 0 && i < (rows + 1) && j >= 0 && j < (lists + 1))
{
if (arr[i - 1][j - 1] ==' ')
arr[i - 1][j - 1] = '*';
else
{
printf("该位置被占用,请重新输入:>");
goto flag;
}
}
else
{
printf("输入错误,请重新输入:>");
goto flag;
}
}
void computer_go(char arr[ROWS][LISTS],int rows,int lists)
{
int x = 0;
int y = 0;
printf("电脑走:\n");
while (1)
{
x = rand() % rows;
y = rand() % lists;
if (arr[x][y] ==' ')
{
arr[x][y] = 'I';
break;
}
}
}
char check_win(char arr[ROWS][LISTS],int rows,int lists)
{
int i = 0;
int j = 0;
for (i = 0; i < rows; i++)
{
if (arr[i][0] ==arr[i][1] && arr[i][2] == arr[i][1] && (arr[i][1] !=' '))
return arr[i][0];
else if (arr[0][i] ==arr[1][i] && arr[2][i] == arr[1][i] && (arr[1][i] !=' '))
return arr[0][i];
}
if (arr[0][0] ==arr[1][1] && arr[2][2] == arr[1][1] && (arr[1][1] !=' '))
return arr[0][0];
if (arr[0][2] ==arr[2][0] && arr[1][1] == arr[0][2] && (arr[1][1] !=' '))
return arr[0][2];
{
i = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < lists; j++)
{
if (arr[i][j] ==' ')
goto flag;
}
}
if (i == rows)
return '#';
}
flag:
return ' ';
}
void init(char arr[ROWS][LISTS],int rows,int lists)
{
int i = 0;
int j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < lists; j++)
arr[i][j] = ' ';
}
}
void pane(char arr[ROWS][LISTS],int rows,int lists)
{
int i = 0;
for (i = 0; i < rows; i++)
{
if (i == 0)
printf("----------------\n");
printf("| %c | %c | %c |\n", arr[i][0], arr[i][1], arr[i][2]);
printf("----------------\n");
}
}
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋,
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- H5本地存储sessionStorage和localStorage的区别
- linux安装jdk
- 浏览器的工作原理:新式网络浏览器幕后揭秘
- windows 下xdebug 安装和使用
- appium-连接真机
- 三子棋
- 在C#中,Json的序列化和反序列化的几种方式总结
- ant删除文件操作
- 【NOIP普及组2016】&魔法阵 This is magic!&
- springMVC之mvc:interceptors拦截器的用法
- 学习心得
- selenium开发环境部署Maven官方依赖porm文件分享
- 编码与Python逻辑运算
- Lucene.NET使用入门(二)【简单的搜索网站示例】