问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求c++编写连连看教程

发布网友 发布时间:2022-04-27 06:20

我来回答

1个回答

热心网友 时间:2022-06-27 13:58

//ASDW控制方向,空格键选择。
#include <iostream>
#include "Cross.h"

using namespace std;

int main()
{
CCross cs;
char ch=0;
char y=0,x=0;
cs.ReDraw();
do
{
switch(ch)
{
case 'a':
case 'A':
y--;
cs.SetPoint(x,y);
break;
case 's':
case 'S':
x++;
cs.SetPoint(x,y);
break;
case 'd':
case 'D':
y++;
cs.SetPoint(x,y);
break;
case 'w':
case 'W':
x--;
cs.SetPoint(x,y);
break;
case ' ':
cs.SetChoose();
break;
default:
continue;
}
cs.ReDraw();
cs.GetPoint(&x,&y);
}while(ch=getch()());
return 0;
}
// Cross.h: interface for the CCross class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CROSS_H__D8866531_AEF2_4461_B3C6_468E71CB8F6E__INCLUDED_)
#define AFX_CROSS_H__D8866531_AEF2_4461_B3C6_468E71CB8F6E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include<iostream>
#include<conio.h>
#include"windows.h"
#include"time.h"

using namespace std;

#define LEN 10
#define Sort 6

class CCross
{
public:
void GetPoint(char *nX,char *nY);
BOOL GetChoose();
void SetChoose();
void SetPoint(char X,char Y);
int ReDraw(BOOL ck=true);
CCross();
virtual ~CCross();
void SetColor(unsigned int a);
private:
int Rad();
void Drop();
void Check();
unsigned char map[LEN][LEN];
unsigned char x,y;
unsigned count;
unsigned OneceCount;
BOOL choose;
};

#endif // !defined(AFX_CROSS_H__D8866531_AEF2_4461_B3C6_468E71CB8F6E__INCLUDED_)

// Cross.cpp: implementation of the CCross class.
//
//////////////////////////////////////////////////////////////////////

#include "Cross.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCross::CCross()
{
for(int i=0;i<LEN;i++)
for(int j=0;j<LEN;j++)
map[i][j]=Rad();
x=0;
y=0;
count=0;
OneceCount=0;
choose=false;
srand()((unsigned)time(NULL));
}

CCross::~CCross()
{

}

void CCross::SetColor(unsigned int a)//设置文本颜色
{
switch(a)
{
case 0: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE|BACKGROUND_GREEN)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);break;//White
case 1: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);break;//Yellow
case 2: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED);break;//Red
case 3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_GREEN);break;//Green
case 4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_BLUE);break;//Blue
case 5:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);break;//Pred
case 6:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE)
,FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);break;//Cyan
}
}

int CCross::ReDraw(BOOL ck)
{
if(ck)
Check();
system("cls");
SetColor(0);
cout<<"┏━";
for(int i=0;i<LEN-1;i++)
cout<<"┳━";
cout<<"┓"<<endl;
for(i=0;i<=(LEN-1)*2;i++,putchar('\n'))
{
if(i%2==0)
{
for(int j=0;j<=LEN*2;j++)
{
if(j%2==0)
{
SetColor(0);
cout<<"┃";
}
else if(x==i/2 && y==j/2)
{
SetColor(map[x][y]%10);
choose ? printf("★") : printf("○");
}
else
{
SetColor(map[i/2][j/2]%10);
switch(map[i/2][j/2]/10)
{
case 0:
printf("●");
break;
case 4:
printf("■");
break;
case 5:
printf("◆");
break;
case 6:
printf("▲");
break;
case 7:
printf("▼");
break;
case 8:
printf("▓");
break;
case 9:
printf("※");
break;
case 10:
printf("卍");
break;
case 11:
printf("卐");
break;
}
}
}
}
else
{
SetColor(0);
cout<<"┣━";
for(int k=0;k<LEN-1;k++)
cout<<"╋━";
cout<<"┫";
}
}
cout<<"┗━";
for(i=0;i<LEN-1;i++)
cout<<"┻━";
cout<<"┛"<<endl;
cout<<"x="<<(short)x<<"y="<<(short)y<<endl;
cout<<"count="<<count<<"Onece="<<OneceCount<<endl;
return 0;
}

void CCross::SetPoint(char X,char Y)
{
unsigned char tmp;
char m,n;
m=(X+LEN)%LEN;
n=(Y+LEN)%LEN;
if(choose)
{
if((x-m)*(x-m)+(y-n)*(y-n)>1)
{
SetColor(2);
cout<<"不能移动!"<<endl;
choose=false;
cout<<"x="<<(short)x<<"y="<<(short)y<<endl;
cout<<"m="<<(short)m<<"n="<<(short)n<<endl;
Sleep(2000);
return;
}
tmp=map[x][y];
map[x][y]=map[m][n];
map[m][n]=tmp;
Check();
if(OneceCount==0)
{
SetColor(2);
cout<<"不能移动!"<<endl;
tmp=map[x][y];
map[x][y]=map[m][n];
map[m][n]=tmp;
Sleep(2000);
}
count+=OneceCount;
choose=false;
OneceCount=0;
}
else
{
x=m;
y=n;
ReDraw();
}
}

