资源简介
能进行简单的人机对战,有简单的图形界面,添加了图片
代码片段和文件信息
#include
#include
#include
#include
#include
typedef struct repeal //悔棋结构体
{
int x; //记录棋子坐标
int y;
int type; //什么颜色的棋子
struct repeal *next;
}repeal;
//#pragma warning(disable:4996)
void five_menu(); //显示菜单界面
void five_qp(); //打印棋盘
void five_playgame();
void five_AI(int mychess); //电脑思考
int five_score(); //评分函数
void five_mark(int xint yint countint angleint mychess); //判断棋型函数
int five_win(); //判断胜负
void add_repeal(int xint yint typerepeal *L);
repeal* init_repeal(); //初始化悔棋链表
void five_repeal(); //悔棋实现函数
int a[23][23]={0}; //15*15的棋盘(利于后面遍历棋盘(4+15+4)*(4+15+4)) [-1012分别代表空,不存在,玩家,电脑]
int pe[15][15]cp[15][15]; //玩家和电脑计分数组
int maxscorepemaxscorecp;
int win=0; //判断是否胜利(1为玩家胜利2为人机胜利)
int play=2;// 默认电脑先手
int win5=0alive4=0die4=0die3=0lowdie4=0alive3=0alive2=0die2=0tiao3=0lowalive2=0other=0; //活五,活四,死四,死三,低级死四,活三,活二,跳三,低级活二,其他
int count0=1count90=1count45=1count135=1; //(统计不同角度四条线连子数)
int stepcp=0steppe=0; //统计步数
struct repeal *RE=init_repeal();
void main()
{
initgraph(600600);
setbkcolor(BROWN);
five_menu(); //显示菜单界面
}
repeal* init_repeal() //初始化悔棋链表
{
repeal *L;
L=(repeal*)malloc(sizeof(repeal));
if(L==NULL)
exit(0);
L->next=NULL;
return L;
}
void add_repeal(int xint yint typerepeal *L) //添加节点(采用带头结点的头插入)
{
struct repeal *p;
p=(repeal*)malloc(sizeof(repeal));
p->x=x;
p->y=y;
p->type=type;
p->next=L->next;
L->next=p;
}
void five_repeal() //悔棋实现函数
{
repeal *L;
L=(repeal*)malloc(sizeof(repeal));
if(L==NULL)
exit(0);
L=RE->next;
if(L!=NULL&&L->next!=NULL)
{
for(int i=0;i<2;i++)
{
setfillcolor(BROWN); //背景填充
solidcircle(L->xL->y10); //覆盖
a[(L->x-50)/30+4][(L->y-50)/30+4]=-1;
setlinecolor(YELLOW);
line(L->x-10L->yL->x+10L->y);
line(L->xL->y-10L->xL->y+10);
L=L->next; //指针后移
Sleep(500);
}
stepcp--;
steppe--;
RE->next=L;
}
}
void five_menu() //显示菜单界面
{
IMAGE img; //定义图像变量
loadimage(&img“1.jpg“600600);
putimage(00&img);
settextstyle(5020“宋体“);
outtextxy(200400“开始游戏“);
MOUSEMSG m;
while(true)
{
m=GetMouseMsg();
if(m.uMsg==WM_MOUSEMOVE&&m.x>=200&&m.x<=360&&m.y>=400&&m.y<=450)
{
setlinecolor(YELLOW);
rectangle(200400360450);
}
if(m.uMsg==WM_LBUTTONDOWN&&m.x>=200&&m.x<=360&&m.y>=400&&m.y<=450)
{
cleardevice(); //清除视图
Sleep(500);
five_qp(); //棋盘界面函数
break;
}
if(!(m.x>=200&&m.x<=360&&m.y>=400&&m.y<=450)) //当鼠标移开时覆盖掉上一条的黄色边框
{
setlinecolor(BLACK);
rectangle(200400360450);
}
}
}
void five_qp() //打印棋盘
{
setlinecolor(YELLOW);
for (int i = 50; i <= 470; i += 30)
{
line(i 50 i 470);
line(50 i 470 i);
}
settextstyle(1610“宋体“);
outtextxy(50050“电脑步数:“);
outtextxy(500420“玩家步数:“);
outtextxy(520200“新游戏“);
outtext
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 156102 2019-01-24 10:59 五子棋\1.jpg
文件 33707 2019-01-26 21:11 五子棋\五子棋.cpp
相关资源
- C语言课程设计代码学生成绩管理系统
- c语言,二叉树,前中后,递归,非递
- SM3算法IP核
- 华为公司c语言编程规范
- C语言课程设计景区管理系统
- Linux环境下——C语言聊天室项目
- 《基于Linux的设备分配及磁盘调度》
- 五子棋实训报告c语言
- 数据结构与算法c语言 严蔚敏 代码实
- C++学习路线视频全套
- 用C语言实现FFT算法的编写,可与DFT时
- window c语言编写的多线程的Socket局域网
- IPMSG飞鸽传书源代码,linux-c语言,有
- C语言实现CFOP解魔方算法
- 快速傅里叶算法FFTc语言实现
- Linux下c语言实现对文本内容的三种输
- 贪吃蛇 C语言程序
- 汉诺塔C语言源程序
- 矩阵相乘c语言编程
- 数据结构c语言实现严蔚敏版
- C语言解决哲学家就餐问题
- 捷联惯性导航C语言实现
- DTW算法 C语言代码
- rsa加密解密算法C语言代码
- FFT 和IFFT基二的C语言和MATLAB实现
- 超级效率的FFT的代码(C语言)
- 灰度预测模型C语言源代码
- C语言实现二值图像连通区域标记,可
- SM2/SM3算法C语言实现
- 用C语言实现异质链表
评论
共有 条评论