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)
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
///////////////////////////////////////////////////////////////////////////// // 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 /////////////////////////////////////////////////////////////////////////// |