Está en la página 1de 10

Trabajo final Modulo 1

programa: milprogramadores
SICTE - SENCE - CORFO

Creación de
juego de “Azar”
en Pseudocódigo

Jaime P. Avaria Azocar


Luis Bastias
Oscar Gutierrez
Jorge Muñoz
Descripción:

El juego es del tipo "Jugador vs Computador"

Recrea una batalla naval entre dos bandos.

Ambos jugadores poseen dos barcos cada uno (jugador y máquina),

se enfrentan por turnos mediante lanzamientos de misil

según las coordenadas, donde el objetivo es destruir ambos barcos

enemigos para conseguir la victoria.


Lógica del Juego

El juego comienza mostrando una pantalla de bienvenida y simbología.


El programa comienza la creación y asignación de matrices y
variables.

Dimension tableroNK(5,5)
Dimension tableroUS(5,5)
Dimension disparosJ(5,5)
definir com como caracter
definir com1 como caracter
definir repetido como logico
definir repetido1 Como Logico

bU1<-1//barco USA 1, no se muestra


bU2<-1//barco USA 2, no se muestra
vU<-0//Asigna "0" a espacios vacíos
vN<-0//Asigna "0" a espacios vacíos
bN1<-1//Barco NK 1 en pantalla
bN2<-1//Barco NK 2 en pantalla
Ejemplo de algunas de las variables
utilizadas*

El juego se puede separar en 2 etapas principales :

1) Asignación de valores a las matrices


Posicionamiento de barcos aliados y enemigos.

2) Re-asignación de valores a las matrices


Lanzamientos y condiciones para término.

Ambas etapas se encuentran en un ciclo “mientras”, con la


finalidad de jugar varias partidas sin la necesidad de salir y
ejecutar nuevamente.

Mientras inicio=Verdadero
Escribir “¿Quieres jugar una partida? (si/no)”
Ejemplo ciclo ‘mientras’ para iniciar partida*
Primera etapa:

Asignación de valores a las matrices

para xN<-1 hasta 5 con paso 1 hacer


para yN<-1 hasta 5 con paso 1 Hacer
tableroNK(xN,yN)←vU
//Asignar valor 0 en cada cuadrante de la matríz
FinPara
fin para
para xU<-1 hasta 5 con paso 1 hacer
para yU<-1 hasta 5 con paso 1 Hacer
tableroUS(xU,yU)←vU
//Asignar valor 0 en cada cuadrante de la matríz
FinPara
FinPara
para xD<-1 hasta 5 con paso 1 hacer//xU//Posición fila USA//
para yD<-1 hasta 5 con paso 1 Hacer//yU//Posición columna USA//
DisparosJ(xD,yD)←vU
//Asignar valor 0 en cada cuadrante de la matríz
FinPara
FinPara

Luego se escriben las matrices

Escribir "___________________________"
Escribir "TABLERO NORKOREA (Jugador):"
Escribir "|a|b|c|d|e|"//mostrar la matriz con posiciones vaciás
para cN<-1 hasta 5 con paso 1 hacer//"cN" variable contadora para
escribir en la matriz.
Escribir "|" tableroNK(cN,1) "|" tableroNK(cN,2) "|"
tableroNK(cN,3) "|" tableroNK(cN,4) "|" tableroNK(cN,5) "|" cN
Ejemplo escritura matriz
jugador*

Las 2 matrices tablero jugador y lanzamientos jugador se muestran en


pantalla. La matriz tablero adversario en cambio, permanece oculta. Y
la matriz lanzamientos jugador va cruzando datos, según coordenadas
ingresadas, con la matriz tablero adversario
Posicionamiento de barcos.

Jugador: Lectura de datos, interpretación, y asignación de


coordenadas de barcos en matriz tablero jugador.

errorxN←Verdadero// evita cierre inesperado por mal ingreso


Mientras (errorcom o errorxN)=Verdadero
Escribir "Ingresa las coordenadas de tu primer barco"
Escribir "(letra de |a| hasta |e|, luego número de 1 a 5)"
leer com,xNc
Segun com Hacer
"a":
yN<-1;errorcom<-Falso
"b":
yN<-2;errorcom<-Falso
"c":
yN<-3;errorcom<-Falso
"d":
yN<-4;errorcom<-Falso
"e":
yN<-5;errorcom<-Falso
De Otro Modo:
errorcom<-Verdadero
Fin Segun
Segun xNc
"1":
xN<-1;errorxN<-Falso
"2":
xN<-2;errorxN<-Falso
"3":
xN<-3;errorxN<-Falso
"4":
xN<-4;errorxN<-Falso
"5":
xN<-5;errorxN<-Falso
De Otro Modo:
errorxN<-Verdadero
FinSegun
Fin mientras
tableroNK(xN,yN)<-bN1//Barco Norkoreano 1
Ejemplo lectura/Escritura en matriz jugador*
Adversario: ingreso aleatorio de datos, y asignación de coordenadas
de barcos enemigos en la matriz tablero adversario.

