📄
字号:
break;
case WHITE:
drawone(hdcMem,xx,yy,REALWHITE);
break;
case ORANGE:
drawone(hdcMem,xx,yy,REALORANGE);
break;
}
xx+=25;
}
yy+=25;xx=0;
}
SetTextColor(hdc,RGB(0,255,0));
SetBkColor(hdc,RGB(0,0,0));
wsprintf(test,L"%d ",point);
wsprintf(cla,L"%d ",classes);
wsprintf(ctime,L"%d ",classtime/10);
TextOut(hdc,365,260,test,10);
TextOut(hdc,365,320,cla,2);
TextOut(hdc,365,380,ctime,4);
BitBlt(hdc,20,20,xlong*Wone,ylong*Hone,hdcMem,0,0,SRCCOPY);
ReleaseDC(hWnd,hdc);///
DeleteObject(brush);///
}
void drawbackground(HWND hWnd)
{
HDC hdc=GetDC(hWnd);
SetBkColor(hdc,RGB(0,0,0));
SetTextColor(hdc,RGB(0,0,255));
TextOut(hdc,346,20,L"NEXT",4);
TextOut(hdc,346,230,L"POINTS",6);
TextOut(hdc,346,290,L"CLASS",5);
TextOut(hdc,340,350,L"LEFT TIME",9);
ReleaseDC(hWnd,hdc);
drawrect(hWnd,RGB(100,100,100),6,16,16,24+xlong*Wone,24+ylong*Hone);
drawrect(hWnd,RGB(100,100,100),6,346,46,354+3*Wone,54+4*Hone);
}
void drawrect(HWND hWnd,int color,int wilth,int x1,int y1,int x2,int y2)
{
HDC hdc=GetDC(hWnd);//
HPEN pen=CreatePen(BS_SOLID ,wilth,color);//
SelectObject(hdc,pen);
MoveToEx(hdc,x1,y1,NULL);
LineTo(hdc,x2,y1);
MoveToEx(hdc,x2,y1,NULL);
LineTo(hdc,x2,y2);
MoveToEx(hdc,x2,y2,NULL);
LineTo(hdc,x1,y2);
MoveToEx(hdc,x1,y2,NULL);
LineTo(hdc,x1,y1);
DeleteObject(pen);///
ReleaseDC(hWnd,hdc);///
}
void drawone(HDC hdc,int x,int y,int color)
{
LOGBRUSH b;
HBRUSH brush;
RECT r;
r.bottom=y+24;
r.left=x+1;
r.right=x+24;
r.top=y+1;
b.lbColor=color;
b.lbStyle=BS_SOLID;
b.lbHatch=HS_HORIZONTAL;
brush=CreateBrushIndirect(&b);//
FillRect(hdc,&r,brush);
DeleteObject(brush);///
}
void begin()
{
srand(time(NULL));
refurbish();
point=0;
classes=1;
nowx=0;
nowy=0;
classtime=upclasstime*classes;
for (int y=0;y<ylong;y++)
{
for (int x=0;x<xlong;x++)
{
arrays[y][x]=ET;
}
}
for (int y=0;y<4;y++)
{
for (int x=0;x<3;x++)
{
nextone[y][x]=ET;
}
}
nextone[1][1]=rand()%4;
nextone[2][1]=rand()%4;
}
//向下移动一个
void movedown(int x,int y)
{
if (arrays[y+1][x]==ET&&y<ylong-1)
{
arrays[y+1][x]=arrays[y][x];
arrays[y][x]=ET;
if (y>0&&arrays[y-1][x]!=ET)
{
movedown(x,y-1);
}
}
}
//变换
void change()
{
int n;
n=arrays[nowy][nowx];
arrays[nowy][nowx]=arrays[nowy-1][nowx];
arrays[nowy-1][nowx]=n;
}
//左移
void lmove()
{
if (nowx>0&&arrays[nowy][nowx-1]==ET&&arrays[nowy-1][nowx-1]==ET)
{
arrays[nowy][nowx-1]=arrays[nowy][nowx];
arrays[nowy-1][nowx-1]=arrays[nowy-1][nowx];
arrays[nowy-1][nowx]=ET;
arrays[nowy][nowx]=ET;
nowx--;
}
}
//右移
void rmove()
{
if (nowx<xlong-1&&arrays[nowy][nowx+1]==ET&&arrays[nowy-1][nowx+1]==ET)
{
arrays[nowy][nowx+1]=arrays[nowy][nowx];
arrays[nowy-1][nowx+1]=arrays[nowy-1][nowx];
arrays[nowy-1][nowx]=ET;
arrays[nowy][nowx]=ET;
nowx++;
}
}
void refurbish()
{
for (int i=0;i<ylong;i++)
{
for (int j=0;j<xlong;j++)
{
trace[i][j]=no;
}
}
}
//removeall
void removeall()
{
int num=0,doubles=0;
while (1)
{
refurbish();
int hadremove=no;
for (int y=0;y<ylong;y++)
{
for (int x=0;x<xlong;x++)
{
if (arrays[y][x]!=ET&&trace[y][x]==no)
{
deep=0;
find(x,y);
if (deep>=4)
{
doubles++;
num+=deep;
hadremove=yes;
remove(x,y);
}
}
}
}
for (int y=0;y<ylong;y++)
{
for (int x=0;x<xlong;x++)
{
if (arrays[y][x]!=ET&&arrays[y+1][x]==ET&&trace[y+1][x]==removed)
{
movedown(x,y);
}
}
}
if (no==hadremove)
{
break;
}
}
point+=num*doubles;
}
void find(int x,int y)
{
trace[y][x]=fond;
deep++;
if (y>0&&arrays[y-1][x]==arrays[y][x]&&trace[y-1][x]==no)
{
find(x,y-1);
}
if (x<xlong-1&&arrays[y][x+1]==arrays[y][x]&&trace[y][x+1]==no)
{
find(x+1,y);
}
if (y<ylong-1&&arrays[y+1][x]==arrays[y][x]&&trace[y+1][x]==no)
{
find(x,y+1);
}
if (x>0&&arrays[y][x-1]==arrays[y][x]&&trace[y][x-1]==no)
{
find(x-1,y);
}
}
void remove(int x,int y)
{
trace[y][x]=removed;
if (y>0&&arrays[y-1][x]==arrays[y][x]&&trace[y-1][x]==fond)
{
remove(x,y-1);
}
if (x<xlong-1&&arrays[y][x+1]==arrays[y][x]&&trace[y][x+1]==fond)
{
remove(x+1,y);
}
if (y<ylong-1&&arrays[y+1][x]==arrays[y][x]&&trace[y+1][x]==fond)
{
remove(x,y+1);
}
if (x>0&&arrays[y][x-1]==arrays[y][x]&&trace[y][x-1]==fond)
{
remove(x-1,y);
}
arrays[y][x]=ET;
}
int buildnew()
{
for (int j=0;j<ylong;j++)
{
if (arrays[0][j]!=ET)
{
return(no);
}
}
nowy=1;
nowx=4;
arrays[nowy][nowx]=nextone[2][1];
arrays[nowy-1][nowx]=nextone[1][1];
nextone[2][1]=rand()%(classes+3);
nextone[1][1]=rand()%(classes+3);
//arrays[nowy][nowx]=RED;
//arrays[nowy-1][nowx]=RED;
draw(hwndwindow);
drawnext(hwndwindow);
return(yes);
}
void drawnext(HWND hWnd)
{
HDC hdc=GetDC(hWnd);//
HBRUSH brush;
RECT rect;
LOGBRUSH b;
b.lbColor=RGB(0,0,0);
b.lbStyle=BS_SOLID;
b.lbHatch=HS_HORIZONTAL;
rect.bottom=500;
rect.left=0;
rect.right=500;
rect.top=0;
SelectObject(hdcMem,bm);
brush=CreateBrushIndirect(&b);//
FillRect(hdcMem,&rect,brush);
int xx=0,yy=0;
for (int y=0;y<4;y++)
{
for (int x=0;x<3;x++)
{
switch(nextone[y][x])
{
case ET:
drawone(hdcMem,xx,yy,RGB(0,0,0));
break;
case RED:
drawone(hdcMem,xx,yy,REALRED);
break;
case GREEN:
drawone(hdcMem,xx,yy,REALGREEN);
break;
case YELLOW:
drawone(hdcMem,xx,yy,REALYELLOW);
break;
case BLUE:
drawone(hdcMem,xx,yy,REALBLUE);
break;
case LIGHTRED:
drawone(hdcMem,xx,yy,REALLIGHTRED);
break;
case GRAY:
drawone(hdcMem,xx,yy,REALGRAY);
break;
case BROWN:
drawone(hdcMem,xx,yy,REALBROWN);
break;
case AMETHYST:
drawone(hdcMem,xx,yy,REALAMETHYST);
break;
case WHITE:
drawone(hdcMem,xx,yy,REALWHITE);
break;
case ORANGE:
drawone(hdcMem,xx,yy,REALORANGE);
break;
}
xx+=25;
}
yy+=25;xx=0;
}
BitBlt(hdc,350,50,3*Wone,4*Hone,hdcMem,0,0,SRCCOPY);
ReleaseDC(hWnd,hdc);///
DeleteObject(brush);
}
void win(HWND hWnd)
{
HDC hdc=GetDC(hWnd);
for (int x=20;x<20+xlong*Wone;x++)
{
for (int y=20;y<20+ylong*Hone;y++)
{
SetPixel(hdc,x,y,RGB(x,y,x*y,));
}
}
SetBkColor(hdc,RGB(0,0,0));
SetTextColor(hdc,RGB(255,0,0));
TextOut(hdc,100,230,L"YOU WIN",7);
ReleaseDC(hWnd,hdc);
}
void over(HWND hWnd)
{
HDC hdc=GetDC(hWnd);
for (int x=20;x<20+xlong*Wone;x++)
{
for (int y=20;y<20+ylong*Hone;y++)
{
SetPixel(hdc,x,y,RGB(x,y,x*y,));
}
}
SetBkColor(hdc,RGB(0,0,0));
SetTextColor(hdc,RGB(255,0,0));
TextOut(hdc,100,230,L"YOU LOST",8);
ReleaseDC(hWnd,hdc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -