• 大小: 158KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: C/C++
  • 标签: c语言  

资源简介

能进行简单的人机对战,有简单的图形界面,添加了图片

资源截图

代码片段和文件信息

#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

评论

共有 条评论