repetido<-verdadero//elimina la posibilidad de posicionar ambos barcos en el


Mientras repetido=verdadero mismo lugar
xAU1<- azar(5) + 1//xAU1<-columna al azar 1//asignación aleatoria
de valores para tableroUS(xU,yU)
yAU1<- azar(5) + 1//yAU1<-fila al azar 1
xAU2<- azar(5) + 1//xAU2<-columna al azar 2
yAU2<- azar(5) + 1//yAU2<-fila al azar 2
tableroUS(xAU1,yAU1)<-bU1//Posición barco USA 1
Si (tableroUS(xAU2,yAU2)=0)
tableroUS(xAU2,yAU2)<-bU2;repetido<-Falso//Posición barco USA 2
Sino
repetido<-Verdadero
FinSi
FinMientras
Ejemplo asignación aleatoria en
matriz*

Segunda etapa:

Lanzamientos (Re-asignación de valores a las matrices) y


condiciones para término.

El ingreso de datos para los lanzamientos del jugador es el


mismo utilizado anteriormente (ver ejemplo de lectura/Escritura en matriz
jugador*).

tableroUS(xN,jy)<-8//Coordenadas disparo jugador en matriz tableroUS(jx,jy)


disparosJ(xN,jy)<-8//Coordenadas disparo jugador en matriz disparosJ(jx,jy)
si tableroUS(xAU1,yAU1)=8
Entonces tableroUS(xAU1,yAU1)←5;disparosJ(xAU1,yAU1)←5;aciertosNK1<-1FinSi
Si tableroUS(xAU2,yAU2)=8
Entonces tableroUS(xAU2,yAU2)<-5;disparosJ(xAU2,yAU2)<-5;aciertosNK2<-1;FinSi
Ejemplo escritura matrices*

Condición para para ganar el juego.

si (tableroUS(xAU1,yAU1)=5 y tableroUS(xAU2,yAU2)=5)//Condición para que Jugador


victoria<-1 gane la partida
SiNo
victoria<-0
FinSi
Segun victoria
1: Esperar Tecla
0: Escribir "Es el turno de su adversario, presione una tecla para
avanzar";Esperar Tecla//Lanzamiento Comp
FinSegun

Los lanzamientos del adversario son coordenadas aleatorias, dentro de


un ciclo mientras, para evitar coordenadas repetidas.

repetido1<-verdadero
mientras repetido1=verdadero
aciertoUSA1<-0
aciertoUSA2<-0
compx<- azar(5) + 1//compx<-coordenada al azar
compy<- azar(5) + 1//compy<-coordenada al azar
Segun tableroNK(compx,compy)
5:
repetido1<-Verdadero
8:
repetido1<-Verdadero
0:
tableroNK(compx,compy)<-8;repetido1<-Falso
1:
tableroNK(compx,compy)<-5
Si tableroNK(compx1,compy1)=5
aciertoUSA1<-1;repetido1<-Falso;FinSi
si tableroNK(compx2,compy2)=5
aciertoUSA2<-1;repetido1<-Falso;FinSi
Fin Segun
FinMientras

Se evalúa el lanzamiento del adversario, luego se evalúa la


condición final(inicial) (ver ejemplo ciclo ‘mientras’ para iniciar
partida*).

si (tableroNK(compx1,compy1)=5 y tableroNK(compx2,compy2)=5)//condición
para
Derrota
Escribir "DERROTA"
FinSi

Hasta Que (tableroUS(xAU1,yAU1)=5 y tableroUS(xAU2,yAU2)=5) o


(tableroNK(compx1,compy1)=5 y tableroNK(compx2,compy2)=5)//condición final
Condición derrota y/o fin proceso*
Instrucciones para el jugador:

______________________________________________

Simbología en tableros de juego:


Valor 0 = Posición Vacía
Valor 1 = Barco
Valor 5 = Barco Destruido
Valor 8 = Disparo al agua

________________________________________________

Para situar tus barcos en el tablero "NORKOREA" ingresa una


letra (a,b,c,d o e), luego ingresa un número (1,2,3,4 o 5). Según las
coordenadas del tablero.

Luego de ingresar ambas posiciones aliadas, su adversario sitúa


sus 2 barcos en el tablero "USA", y permanecen ocultas hasta ser
destruidas por un misil aliado.

Los lanzamientos aliados se registran en el tablero del


adversario (tablero USA).

Para ganar debes destruir ambos barcos enemigos. De lo


contrario, si destruyen tus barcos, pierdes el juego.

Buena suerte!
Software utilizado

El software empleado para la realización de esta actividad fue


PseInt. Dada la simplificación de su uso, es la herramienta preferida
en muchos establecimientos pedagógicos de Latinoamérica, para la
iniciación en programación.

La ayuda con la sintaxis, la visualización de errores, entre


otros. Facilitan la comprensión de la lógica de los algoritmos

Versión general de la instalación: 20170523


PSeInt 20170521-w32
psTerm 20160630-w32
psDraw3 20170521-w32
psDrawE 20160420-w32
psExport 20160506-w32
psEval 20170522-w32