|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - mikwoc
Páginas: [1]
1
« en: Martes 12 de Abril de 2011, 11:44 »
hola soy nuevo es este foro estoy estudiando primero de informatica i este año como trabajo final nos han mandado hacer un juego i yo elegi el hundir la flota lo tengo casi acabado pero me keda unas cuantas cosas la primara i mas inportante de todas es que me coloca los barcos donde yo le digo pero cuando coloco un barco en un sitio donde hay otro barco me lo sobreescribe i me do borra el barco alguien me prodria ayudar con este problema pliss gracias aki les dejo el codigo de mi juego #include <winbgim.h> #include <stdio.h> #include <stdlib.h> /*int aleatorio_pantini (); int f; A = (rand() % 1001); return c; */ char MAT[16][16] = {'A',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Z'}; int MATEST[16][16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int MARGEN_IZQ_B=10,MARGEN_SUP_B=30,TAM_B=20,MARGEN_SUP_X,N,B,BARCO; int URX[11],ULX[11],DRX[11],DLX[11],LRX[11],LLX[11],RRX[11],RLX[11]; int URY[11],ULY[11],DRY[11],DLY[11],LRY[11],LLY[11],RRY[11],RLY[11]; int BARCOS[11] = {5,4,4,3,3,3,3,2,2,2,2}; int BARCOT[11] = {0,0,0,0,0,0,0,0,0,0,0}; char DBARCO[11]; int XX,YY,FIL,COL,SALIR=0; /*int NUMPAR = 10;*/ char CAD[80]; int MARGEN_IZQ=250,MARGEN_SUP=100,TAM=20,FILAS = 16,COLUMNAS=16,TAMLIN=2; void waitForLeftMouseClick(); void esperaclick() { clearmouseclick(WM_LBUTTONDOWN); const int DELAY = 50; int x, y; while (!ismouseclick(WM_LBUTTONDOWN)) delay(DELAY); } /*void revisar_tablero(){ NUMPAR = 0; for(int F=0;F<=15;F++){ for(int C=0;C<=15;C++){ if (MATEST[F][C] == 0) NUMPAR++; } } }*/ void dibujar_tablero(){ int F,C; for(F=0;F<=15;F++){ for(C=0;C<=15;C++){ if (MATEST[F][C] == 1) setfillstyle(1,RED); // aqui no tendria qu eser espacio en blanco si no cuando encuentre dos casillas iguales else setfillstyle(1,CYAN); bar(MARGEN_IZQ + (C * TAM),MARGEN_SUP + (F*TAM), MARGEN_IZQ + (C * TAM) + TAM,MARGEN_SUP + (F*TAM) + TAM); sprintf(CAD,"%c",MAT[F][C]); settextstyle(0,0,2); setcolor(4); setbkcolor(CYAN); outtextxy(MARGEN_IZQ + (C * TAM) + TAM/8, MARGEN_SUP + (F*TAM) + TAM/8,CAD); } } setcolor(YELLOW); setlinestyle(1,2,TAMLIN); // estilo,?,tamaño for(F=0;F<=16;F++){ line(MARGEN_IZQ,MARGEN_SUP+(F * TAM),MARGEN_IZQ + (COLUMNAS * TAM),MARGEN_SUP+(F * TAM)); } for(C=0;C<=16;C++){ line(MARGEN_IZQ+(C*TAM),MARGEN_SUP,MARGEN_IZQ+(C*TAM),MARGEN_SUP+(FILAS * TAM)); } B = 0; N = 2; MARGEN_SUP_X = MARGEN_SUP_B; while (B<11){ LLX[B] = MARGEN_IZQ_B; LLY[B] = MARGEN_SUP_X + TAM_B; LRX[B] = MARGEN_IZQ_B + TAM_B; LRY[B] = MARGEN_SUP_X + (2 * TAM_B); ULX[B] = MARGEN_IZQ_B + TAM_B; ULY[B] = MARGEN_SUP_X; URX[B] = MARGEN_IZQ_B + (2 * TAM_B); URY[B] = MARGEN_SUP_X + TAM_B; RLX[B] = MARGEN_IZQ_B + (2 * TAM_B); RLY[B] = MARGEN_SUP_X + TAM_B; RRX[B] = MARGEN_IZQ_B + (3 * TAM_B); RRY[B] = MARGEN_SUP_X + (2 * TAM_B); DLX[B] = MARGEN_IZQ_B + (TAM_B); DLY[B] = MARGEN_SUP_X + (2 * TAM_B); DRX[B] = MARGEN_IZQ_B + (2 * TAM_B); DRY[B] = MARGEN_SUP_X + (3 * TAM_B); if (BARCOT[B]==0){ setcolor(N); setfillstyle(1,N); } else{ setcolor(N); setfillstyle(2,N); } bar(LLX[B],LLY[B],LRX[B],LRY[B]); bar(ULX[B],ULY[B],URX[B],URY[B]); bar(RLX[B],RLY[B],RRX[B],RRY[B]); bar(DLX[B],DLY[B],DRX[B],DRY[B]); settextstyle(0,0,2); setcolor(N); setbkcolor(BLACK); sprintf(CAD,"%i",BARCOS[B]); outtextxy(LRX[B] + (TAM_B/8),URY[B] + (TAM_B /8),CAD); /* bar(MARGEN_IZQ_B,MARGEN_SUP_X + TAM_B,MARGEN_IZQ_B + TAM_B,MARGEN_SUP_X + (2 * TAM_B)); bar(MARGEN_IZQ_B + TAM_B,MARGEN_SUP_X,MARGEN_IZQ_B + (2 * TAM_B),MARGEN_SUP_X + TAM_B); bar(MARGEN_IZQ_B + (2 * TAM_B),MARGEN_SUP_X + TAM_B,MARGEN_IZQ_B + (3 * TAM_B),MARGEN_SUP_X + (2 * TAM_B)); bar(MARGEN_IZQ_B + (TAM_B),MARGEN_SUP_X + (2 * TAM_B),MARGEN_IZQ_B + (2 * TAM_B),MARGEN_SUP_X + (3 * TAM_B)); settextstyle(0,0,2); setcolor(N); sprintf(CAD,"4"); outtextxy(MARGEN_IZQ_B + TAM_B + (TAM_B/8),MARGEN_SUP_X + TAM_B + (TAM_B /8),CAD); */ MARGEN_SUP_X = MARGEN_SUP_X + (4 * TAM_B); N++; B++; } setfillstyle(1,RED); bar(300,700,400,750); sprintf(CAD,"SALIR"); setbkcolor(RED); setcolor(YELLOW); outtextxy(310,720,CAD); sprintf(CAD,"SELECCIONADO BARCO %2i DE %2i DIRECCION %c",BARCO,BARCOS[BARCO],DBARCO[BARCO]); outtextxy(100,600,CAD); } void detectar_barco(){ dibujar_tablero(); sprintf(CAD,"SELECCIONE UN BARCO Y DIRECCION"); outtextxy(100,50,CAD); waitForLeftMouseClick(); if(XX >= 300 and XX <= 400 and YY >= 700 and YY <= 750) SALIR = 1; else { for(B=0;B<11;B++){ if (XX >= LLX[B] and XX <= LRX[B] and YY >= LLY[B] and YY <= LRY[B]){ BARCO = B; DBARCO[B] = 'L'; } if (XX >= ULX[B] and XX <= URX[B] and YY >= ULY[B] and YY <= URY[B]){ BARCO = B; DBARCO[B] = 'U'; } if (XX >= RLX[B] and XX <= RRX[B] and YY >= RLY[B] and YY <= RRY[B]){ BARCO = B; DBARCO[B] = 'R'; } if (XX >= DLX[B] and XX <= DRX[B] and YY >= DLY[B] and YY <= DRY[B]){ BARCO = B; DBARCO[B] = 'D'; } } } sprintf(CAD,"detectar barco BARCO = %i, DIRECCION = %c XX = %i YY = %i FIL = %i COL = %i",BARCO,DBARCO[BARCO],XX,YY,FIL,COL); outtextxy(20,700,CAD); void detectar_cuadro(){ dibujar_tablero(); sprintf(CAD,"SELECCIONE UNA POSICION PARA SITUAR EL BARCO"); outtextxy(100,50,CAD); waitForLeftMouseClick(); if(XX >= 300 and XX <= 400 and YY >= 700 and YY <= 750) SALIR = 1; else { COL = ((XX - MARGEN_IZQ) / TAM); FIL = ((YY - MARGEN_SUP) / TAM); sprintf(CAD,"detectar cuadroBARCO = %i, DIRECCION = %c XX = %i YY = %i FIL = %i COL = %i",BARCO,DBARCO[BARCO],XX,YY,FIL,COL); outtextxy(20,700,CAD); } } void situar_barco(){ int C,FB=FIL,CB=COL; if ((DBARCO[BARCO]=='U' and FB - BARCOS[BARCO] + 1 >= 0)or (DBARCO[BARCO]=='D' and FB + BARCOS[BARCO] - 1 <= 15)or (DBARCO[BARCO]=='L' and CB - BARCOS[BARCO] + 1 >= 0)or (DBARCO[BARCO]=='R' and CB + BARCOS[BARCO] - 1 <= 15)){ for(C=0;C<BARCOS[BARCO];C++){ MAT[FB][CB] = BARCO + 48; switch(DBARCO[BARCO]){ case 'U': FB--; break; case 'D': FB++; break; case 'L': CB--; break; case 'R': CB++; break; } } BARCOT[BARCO] = 1; BARCO = -1; } else{ sprintf(CAD,"SPACE NOT ENOUGH. PULSA BOTON RATON PARA CONTINUAR"); outtextxy(200,500,CAD); esperaclick(); } if (BARCO != -1 and BARCOT[BARCO] != 0){ sprintf(CAD,"BARCO YA SITUADO. PULSE TECLA"); outtextxy(200,600,CAD); BARCO = -1; esperaclick(); } } /*int color_cuadro(){ int V_RETURN; if (MAT[FIL][COL] == ' ') V_RETURN = RED;// aqui no tendria qu eser espacio en blanco si no cuando encuentre dos casillas iguales else V_RETURN = CYAN; return V_RETURN; }*/ int main() { int VALOR,TURNO = 1,FIL_ANT,COL_ANT; initwindow(900,600); BARCO = -1; FIL = -1; COL = -1; do{ /*dibujar_tablero(); settextstyle(0,0,2); setcolor(2); sprintf(CAD,"Estas Jugando a hundir la Flota"); outtextxy(100,400,CAD); sprintf(CAD,"X = %i Y = %i FIL = %i COL = %i",XX,YY,FIL,COL); outtextxy(100,422,CAD); sprintf(CAD,"NUMPAR = %i",NUMPAR); outtextxy(100,440,CAD); */ if (BARCO == -1) detectar_barco(); if (BARCO != -1) detectar_cuadro(); if (BARCO != -1 and FIL >= 0 and COL <= 15 and BARCOT[BARCO] == 0){ situar_barco(); } /* if (FIL >= 0 and FIL <= 9 and COL >= 0 and COL <=9 and MATEST[FIL][COL] == 0){ dibujar_tablero(1); delay(2000); sprintf(CAD,"FILA = %i COLUMNA = %i",FIL,COL); outtextxy(50,500,CAD); if (TURNO == 1) { FIL_ANT = FIL; COL_ANT = COL; MATEST[FIL_ANT][COL_ANT] = 1; TURNO++; } else { if (MAT[FIL][COL] == MAT[FIL_ANT] [COL_ANT]) { MATEST[FIL][COL] = 1; } else{ MATEST[FIL_ANT][COL_ANT] = 0; } TURNO = 1; } //sprintf(CAD,"%c",MAT[FIL][COL]); //settextstyle(0,0,3); //setbkcolor(color_cuadro()); // Color fondo texto //outtextxy(MARGEN_IZQ + (COL * TAM) + (TAM/5),MARGEN_SUP + (FIL * TAM) + TAM/5,CAD); } revisar_tablero(); */ }while (!SALIR); closegraph(); //close graphics window return 0; } void waitForLeftMouseClick() { clearmouseclick(WM_LBUTTONDOWN); const int DELAY = 50; int x, y; while (!ismouseclick(WM_LBUTTONDOWN)) delay(DELAY); getmouseclick(WM_LBUTTONDOWN, XX, YY); }
Páginas: [1]
|
|
|