Juego Barcos

Barcos para windows

Pc actual. convoco un concurso para hace un juego en un
mes 

Esto casi provoca el abandono de mi actual esposa

Por lo menos, gané el concurso (PC-Actual Octubre 1994)



Descargar

Comentarios autocríticos

  • Este es un lamentable ejemplo de un programa escrito en
    Visual C++ , pero que no sacaba partido a los conceptos de orientación
    a objeto.
  • Es más un programa estructurado que se a encajado en una aplicación
    windows.
  • Aun ahora, mucha gente cree que por programar en Visual C++, programa
    Orientado a Objeto. 
  • Quien no entiende en libro Design Patterns (Gamma, Helm,
    Johnson y Vlissides) …. le queda mucho por aprender…

Como curiosidad a este programa, aquí aprendía a hacer
Sprites (optimizar velocidad pintando objetos en memoria y luego
volcando a pantalla) en Juegos bajo Windows

/////////////////////////////////////////////////////////////////////////////

// Bitmap transparente. Programación orientada a objetos //

// Modulo1 //

/////////////////////////////////////////////////////////////////////////////

COLORREF color_transparente;

CBitmap BitmapAnd1, BitmapAnd2, BitmapAnd3, BitmapAnd4;

CBitmap *BitmapAnti1, *BitmapAnti2, *BitmapAnti3, *BitmapAnti4;

CDC Cdc1, Cdc2, Cdc3, Cdc4, Cdc5;

CPoint dimension;

OnPrepareDC(&Cdc1);

OnPrepareDC(&Cdc2);

OnPrepareDC(&Cdc3);

OnPrepareDC(&Cdc4);

OnPrepareDC(&Cdc5);

 

Cdc4.CreateCompatibleDC(&micdc);

Cdc4.SelectObject(&Barcos[tama]);

dimension.x = BarcosRect[i].right-BarcosRect[i].left;

dimension.y = BarcosRect[i].bottom-BarcosRect[i].top;

Cdc2.CreateCompatibleDC(&micdc);

Cdc3.CreateCompatibleDC(&micdc);

Cdc1.CreateCompatibleDC(&micdc);

Cdc5.CreateCompatibleDC(&micdc);

BitmapAnd1.CreateBitmap(dimension.x,dimension.y,1,1,NULL);

BitmapAnd2.CreateBitmap(dimension.x,dimension.y,1,1,NULL);

BitmapAnd3.CreateCompatibleBitmap(&micdc,dimension.x,dimension.y);

BitmapAnd4.CreateCompatibleBitmap(&micdc,dimension.x,dimension.y);

BitmapAnti1 = Cdc2.SelectObject(&BitmapAnd1);

BitmapAnti2 = Cdc3.SelectObject(&BitmapAnd2);

BitmapAnti3 = Cdc1.SelectObject(&BitmapAnd3);

BitmapAnti4 = Cdc5.SelectObject(&BitmapAnd4);

Cdc5.BitBlt(0,0,dimension.x,dimension.y,&Cdc4,0,0,SRCCOPY);

color_transparente = Cdc4.SetBkColor(RGB(255,255,255));

Cdc3.BitBlt(0,0,dimension.x, dimension.y,&Cdc4,0,0,SRCCOPY);

Cdc4.SetBkColor(color_transparente);

Cdc2.BitBlt(0,0,dimension.x,dimension.y,&Cdc3,0,0,NOTSRCCOPY);

Cdc1.BitBlt(0,0,dimension.x,dimension.y,&micdc,BarcosRect[i].left,BarcosRect[i].top,SRCCOPY);

Cdc1.BitBlt(0,0,dimension.x,dimension.y,&Cdc3,0,0,SRCAND);

Cdc4.BitBlt(0, 0, dimension.x, dimension.y, &Cdc2, 0, 0, SRCAND);

Cdc1.BitBlt(0, 0, dimension.x, dimension.y, &Cdc4, 0, 0, SRCPAINT);

micdc.BitBlt(BarcosRect[i].left,BarcosRect[i].top,dimension.x,dimension.y,&Cdc1,0,0,SRCCOPY);

Cdc4.BitBlt(0,0,dimension.x,dimension.y,&Cdc5,0,0,SRCCOPY);

(Cdc2.SelectObject(BitmapAnti1))->DeleteObject();

(Cdc3.SelectObject(BitmapAnti2))->DeleteObject();

(Cdc1.SelectObject(BitmapAnti3))->DeleteObject();

(Cdc5.SelectObject(BitmapAnti4))->DeleteObject();

//////////////////////////////////////////////////////////////////////////

// Fin del cuerpo del bitmap transparente

///////////////////////////////////////////////////////////////////////////