void CCross::Check()
{
int i,j,k,m,n;
BOOL ck=false;
for(k=LEN;k>2;k--)
for(i=0;i<LEN;i++)
for(j=0;j<LEN-k+1;j++)
{
for(n=1,m=map[i][j]%10;j+n<LEN,m==map[i][j+n]%10;n++)
m=map[i][j+n]%10;
if(n<3)
continue;
else if(n==3)
m=j;
else
{
map[i][j]=n*10+m;
m=j+1;
}
for(;m<j+k;m++)
{
for(n=i;n>0;n--)
map[n][m]=map[n-1][m];
map[0][m]=Rad();
}
ck=true;
OneceCount++;
}
for(k=LEN;k>2;k--)
for(i=0;i<LEN-k+1;i++)
for(j=0;j<LEN;j++)
{
for(n=1,m=map[i][j]%10;i+n<LEN,m==map[i+n][j]%10;n++)
m=map[i+n][j]%10;
if(n<3)
continue;
else if(n==3)
m=i;
else
{
map[i][j]=n*10+m;
m=i+1;
}
for(;m<i+k;m++)
{
for(n=j;n>0;n--)
map[m][n]=map[m][n-1];
map[m][0]=Rad();
}
ck=true;
OneceCount++;
}
if(ck)
Check();
if(!choose)
{
OneceCount=0;
}
}

void CCross::Drop()
{
int i,j,k,p;
for(i=0;i<LEN;i++)
for(j=LEN-1;j>0;j--)
if(map[j][i]==0)
{
for(k=j,p=1;k-p>0;)
{
if(map[k-p][i]==0)
{
p++;
continue;
}
map[k][i]=map[k-p][i];
k--;
}
for(;p>0;p--)
map[p-1][i]=Rad();
}
}

void CCross::SetChoose()
{
choose=!choose;
}

BOOL CCross::GetChoose()
{
return choose;
}

int CCross::Rad()
{
return rand()()%Sort+1;
}

void CCross::GetPoint(char *nX,char *nY)
{
*nX=x+LEN;
*nY=y+LEN;
}追问可不可以给个注释。。这个是用什么做的?MFC?win32控制台?win32窗口?c++win32控制台?

追答c++win32

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
YY聊天中哪些语音的会不会作为文件存下来 2023谷雨节气的含义 谷雨三候是什么 我老公欠债,外遇,我想离婚,怎么办 ...我提供了我的姓名,出生年月日,还有工作地点,会出什么事吗... 刚刚接到一个诈骗电话,问我要了我的姓名和出生年月日,会不会利用... 不小心接到骗子的电话,还告诉了我的姓名和出生年月日,要不要紧啊... 知道了姓名和出生年月日,能拿来作案吗? WOW安装要CD 是什么问题? 急急急、、、魔兽世界用盘安装时老要CD片 时怎么回事 取消以后就安装不... 每次下载魔兽世界安装中途都会断掉,要求插入什么CD,然后出现这么一段文... 怎样学好c语言?大虾们指导下! 跪求C++2010visual studio 教程 linux 怎样编译cpp程序例如hello.cpp。等等,很简单的源程序文件,_百度... C++制作游戏的大概过程? 小孩 看病 医保怎么报销 小孩生病住院社保怎么报销 求C++入门教程 儿童看病怎么报销 冰箱冷冻室结冰很严重怎么办? 小弟正在学C++,请问哪位高手知道如何入门呢? 宝宝看病医保怎么报销 多大的小孩可以吃海参 作为新郎的师傅和新郎新娘的媒人,证婚词怎么写啊!麻烦大神帮忙写一份证婚词,谢谢! 结婚证婚词怎么写,应该注意什么? 婚礼上证婚人证婚词该怎么说? 征婚词怎么写? 给一对新人写证婚词,怎么写 请问如何写一份证婚词? 证婚词该怎么写? 证婚词怎么写? Cpp学习完后想编一些游戏和小程序请问学什么好 c++ cpp格式 文件保存问题 怎么在DOS下编译C++程序? 3ds.cpp main.cpp怎么用 华为手机如何关闭备份 一年出三次险会上浮吗 报3次险下年保费增加多少 车身俭保险出了三次俭,要涨多少? 车险三次出险明年要加多少 怎么取消苹果6手机上的备选键盘 如何关掉笔记本上弹出来的备份的手机通讯录 黄闷鸡为什么叫&quot;黄闷&quot;? 传统黄闷鸡块做法? 手机提示紧急备份怎么样取消掉 黄闷鲫鱼的做法步骤图,黄闷鲫鱼怎么做好吃 黄闷鸡盖饭做法 黄闷狗肉的做法 黄闷酱的作用 黄闷武昌鱼的做法 黄焖酱是什么酱