(3)游戏随机选择方块模块
在游戏中,每一个下落的方块都是随机的,包括颜色,形状。 实现此功能相关代码如下: void CGameDlg::Shape() { }
- -
int line=18; int rr=4; CDC *pDC=GetDC(); ASSERT(pDC!=NULL);
CPen pen;
pen.CreatePen (PS_SOLID,1,RGB(0,0,0)); CBrush brush1,brush2,brush3;
brush1.CreateSolidBrush(RGB(60,60,60)); brush3.CreateSolidBrush(RGB(0,170,0)); brush2.CreateSolidBrush(BackColor);
pDC->SelectObject (pen); pDC->SelectObject (brush1);
pDC->Rectangle(X-line,Y-line,X+M*r+line,Y+N*r+line);
int b=line*2/3,c=b-rr; pDC->SelectObject (brush3);
pDC->Rectangle(X-b,Y-b,X+M*r+b,Y+N*r+b); pDC->SelectObject (brush1);
pDC->Rectangle(X-c,Y-c,X+M*r+c,Y+N*r+c);
pDC->SelectObject (brush2);
pDC->Rectangle(X-2,Y-2,X+M*r+2,Y+N*r+2); DeleteObject(pen);DeleteObject(brush1); DeleteObject(brush2);DeleteObject(brush3);
ReleaseDC(pDC);
//外部框架
11
void CGameDlg::one(int Type, int i, int j) //某元格颜色 位置 { if(Runing==0) { OnDestroy(); return;
}
CDC *pDC=GetDC(); ASSERT(pDC!=NULL);
COLORREF color,L_color=RGB(0,0,0); switch(Type) {
case 0: color=L_color=BackColor;break; case 1: color=RGB(131,129,222); break; case 2: color=RGB(250,90,130); break; case 3: color=RGB(40,220,250); break; case 4: color=RGB(40,120,50); break; case 5: color=RGB(0,250,0); break; case 6: color=RGB(131,19,222); break; case 7: color=RGB(120,190,30); break; case 8: color=RGB(140,20,150); break; case 9: color=RGB(40,120,150); break; case 10: color=RGB(23,62,180); break; case 11: color=RGB(131,129,22); break; case 12: color=RGB(20,190,130); break; case 13: color=RGB(40,234,220); break; case 14: color=RGB(140,70,150); break; case 15: color=RGB(30,150,40); break; case 16: color=RGB(78,203,30); break; case 17: color=RGB(120,100,30); break; case 18: color=RGB(240,70,20); break; case 19: color=RGB(40,180,90); break;
case 20: color=RGB(123,62,180); break;
- -
12
case 21: color=RGB(120,0,20); break; case 22: color=RGB(0,0,250); break; case 23: color=RGB(0,250,0);
break;
case 24: color=RGB(0,250,250); break; case 25: color=RGB(250,0,0);
break;
case 26: color=RGB(250,0,250); break; case 27: color=RGB(250,250,0); break; case 28: color=RGB(250,250,250);break;
case 29: color=RGB(rand()%0,rand()%0,rand()%0); break; case 30: color=RGB(rand()%0,rand()%0,rand()%0); break; case 31: color=RGB(rand()%0,rand()%0,rand()%0); break; case 32: color=RGB(rand()%0,rand()%0,rand()%0); break; case 33: color=RGB(rand()%0,rand()%0,rand()%0); break; case 34: color=RGB(rand()%0,rand()%0,rand()%0); break; } CPen pen; CBrush brush;
pen.CreatePen(PS_SOLID,1,L_color);
brush.CreateSolidBrush (color); pDC->SelectObject(pen); pDC->SelectObject(brush);
pDC->Rectangle(X+i*r,Y+j*r,X+(i+1)*r,Y+(j+1)*r); DeleteObject(pen); DeleteObject(brush); ReleaseDC(pDC);
}
(4)游戏预览功能模块
此模块用来为游戏爱好者提供下一个方块的信息, 实现此功能相关代码如下: void CGameDlg::PreView()
//预先显示组
{
if(Runing==0)
- -
13
}
void CGameDlg::OnButton1() { }
- -
14
{ }
CTime tm=CTime::GetCurrentTime();
OnDestroy(); return;
object2.Type=(rand()+tm.GetMinute()+tm.GetSecond())%V+1; object2.x=M/2;object2.y=0;
object2.group=(tm.GetMinute()*tm.GetSecond()+rand())%7+1; ZZ2=(rand()+tm.GetDay()*tm.GetHour())?;
b0=b1=b2=b3=b4=b5=b6=b7=0; switch(object2.group) {
case 1: b2=0;b3=1;b4=1;b5=0;b6=1;b7=1; break; case 2: b2=0;b3=1;b4=0;b5=-1;b6=1;b7=-1;break; case 3: b2=0;b3=1;b4=0;b5=-1;b6=1;b7=1; break; case 4: b2=0;b3=1;b4=0;b5=2;b6=0;b7=-1; break; case 5: b2=0;b3=-1;b4=1;b5=0;b6=1;b7=1; break; case 6: b2=0;b3=1;b4=1;b5=0;b6=1;b7=-1; break; case 7: b2=0;b3=1;b4=0;b5=2;b6=1;b7=1; break; }
for(int i=0;i ChangeShape(object2); if(object2.y+b3<0||object2.y+b5<0||object2.y+b7<0||object2.y<0) object2.y=object2.y+1; if(object2.y+b3>0&&object2.y+b5>0&&object2.y+b7>0&&object2.y>0) object2.y=0; CDC *pDC = GetDC(); ASSERT(pDC != NULL); OnDraw(pDC); ReleaseDC(pDC);
相关推荐: