Está en la página 1de 5

Problema

Una empresa de juegos didácticos virtuales, quieren implementar un


juego de rompecabezas numérico, junto con sus respectivas reglas de
puntuación, para ello es necesario diseñar un aplicativo que genere una
matriz de números aleatorio de 3x3 donde se almacenen 8 números
entero consecutivos y le dé la posibilidad al usuario de:
 Establecer el primer número de los ocho posibles a almacenar,
(los demás serán consecutivos).
 El usuario debe poder determinar cómo mover la casilla vacía,
indicando si el movimiento lo hace hacia arriba ó abajo, derecha ó
izquierda.
 Tener la opción de no continuar con el armado del rompecabezas.
 Decidir si el armado lo dese hacer horizontal o vertical.
 Leer las reglas de la puntuación con la que se valorará su
desarrollo.
Una vez el usuario termine de ordenar el rompecabezas o haya decidido
no continuar con el armado, el aplicativo debe:
 Indicar la cantidad de movimientos realizados
 Puntuación obtenida
El aplicativo, en su funcionamiento debe cumplir con las siguientes
características:
 Permitir el movimiento de una celda a la vez.
 En los bordes de la matriz restringir los movimientos, es decir que
de la última columna no es posible desplazarse a la primera o
viceversa, igual con las filas, de la primera fila no es posible llegar
a la última y viceversa.
 Mostar solo una matriz en pantalla, ir actualizándola a medida que
se van realizando los movimientos, para dar la sensación de
desplazamiento de los números.
 Cuando logre ordenar el rompecabezas informarle al usuario que
lo terminó.
Ejemplo de movimientos realizados para armar el rompecabezas
horizontalmente. Suponiendo que el aplicativo genera la siguiente
matriz, se muestra cada uno de los cambios que se deben dar al interior
de la matriz, para mostrársela al usuario, entre cambio y cambio se
debe borrar la matriz anterior y sobrescribir en pantalla la nueva.
Valor inicial: 1
Tipo de armado: Horizontal
Matriz generada:
5 1 4
2 6 8
7 3
Movimientos
5 1 4 5 1 4 5 1 4 1 4
2 6 2 6 2 6 5 2 6
7 3 8 7 3 8 7 3 8 7 3 8
1. Arriba 2. Derecha 3. Derecha 4. Arriba

1 4 1 2 3 1 2 3
5 2 6 5 6 5 6
7 3 8 … 4 7 8 4 7 8
5. Derecha 30. Arriba 31. Izquierda

1 2 3 1 2 3 1 2 3 1 2 3
5 6 4 5 6 4 5 6 4 5 6
4 7 8 7 8 7 8 7 8
32. Izquierda 33. Abajo 34. Derecha 35. Derecha

Tabla 1. Descripción de la idea propuesta para resolver el


problema (no las prácticas)
Item a resolver Respuesta
Descripción de la idea, realizarla a través Lo primero que se debe
de Algoritmo ó texto explicativo. organizar es el plan de
trabajo, donde se coloque
paso a paso como se va a
organizar el algoritmo para
diseñar el código que se
utilizara en la solución del
algoritmo
Información de entrada Número de jugadores
Movimiento de casillas
Cantidad de casillas a usar
Matriz 3x3
Procesos Llenar valores de las
matrices
Contador de movimientos
Comparación de matrices
Información de salida Cantidad de movimientos

Temas a consultar y la referencia Monroy, J. (2016).


bibliográfica de donde lo va a extraer. Conceptos Básicos de
programación. [Archivo de
video] Recuperado de:
http://hdl.handle.net/10596
/10293

Monroy, J. (2018).
Fundamentos de
Programación en Software
de Tratamiento Matemático.
[Archivo de video]
Recuperado de:
http://hdl.handle.net/10596
/22302

Tabla 2. Criterio propuesto para evaluar las ideas


Descripción del criterio Rango de
puntuación a
proponer
Creatividad 50
Facilidad 25
interactivo 25

Codigo

#include <stdio.h>

int main(){

int x[3][3], i, n, m=1, y;

while(m==1){

printf("1. mostrar matriz\n");

printf("2. llenar matriz\n");

scanf("%d", &y);

switch(y){

case 1:{

for(i=0;i<3;i++){

for(n=0;n<3;n++){

printf("Ingrese numero fila %d columna %d: ", i+1, n+1);


scanf("%d",&x[i][n]);

printf("%d ",x[i][n]);

for(i=0;i<3;i++){

printf("\n");

for(n=0;n<3;n++){

printf("%d ",x[i][n]);

break;

case 2:{

int e=0;

for(i=0;i<3;i++){

printf("\n");

for(n=0;n<3;n++){

x[i][n]=e;

printf("%d ",x[n][i]);

e++;

break;

default:{

printf("numero incorrecto");

printf("\nDesea realizar otra operacion 1.SI 0 2.NO ");


scanf("%d",&m);

return 0;

También podría gustarte