#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include "iostream"
#include "iomanip"
#include"graphics.h"   //延迟输出函数 Sleep() 头文件
#include"conio.h"
#include"time.h"
#include<iostream>
#include"stdio.h"
using namespace std;
void broke()    //画面输出函数,可以删除
{
initgraph(640,480);
setbkcolor(BLACK);
cleardevice();
int i;

for(i=480;i>=220;i--)
{
setlinecolor(RGB(225,i,0));
setfillstyle(BS_SOLID);
setfillcolor(RGB(225,i,0));
fillcircle(320,i,10);
Sleep(i/10-21);
setlinecolor(BLACK);
setfillstyle(BS_SOLID);
setfillcolor(BLACK);
fillcircle(320,i,10);
}

setfillcolor(MAGENTA);
solidcircle(320,200,100);
Sleep(500);
setfillcolor(BLACK);
solidcircle(320,200,400);

int x,y;
char ch;
srand(time(0));
while(1)
{
for(i=1;i<150;i++)
{
x=rand()%300;
y=rand()%450;
if(x<150) x=150+x%80;
if(y<230) y=290+y%50;
setlinecolor(RGB(y-100,y+x%20,100+i*2));
circle(y,x,100);
setlinecolor(RGB(y+x%20,100+i*2,y-100));
circle(y,x,100);
}
Sleep(500);
setfillcolor(BLACK);
solidcircle(320,200,300);

for(i=1;i<150;i++)
{
x=rand()%300;
y=rand()%450;
if(x<150) x=150+x%80;
if(y<230) y=290+y%50;
setlinecolor(RGB(y-100,y+x%20,100+i*2));
circle(y,x,100);
setlinecolor(RGB(y+x%20,100+i*2,y-100));
circle(y,x,100);
}
}
getch();
closegraph();
}
char a[23][23]; //
//int record_x[20]; int record_y[20]; 阔以由此扩展复盘功能
void cint(); //
void out_look(); //棋盘界面输出函数

void out_start() //棋盘界面初始化
{
int i,j;
for(i=0;i<=22;i++)
for(j=0;j<=22;j++)
a[i][j]='-';
}
int check(char ch) //五子连棋判断
{
int i,j,k=0;
for(i=1;i<=20;i++) //横向
for(j=1;j<=20;j++)
{
if(a[i][j]==ch) k++;
if(a[i][j]=='-') k=0;
if(k==5) return 1;
}
k=0;

for(i=1;i<=20;i++) //竖向
for(j=1;j<=20;j++)
{
if(a[j][i]==ch) k++;
if(a[j][i]=='-') k=0;
if(k==5) return 1;

}
k=0;

for(j=1,i=1;j<=20;j++,i++) //右倾
{
if(a[i][j]==ch) k++;
if(a[i][j]=='-') k=0;
if(k==5) return 1;
}
k=0;

for(i=1,j=20;i<=20;i++,j--) //左倾
{
if(a[i][j]==ch) k++;
if(a[i][j]=='-') k=0;
if(k==5) return 1;
}

return 0;
}

void cls(int x) //清屏和延迟输出函数
{
Sleep(x);
system("cls");
}

void end(char ch[]) //获胜输出函数
{
printf("恭喜%s获得胜利!!!",ch);
cls(1500);
cout<<"是否再对弈一局?(y/n)";
char ask;
cin>>ask;
if(ask=='y') {out_start(); out_look(); cint();}
else broke();
}

void out_head() //游戏最初提示输出函数
{

cout<<"一起来下棋吧!";
}
int out_ok() //开始指令接受函数
{
out_head();
cout<<"\nOK?(y/n)\n";
fflush(stdin);
char a=getchar();
if(a=='y') { cls(500) ; return 1;}
if(a=='n') {broke();return 0;}
else {printf("输出错误,请重新输入"); cls(500); out_ok();}
}

void out_look() //棋盘输出
{
int i,j;
for(i=0;i<=20;i++)
cout<<setw(3)<<setfill(' ')<<i;
cout<<endl;

for(i=1;i<=20;i++)
{
cout<<setw(3)<<setfill(' ')<<i;
for(j=1;j<=20;j++)
cout<<setw(3)<<setfill(' ')<<a[i][j];
cout<<endl;
}
}

int out_check(char temp)
{
if(temp!='-')
{
cout<<"对不起,你不能在此落子,请重新输入";
return 1;
}
return 0;
}

void out_down(char aa[],char k) //落子辅助函数
{
int x,y;
printf("%s着棋:\n选择横轴:",aa);
cin>>x;
cout<<"\n选择竖轴:";
cin>>y;

if(x>20||y>20||x<=0||y<=0)
{
cout<<"\n对不起,你的落子超出棋盘范围,请重新输入";
cls(1200);
out_look();
out_down(aa,k);
}

if(out_check(a[x][y])==1)
{
cls(1000);
out_look();
out_down(aa,k);
}
else
{
a[x][y]=k;
cls(100);
out_look();
}
return;
}
void cint() //落子主控函数
{
char aa[5]="蓝方",bb[5]="红方";
char x='*',y='#';

while(1)
{
out_down(aa,x);
if(check(x)==1) {end(aa); break;}
out_down(bb,y);
if(check(y)==1) {end(bb); break;}
}
return;
}
int main(void) //主函数
{
out_start();
int ask=out_ok();
if(ask==1) {cls(500); out_look(); cint();}
return 0;
}

