-
Notifications
You must be signed in to change notification settings - Fork 0
/
BatallaNavalSinTerminar.psc
406 lines (406 loc) · 12.3 KB
/
BatallaNavalSinTerminar.psc
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
Algoritmo BatallaNaval
// Se crea variable que acumule los ataques realizados
Definir tempAtaque Como Caracter
Definir portaAvionesM Como Entero
Definir acorazadoM Como Entero
Definir lanchaM Como Entero
Definir totalBarcos Como Entero
Definir totalBarcosDestruidos Como Entero
Definir rendir Como Logico
Definir cancelar Como Logico
Definir salir Como Logico
portaAvionesM <- 5
acorazadoM <- 4
lanchaM <- 3
totalBarcos <- 0
totalBarcosDestruidos <- 0
tempAtaque <- ''
Escribir 'Hola, escribe tu nombre'
Leer nombreUsuario
Escribir 'hola ',nombreUsuario,' Jugaremos batalla naval, ¿que tan grande quieres el mapa?, ingrese un ejemplo es 8x9, donde 8 es fila y 9 la columna.'
Leer sizeMap
nFila <- 0
// Se asigna el tamaño del mapa
Para i<-1 Hasta Longitud(sizeMap) Hacer
Si Subcadena(sizeMap,i,i)='X' O Subcadena(sizeMap,i,i)='x' Entonces
filas <- Subcadena(sizeMap,0,i-1)
columnas <- Subcadena(sizeMap,i+1,Longitud(sizeMap))
FinSi
FinPara
// Se crea el mapa
Para i<-0 Hasta Longitud(filas) Hacer
Segun Subcadena(filas,i,i) Hacer
'0':
nFila <- nFila*10+0
'1':
nFila <- nFila*10+1
'2':
nFila <- nFila*10+2
'3':
nFila <- nFila*10+3
'4':
nFila <- nFila*10+4
'5':
nFila <- nFila*10+5
'6':
nFila <- nFila*10+6
'7':
nFila <- nFila*10+7
'8':
nFila <- nFila*10+8
'9':
nFila <- nFila*10+9
FinSegun
FinPara
Para i<-1 Hasta Longitud(columnas) Hacer
Segun Subcadena(columnas,i,i) Hacer
'0':
nColumna <- nColumna*10+0
'1':
nColumna <- nColumna*10+1
'2':
nColumna <- nColumna*10+2
'3':
nColumna <- nColumna*10+3
'4':
nColumna <- nColumna*10+4
'5':
nColumna <- nColumna*10+5
'6':
nColumna <- nColumna*10+6
'7':
nColumna <- nColumna*10+7
'8':
nColumna <- nColumna*10+8
'9':
nColumna <- nColumna*10+9
FinSegun
FinPara
Escribir 'Filas: ',nFila
Escribir 'Columnas: ',nColumna
// Se crea el mapa
Dimension map[nFila,nColumna]
Dimension mapDisparos[nFila,nColumna]
// Se inicia en ceros <<0>>
Para cont<-1 Hasta nFila Hacer
Para cont2<-1 Hasta nColumna Hacer
map[cont,cont2]<-'O'
mapDisparos[cont,cont2]<-'O'
FinPara
FinPara
// Se insertan barcos
Escribir ''
salir <- Falso
Escribir 'Se agregaran los barcos, seleccionelos:'
Escribir '¿Desea agregar al Porta Aviones? Escriba 0 para no, cualquier otro valor sera Si'
Leer opt
Si opt<>'0' Entonces
Mientras salir=Falso Hacer
cancelar <- Falso
filaAzar <- azar(nFila)+1
columnaAzar <- azar(nColumna)+1
// Escribir filaAzar, "<- ->", columnaAzar
Si filaAzar<nFila-5 Y columnaAzar<nColumna-1 Entonces
// Agregar portaAviones
Para i<-filaAzar Hasta filaAzar+5-1 Hacer
Para i2<-columnaAzar Hasta columnaAzar+1-1 Hacer
Si map[i,i2]<>'O' Entonces
cancelar <- Verdadero
FinSi
FinPara
FinPara
Si cancelar=Falso Entonces
Para i<-filaAzar Hasta filaAzar+5-1 Hacer
Para i2<-columnaAzar Hasta columnaAzar+1-1 Hacer
Si map[i,i2]='O' Entonces
map[i,i2]<-'P'
salir <- Verdadero
FinSi
FinPara
FinPara
FinSi
FinSi
FinMientras
Escribir 'Porta Aviones agregado'
totalBarcos <- totalBarcos+1
SiNo
Escribir 'No se agrega Porta Aviones'
FinSi
salir <- Falso
Escribir '¿Desea agregar al Acorazado? Escriba 0 para no, cualquier otro valor sera Si'
Leer opt
Si opt<>'0' Entonces
Mientras salir=Falso Hacer
cancelar <- Falso
filaAzar <- azar(nFila)+1
columnaAzar <- azar(nColumna)+1
// Escribir filaAzar, "<- ->", columnaAzar
Si filaAzar<nFila-2 Y columnaAzar<nColumna-2 Entonces
// Agregar acorazado
Para i<-filaAzar Hasta filaAzar+2-1 Hacer
Para i2<-columnaAzar Hasta columnaAzar+2-1 Hacer
Si map[i,i2]<>'O' Entonces
cancelar <- Verdadero
FinSi
FinPara
FinPara
Si cancelar=Falso Entonces
Para i<-filaAzar Hasta filaAzar+2-1 Hacer
Para i2<-columnaAzar Hasta columnaAzar+2-1 Hacer
Si map[i,i2]='O' Entonces
map[i,i2]<-'A'
salir <- Verdadero
FinSi
FinPara
FinPara
FinSi
FinSi
FinMientras
Escribir 'Acorazado agregado'
totalBarcos <- totalBarcos+1
SiNo
Escribir 'No se agrega Acorazado'
FinSi
salir <- Falso
Escribir '¿Desea agregar la Lancha? Escriba 0 para no, cualquier otro valor sera Si'
Leer opt
Si opt<>'0' Entonces
Mientras salir=Falso Hacer
cancelar <- Falso
filaAzar <- azar(nFila)+1
columnaAzar <- azar(nColumna)+1
// Escribir filaAzar, "<- ->", columnaAzar
Si filaAzar<nFila-1 Y columnaAzar<nColumna-3 Entonces
// Agregar lanza
Para i<-filaAzar Hasta filaAzar+1-1 Hacer
Para i2<-columnaAzar Hasta columnaAzar+3-1 Hacer
Si map[i,i2]<>'O' Entonces
cancelar <- Verdadero
FinSi
FinPara
FinPara
Si cancelar=Falso Entonces
Para i<-filaAzar Hasta filaAzar+1-1 Hacer
Para i2<-columnaAzar Hasta columnaAzar+3-1 Hacer
Si map[i,i2]='O' Entonces
map[i,i2]<-'L'
salir <- Verdadero
FinSi
FinPara
FinPara
FinSi
FinSi
FinMientras
Escribir 'Lancha agregada'
totalBarcos <- totalBarcos+1
SiNo
Escribir 'No se agrega Lancha'
FinSi
Escribir 'Presione Enter para continuar'
Leer enter
Borrar Pantalla
Escribir nombreUsuario,', el mapa se creó correctamente, los barcos fueron ubicados'
Escribir ''
Escribir 'Presiona Enter para iniciar el juego, usa el siguiente formato 4x6, donde 4 es la fila y 6 la columna'
Escribir 'Ten en cuenta que si te quieres rendir, en vez de digitar coordenadas, solo digita la letra R y envias'
Escribir 'Si quieres ver el mapa original, envias una M mayuscula'
Definir ganar Como Logico
ganar <- Falso
Mientras ganar=Falso Hacer
nFilaDisparar <- 0
nColumnaDisparar <- 0
Leer disparo
Si disparo='' Entonces
disparo <- '1000x1000'
FinSi
Si disparo='R' Entonces
ganar <- Verdadero
rendir <- Verdadero
FinSi
Si ganar<>Verdadero Entonces
Si disparo='M' Entonces
Escribir 'Mostrando mapa'
// Se imprime mapa
Para cont<-1 Hasta nFila Hacer
Para cont2<-1 Hasta nColumna Hacer
mapTemp <- mapTemp+map[cont,cont2]+' '
FinPara
Escribir mapTemp
mapTemp <- ''
FinPara
Escribir 'Escribe de nuevo las coordenadas'
Leer disparo
FinSi
Para i<-0 Hasta Longitud(disparo) Hacer
Si Subcadena(disparo,i,i)='X' O Subcadena(disparo,i,i)='x' Entonces
filaDisparar <- Subcadena(disparo,0,i-1)
columnaDisparar <- Subcadena(disparo,i+1,Longitud(disparo))
FinSi
FinPara
// Se crea el mapa
Para i<-0 Hasta Longitud(filaDisparar) Hacer
Segun Subcadena(filaDisparar,i,i) Hacer
'0':
nFilaDisparar <- nFilaDisparar*10+0
'1':
nFilaDisparar <- nFilaDisparar*10+1
'2':
nFilaDisparar <- nFilaDisparar*10+2
'3':
nFilaDisparar <- nFilaDisparar*10+3
'4':
nFilaDisparar <- nFilaDisparar*10+4
'5':
nFilaDisparar <- nFilaDisparar*10+5
'6':
nFilaDisparar <- nFilaDisparar*10+6
'7':
nFilaDisparar <- nFilaDisparar*10+7
'8':
nFilaDisparar <- nFilaDisparar*10+8
'9':
nFilaDisparar <- nFilaDisparar*10+9
FinSegun
FinPara
Para i<-0 Hasta Longitud(columnaDisparar) Hacer
Segun Subcadena(columnaDisparar,i,i) Hacer
'0':
nColumnaDisparar <- nColumnaDisparar*10+0
'1':
nColumnaDisparar <- nColumnaDisparar*10+1
'2':
nColumnaDisparar <- nColumnaDisparar*10+2
'3':
nColumnaDisparar <- nColumnaDisparar*10+3
'4':
nColumnaDisparar <- nColumnaDisparar*10+4
'5':
nColumnaDisparar <- nColumnaDisparar*10+5
'6':
nColumnaDisparar <- nColumnaDisparar*10+6
'7':
nColumnaDisparar <- nColumnaDisparar*10+7
'8':
nColumnaDisparar <- nColumnaDisparar*10+8
'9':
nColumnaDisparar <- nColumnaDisparar*10+9
FinSegun
FinPara
Borrar Pantalla
Si nFilaDisparar<>1000 Y nColumnaDisparar<>1000 Entonces
tempAtaque <- Concatenar(tempAtaque,Concatenar('(',Concatenar(ConvertirATexto(nFilaDisparar),Concatenar(',',Concatenar(ConvertirATexto(nColumnaDisparar),')')))))
Escribir 'A disparar en coordenadas: Fila: ',nFilaDisparar,', Columna: ',nColumnaDisparar
SiNo
Escribir 'A disparar en coordenadas: Fila: ','oo',', Columna: ','oo'
FinSi
Escribir 'Has destruido '+ConvertirATexto(totalBarcosDestruidos)+' barco/s de '+ConvertirATexto(totalBarcos)
Si nFilaDisparar<=nFila Y nColumnaDisparar<=nColumna Entonces
Si map[nFilaDisparar,nColumnaDisparar]=mapDisparos[nFilaDisparar,nColumnaDisparar] Entonces
mensajeAtaque <- 'Disparo en el agua'
mapDisparos[nFilaDisparar,nColumnaDisparar]<-'/'
SiNo
Segun map[nFilaDisparar,nColumnaDisparar] Hacer
'P':
Si mapDisparos[nFilaDisparar,nColumnaDisparar]<>'*' Y mapDisparos[nFilaDisparar,nColumnaDisparar]<>'/' Entonces
mapDisparos[nFilaDisparar,nColumnaDisparar]<-'*'
portaAvionesM <- portaAvionesM-1
Si portaAvionesM=0 Entonces
mensajeAtaque <- 'Has hundido el barco Porta Aviones, Felicitaciones!!!, Presiona Enter para actualizar estadisticas.'
totalBarcosDestruidos <- totalBarcosDestruidos+1
SiNo
mensajeAtaque <- 'Ataco a Porta Aviones'
FinSi
SiNo
mensajeAtaque <- 'Ya atacaste este punto'
FinSi
'A':
Si mapDisparos[nFilaDisparar,nColumnaDisparar]<>'*' Y mapDisparos[nFilaDisparar,nColumnaDisparar]<>'/' Entonces
mapDisparos[nFilaDisparar,nColumnaDisparar]<-'*'
acorazadoM <- acorazadoM-1
Si acorazadoM=0 Entonces
mensajeAtaque <- 'Has hundido el barco Acorazado, Felicitaciones!!!, Presiona Enter para actualizar estadisticas'
totalBarcosDestruidos <- totalBarcosDestruidos+1
SiNo
mensajeAtaque <- 'Ataco a Acorazado'
FinSi
SiNo
mensajeAtaque <- 'Ya atacaste este punto'
FinSi
'L':
Si mapDisparos[nFilaDisparar,nColumnaDisparar]<>'*' Y mapDisparos[nFilaDisparar,nColumnaDisparar]<>'/' Entonces
mapDisparos[nFilaDisparar,nColumnaDisparar]<-'*'
lanchaM <- lanchaM-1
Si lanchaM=0 Entonces
mensajeAtaque <- 'Has hundido el barco Lancha, Felicitaciones!!!, Presiona Enter para actualizar estadisticas'
totalBarcosDestruidos <- totalBarcosDestruidos+1
SiNo
mensajeAtaque <- 'Ataco a Lancha'
FinSi
SiNo
mensajeAtaque <- 'Ya atacaste este punto'
FinSi
'O':
De Otro Modo:
mensajeAtaque <- '¿Error? verifica coordenadas de nuevo, ejemplo 5x6'
FinSegun
FinSi
SiNo
Si nFilaDisparar<>1000 Y nColumnaDisparar<>1000 Entonces
mensajeAtaque <- 'Atacó fuera del mapa.'
SiNo
mensajeAtaque <- 'Enter presionado, digite coordenadas, ejemplo FILAxCOLUMNA.'
FinSi
FinSi
Escribir ''
Si lanchaM=0 Entonces
Escribir 'Has hundido el barco Lancha, Felicitaciones!!!'
FinSi
Si acorazadoM=0 Entonces
Escribir 'Has hundido el barco Acorazado, Felicitaciones!!!'
FinSi
Si portaAvionesM=0 Entonces
Escribir 'Has hundido el barco Porta Aviones, Felicitaciones!!!'
FinSi
Escribir ''
Escribir tempAtaque
Escribir ''
// Se imprime mapa disparos
titleTemp <- ''
Para cont<-1 Hasta nFila Hacer
Para cont2<-1 Hasta nColumna Hacer
mapTemp <- mapTemp+mapDisparos[cont,cont2]+' '
Si Longitud(ConvertirATexto(cont2))>1 Entonces
titleTemp <- titleTemp+ConvertirATexto(cont2)+' '
SiNo
titleTemp <- titleTemp+ConvertirATexto(cont2)+' '
FinSi
FinPara
Si cont=1 Entonces
Escribir Concatenar(' ',titleTemp)
Escribir ''
FinSi
Si Longitud(ConvertirATexto(cont))>1 Entonces
Escribir Concatenar(Concatenar(ConvertirATexto(cont),' '),mapTemp)
SiNo
Escribir Concatenar(Concatenar(ConvertirATexto(cont),' '),mapTemp)
FinSi
mapTemp <- ''
FinPara
Escribir ''
Si totalBarcos=totalBarcosDestruidos Entonces
ganar <- Verdadero
Escribir ''
Escribir '¡¡HAS GANADO, FELICITACIONES!!'
Escribir ''
Escribir 'Has hundido todos los barcos, tus estadisticas son:'
Escribir 'Barcos hundidos: '+ConvertirATexto(totalBarcosDestruidos)
Leer temp
SiNo
Escribir mensajeAtaque
FinSi
Si rendir=Verdadero Entonces
Escribir 'Te has rendido, no veras las estadisticas que tenias hasta el momento, suerte.'
FinSi
FinSi
FinMientras
FinAlgoritmo