Miércoles 20 de Noviembre de 2024, 14:20
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
trabajo de c++ (hundir la flota)
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: trabajo de c++ (hundir la flota) (Leído 4605 veces)
mikwoc
Nuevo Miembro
Mensajes: 2
trabajo de c++ (hundir la flota)
«
en:
Martes 12 de Abril de 2011, 11:44 »
0
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
Código: C++
#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
)
;
}
Tweet
«
última modificación: Martes 12 de Abril de 2011, 13:57 por mikwoc
»
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: trabajo de c++ (hundir la flota)
«
Respuesta #1 en:
Martes 12 de Abril de 2011, 13:45 »
0
Hola bienvenido al foro
Deberías usar la etiqueta de código, y no la de negrita, así tu código quedará formateado y más legible.
En cuanto a tu problema, podrías o bien comprobar primero si ya hay un barco o bien crear una matriz que indique si una posición ya está ocupada.
Saludos.
Fr33k K0mpu73r
mikwoc
Nuevo Miembro
Mensajes: 2
Re: trabajo de c++ (hundir la flota)
«
Respuesta #2 en:
Martes 12 de Abril de 2011, 13:58 »
0
gracias por la ayuda
pero el problema es que no se como empezar para que me coloque los barcos sin sobre escribirlos
alguna idea?
gracias
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: trabajo de c++ (hundir la flota)
«
Respuesta #3 en:
Martes 12 de Abril de 2011, 14:54 »
0
Cita de: "mikwoc"
alguna idea?
Ejem, ya te lo he dicho en mi post anterior...
Fr33k K0mpu73r
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
trabajo de c++ (hundir la flota)