附:由于VC和TC的差异,如果由于头文件<graphsic.h>不存在,可以去http://www.easyx.cn/  下载EASY X

转载于:https://www.cnblogs.com/xyfs/p/5495820.html

VC下的人人对弈五子棋(dos)相关推荐

  1. 利用pygame实现人人对弈五子棋(有其他相关功能)

    代码如下:代码中注释非常清楚,应该可以自行看明白. 本文文章末尾已经将需要的文件,图片以及音乐给大ga分享了,自行取用. 代码基于@"在校学渣一枚"博主的文章https://blo ...

  2. C语言五子棋人人对弈学习笔记

    C语言编写五子棋人人对弈学习笔记 1.头文件#include <conio.h> #include <conio.h>是一个控制输出的头文件. 包含以下函数:textbackg ...

  3. 五子棋人人对弈——Easyx的第一次使用

    从进入计算机专业到现在快一年的时间,没有对C语言等课程多深入的学习,仅仅是掌握了一点皮毛.正好老师让用C语言写一个五子棋小游戏,采用EasyX做界面,我就试着完成五子棋的一些基本功能,也算是自己进行的 ...

  4. VC 下 64bit 整数的显示和读取格式化字串

    2019独角兽企业重金招聘Python工程师标准>>> VC 下 64bit 整数的显示和读取格式化字串是: %I64d 转载于:https://my.oschina.net/moq ...

  5. 菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序

    最近打算自学数据结构,于是就在网上淘了两本书,一本是清华大学出版社出的严蔚敏老师的数据结构,一本是程杰的大话数据结构.直接看严老师的那一本实再是很吃力.于是我就先看大话的内容后,在深入的看严老师的书. ...

  6. VC++ 下使用QT初步入门学习

    初步了解,VC++下使用QT,一种方式是,用QT的工具或命令行,生成VS的工程,然后导入VC进行构建:下面来看一下,下载一个QT免费试用版本: 安装之后,先设置一下环境变量:test3目录下放一个示例 ...

  7. VC++下命名管道编程的原理及实现

    概述 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行 ...

  8. VC++下的OpenGL编程

    1.值得记住的约定 一般情况下,VC++下进行OpenGL应用程序开发步骤如下: 1.通过PIXELFORMATDESCRIPTOR结构设置备注描述表DC的像素格式属性. 2.创建渲染描述表RC,并与 ...

  9. VC下调用x264进行视频编码,

    4.X264.c中,h = x264_encoder_open( param ) )是用来复制参数并验证参数的有效性,在CCS下应该是不需要验证参数的(参数都是在程序中设置好的),因此此处只作复制参数 ...

  10. VC下加载多种格式图片的方法总结

    From: http://www.cnblogs.com/Daywei/archive/2011/03/19/1988848.html 尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元 ...

最新文章

  1. 20~40K | 迁移科技招3D视觉、深度学习算法工程师等十大岗位
  2. 开发日记-20190407
  3. 快手基于RocketMQ的在线消息系统建设实践
  4. docker wsl2启动不了_在window上安装docker的方法
  5. js <->java 时区处理
  6. 知识图谱中的关系推理
  7. java byte转十六进制_Python 十六进制hexbytesstr之间的转换和Bcc码的生成
  8. 分析robin的“seo培训”网站
  9. etal斜体吗 参考文献_期刊论文的参考文献格式
  10. FreeSwitch双轨录音
  11. matlab建立机器人模型,matlab 机器人工具箱8-通过URDF建立机器人模型
  12. 【SeedCoder2015年 热身题5 搜索】上上下下ABAB (题目+答案)
  13. SQL语句 日期查询
  14. 本地开发公众号获取code
  15. -XX:+PrintHeapAtGC参数使用了解
  16. 什么是大数据?如何入门学习大数据?
  17. 惠普HP Prime可编程计算器之工程测量计算
  18. 选择短信平台加快提升医院部门信息化管理
  19. 拼多多开放平台订单详情接口解析
  20. 联通SGIP1.2短信接口 Java版实现 总结 2013-10-23测试通过

热门文章

  1. SpringBoot建立数据库连接JdbcTemplate和Mybatis两种方式
  2. Linux服务器异常关机,重启启动后weblogic无法启动
  3. Win10网络连接面板中突然出现空白一片的解决办法
  4. libevent eventbuffer读写水位思考
  5. 39. Use private inheritance judiciously
  6. Hibernate之session的管理方式
  7. mysql8 docker镜像源_Docker 搭建 MySQL 8版本
  8. 将长方形木框拉成平行四边形_微课|人教版五年级数学上册6.1平行四边形的面积(P8690)...
  9. python no such file or directory_Python3 no such file or directory
  10. iphone电池怎么保养_手机电池不耐用怎么办啊?平时要怎么保养呢?我来告诉你...