VC下的人人对弈五子棋(dos)
#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
VC下的人人对弈五子棋(dos)的更多相关文章
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- VC++下封装ADO类以及使用方法
操作系统:windows 7软件环境:visual studio 2008 .Microsoft SQL 2005本次目的:介绍一个已经封装的ADO类,简单说明怎么导入使用 首先声明一下,这个封装的A ...
- VC下Debug和Release区别
整理日: 2015年3月23日 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到 ...
- 在VC下显示JPEG、GIF格式图像的一种简便方法
在VC下显示JPEG.GIF格式图像的一种简便方法 一. 引言 JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛 ...
- VC下加载JPG/GIF/PNG图片的两种方法
转载自:http://blog.sina.com.cn/s/blog_6582aa410100huil.html 仅管VC有提供相应的API和类来操作bmp位图.图标和(增强)元文件,但却不支持jpg ...
- VC++下使用ADO操作数据库
VC++下使用ADO操作数据库主要要用到 _ConnectionPtr,_CommandPtr,_RecordsetPtr三个ADO对象指针,我查找了相关资料,发现网上源码很多,但是都相对凌乱,于是自 ...
- VC下如何调用控制台命令以及其他可执行文件
开始的时候想写一个基于MFC的Wifi开关控制程序,可是不知道VC中如何调用控制台命令,经过网上的学习,发现其实挺挺简单也挺好用.于是制作了一个简单的基于MFC个人助理小软件,可以点击按钮实现Wifi ...
- VC++下编译Libgeotiff(含Libtiff)
转自原文Win10+VC++下编译Libgeotiff(含Libtiff)详细图文教程 GeoTiff是包含地理信息的一种Tiff格式的文件.Libgeotiff就是一个操作GeoTiff文件的库.同 ...
- VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
VC MFC 提供的 API LoadBitmap / LoadImage 类 CBitmap 等都只能操作 BMP 位图,图标.对于其他常用的 JPG / JPEG / GIF / PNG 格式,它 ...
随机推荐
- 一名合格QA的基本素养
测试不是无脑的重复劳动.测试与开发一样,先用脑,再动手. 拒绝搬砖,关注技术: 把握需求,极致体验: 把控进度,高效沟通: 测试技术 如果你只会加班,行万里路,也只是个邮差 将程序测"好 ...
- 网络资源管理系统LANsurveyor实战体验
网络资源管理系统LANsurveyor实战体验 用于生成网络拓扑并管理网络各种设备的软件很多(例如上一篇文章展示的CiscoWorks 2000,我还介绍过开源领域的Cheops-NG),今天为大家介 ...
- 【spring 3】AOP:静态代理
一.代理的基本简介 首先,在什么时候使用代理: 在面向方面编程过程中,当需要对所有类进行某种操作(如,安全性检查,记录操作日志)时,考虑到OCP原则,我们不能在所有实现类中直接添加某些相关方法,这样一 ...
- LoadRunner用户行为模拟器 《第三篇》
用户行为模拟器简称VU,VU通过运行VU脚本模拟了用户对软件的操作行为.VU是基于网络协议的.很明显,被测服务器是通过各种各样的网络协议与客户端打交道的.VU要“骗过”被测服务器,当然就要遵守这些协议 ...
- Linux之samba搭建
参考资料: http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html
- SVN创建Tags
右键trunk,选择分支/标记... 资源库,到URL:要创建Tag的位置 Next Next ...
- Zend Studio GitHub 使用教程
这是我在开发项目时遇到的一些问题总结,目前基本实现协同开发.还有个问题是怎么才能像sf那样添加管理帐号,使用多个帐号协同开发,求教,欢迎留言讨论. 一.安装eGit插件 1. 由于zend studi ...
- HTML 5缓存机制:Cache Manifest配置实例
Cache Manifest是HTML 5的一种缓存机制,文章作者直接用博客当测试环境,虽然[color=#444444 !important]应用起来非常简单,但效果却出奇的好.缓存后的速度,简直是 ...
- C# 集合 — Hashtable 线程安全
基础知识重要吗?真的很重要. 就在笔者与同事聊天中突然同事提出一个问题,让笔都有点乱了手脚(有点夸张),题目是这样的: 问:Hashtable 是线程安全的吗? 答:…… (沉默中,Yes Or No ...
- ASP.NET MVC5 高级编程 第3章 视图
参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...