22
C&S COMPANY PROYECTO BUSCAMINAS

Presentacion proyecto

Embed Size (px)

Citation preview

Page 1: Presentacion proyecto

C&S COMPANYPROYECTO BUSCAMINAS

Page 2: Presentacion proyecto

“CIENCIA A LA COMPUTACION Y ARTE AL PROGRAMA”

Page 3: Presentacion proyecto

INTRODUCCION• En este proyecto se hizo el estudio y

comprobación de la teoría aplicada acerca del juego Buscaminas (Minesweeper), el objetivo era investigar acerca de su impacto en el Mercado, además de la realización del juego en un formato APK para que sea instalado en cualquier Móvil Android.

Page 4: Presentacion proyecto

IDEA

• CREACION DE UNA APLICACIÓN PARA ANDROID, LA CUAL LLEVA EL NOMBRE DE MINESWEEPER (BUSCA MINAS).

Page 5: Presentacion proyecto

JUSTIFICACION • Lo creamos como un homenaje a los juegos

predeterminados en Microsoft que muchas veces se piensa ya no tienen lugar en la actualidad, lo adaptamos a un modo Móvil para todos aquellos que aun siguieran siendo jugadores potenciales ya que, no es solo útil para el entretenimiento, en ocasiones ha sido utilizada como practica en el entorno educativo, por su estrategia

•  

Page 6: Presentacion proyecto

USOS DE LA APLICACION• PRACTICA• ENTRETENIMIENTO• CONOCIMIENTO

Page 7: Presentacion proyecto

¿PORQUE LA APLICACIÓN ES PARA ANDROID?

Page 8: Presentacion proyecto

• ¿Por qué nos interesa Android? • Por dos razones:• Primero, el hecho de que Google lo esté introduciendo y la

notoriedad que Android ha obtenido en un periodo de tiempo tan corto.

• La segunda razón por la que Android es importante es porque no es solo otra plataforma móvil con un menú telefónico y una pantalla táctil. La arquitectura de Android permite un entorno de software altamente personalizable gracias a su enlace de ejecución de las acciones solicitadas y el código para satisfacer estas solicitudes.

Page 9: Presentacion proyecto

ASPECTO HISTORICOBuscaminas (nombre original en inglés: Minesweeper) es un videojuego para un jugador inventado por Robert Donner en 1989. El objetivo del juego es despejar un campo de minas sin detonar ninguna.El Buscaminas es, probablemente, el juego más popular de todos los que Windows incluye y de paso, el más original en su concepto. ¿Quién podría pensar que liberar un campo minado pudiese ser tan divertido? pues Robert Donner y Curt Johnson, creadores de este clásico. 

El Buscaminas vio la luz por primera vez dentro del Microsoft Entertaintment Pack para Windows. Dos años más tarde reaparecería ya dentro de la instalación estándar de Windows 3.1, y a partir de ahí en todas las sucesivas entregas del sistema operativo de Microsoft.

Page 10: Presentacion proyecto

SUS PRIMEROS CREADORES

Robert Donner y Curt Johnson se acreditan por Microsoft como los autores de Buscaminas de Windows.Buscaminas fue programado por Robert Donner, quien comenzó a trabajar en Microsoft en mayo de 1989. Originario de Winnipeg, Canadá, que ya tenía un grado de Maestría en Ciencias de la Computación y había escrito

Page 11: Presentacion proyecto

CUESTIONARIO DE ESTUDIO DE MERCADOA través de este proyecto creamos una encuesta compuesta por las preguntas que están a continuación que fue aplicada a distintas personas:¿Conoce el juego Minesweeper (Buscaminas)? ¿Cómo se enteró de su existencia? ¿Alguna vez lo uso? ¿Con que frecuencia? En una escala del 1 al 10 ¿Cómo lo valoraría? 

Page 12: Presentacion proyecto

En comparación a otros juegos del mismo tipo ¿Cómo lo cataloga? ¿Alguna vez lo ha recomendado o mostrado a otras personas? ¿Qué es lo que le gusto y lo que no, de este juego? ¿Qué cambios haría para mejorarlo? ¿Qué incrementaría tu potencial interés en este juego?  *LA ENCUESTA SE APLICO A 15 PERSONAS (LA ENCUESTA ESTUVO BASADA EN LA VERSION DE PC PARA FUTURAS MEJORES EN LA APP MOVIL)

Page 13: Presentacion proyecto

Esta grafica especifica la valoración del juego en pc según sus clientes, es un juego clásico, que se sigue considerando entre los ciudadanos como arduamente atrayente, además de un reto para la comunidad.

Page 14: Presentacion proyecto

Esta grafica de pastel marca el número de personas que consideran aburrido o entretenido 

Page 15: Presentacion proyecto

BUSCAMINAS PARA MOVILESTA ES LA FORMA EN LA QUE SE VE NUESTRA ADAPTACION MOVIL DE EL BUSCAMINAS

Page 16: Presentacion proyecto

¿COMO LO CREAMOS?Creamos un proyecto llamado: BuscaMinasBorramos el TextView que agrega automáticamente el plug-in de Eclipse y disponemos un Button y un LinearLayout:

Page 17: Presentacion proyecto

Luego codificamos las clases BuscaMinasActivity y Casilla:

Page 18: Presentacion proyecto

ANEXOpackage com.androidya.buscaminas;

import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Typeface;import android.os.Bundle;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.Window;import android.view.WindowManager;import android.widget.LinearLayout;import android.widget.Toast;

public class MainActivity extends Activity implements OnTouchListener {private Tablero fondo;int x, y;private Casilla[][] casillas;private boolean activo = true;

@Overrideprotected void onCreate(Bundle savedInstanceState) {requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);

Page 19: Presentacion proyecto

LinearLayout layout = (LinearLayout) findViewById(R.id.layout2);fondo = new Tablero(this);fondo.setOnTouchListener(this); layout.addView(fondo);casillas = new Casilla[8][8];for (int f = 0; f < 8; f++) {for (int c = 0; c < 8; c++) {casillas[f][c] = new Casilla();}}this.disponerBombas();this.contarBombasPerimetro();}

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}

public void presionado(View v) {casillas = new Casilla[8][8];for (int f = 0; f < 8; f++) {for (int c = 0; c < 8; c++) {casillas[f][c] = new Casilla();}}this.disponerBombas();this.contarBombasPerimetro();activo = true;

fondo.invalidate();}

Page 20: Presentacion proyecto

@Overridepublic boolean onTouch(View v, MotionEvent event) {if (activo)for (int f = 0; f < 8; f++) {for (int c = 0; c < 8; c++) {if (casillas[f][c].dentro((int) event.getX(),(int) event.getY())) {casillas[f][c].destapado = true;if (casillas[f][c].contenido == 80) {Toast.makeText(this, "Booooooooommmmmmmmmmmm",Toast.LENGTH_LONG).show();activo = false;} else if (casillas[f][c].contenido == 0)recorrer(f, c);fondo.invalidate();}}}if (gano() && activo) {Toast.makeText(this, "Ganaste", Toast.LENGTH_LONG).show();activo = false;}

return true;}

class Tablero extends View {

public Tablero(Context context) {super(context);}protected void onDraw(Canvas canvas) {canvas.drawRGB(0, 0, 0);int ancho = 0;if (canvas.getWidth() < canvas.getHeight())ancho = fondo.getWidth();elseancho = fondo.getHeight();int anchocua = ancho / 8;Paint paint = new Paint();paint.setTextSize(20);Paint paint2 = new Paint();paint2.setTextSize(20);paint2.setTypeface(Typeface.DEFAULT_BOLD);paint2.setARGB(255, 0, 0, 255);Paint paintlinea1 = new Paint();paintlinea1.setARGB(255, 255, 255, 255);int filaact = 0;for (int f = 0; f < 8; f++) {for (int c = 0; c < 8; c++) {casillas[f][c].fijarxy(c * anchocua, filaact, anchocua);if (casillas[f][c].destapado == false)paint.setARGB(153, 204, 204, 204);elsepaint.setARGB(255, 153, 153, 153);canvas.drawRect(c * anchocua, filaact, c * anchocua+ anchocua - 2, filaact + anchocua - 2, paint);// linea blancacanvas.drawLine(c * anchocua, filaact, c * anchocua+ anchocua, filaact, paintlinea1);canvas.drawLine(c * anchocua + anchocua - 1, filaact, c* anchocua + anchocua - 1, filaact + anchocua,paintlinea1);

Page 21: Presentacion proyecto

if (casillas[f][c].contenido >= 1&& casillas[f][c].contenido <= 8&& casillas[f][c].destapado)canvas.drawText(String.valueOf(casillas[f][c].contenido), c* anchocua + (anchocua / 2) - 8,filaact + anchocua / 2, paint2);

if (casillas[f][c].contenido == 80&& casillas[f][c].destapado) {Paint bomba = new Paint();bomba.setARGB(255, 255, 0, 0);canvas.drawCircle(c * anchocua + (anchocua / 2),filaact + (anchocua / 2), 8, bomba);}

}filaact = filaact + anchocua;}}}

private void disponerBombas() {int cantidad = 8;do {int fila = (int) (Math.random() * 8);int columna = (int) (Math.random() * 8);if (casillas[fila][columna].contenido == 0) {casillas[fila][columna].contenido = 80;cantidad--;}} while (cantidad != 0);}

private boolean gano() {int cant = 0;for (int f = 0; f < 8; f++)for (int c = 0; c < 8; c++)if (casillas[f][c].destapado)cant++;if (cant == 56)return true;elsereturn false;}

Page 22: Presentacion proyecto

private void contarBombasPerimetro() {for (int f = 0; f < 8; f++) {for (int c = 0; c < 8; c++) {if (casillas[f][c].contenido == 0) {int cant = contarCoordenada(f, c);casillas[f][c].contenido = cant;}}}}

int contarCoordenada(int fila, int columna) {int total = 0;if (fila - 1 >= 0 && columna - 1 >= 0) {if (casillas[fila - 1][columna - 1].contenido == 80)total++;}if (fila - 1 >= 0) {if (casillas[fila - 1][columna].contenido == 80)total++;}if (fila - 1 >= 0 && columna + 1 < 8) {if (casillas[fila - 1][columna + 1].contenido == 80)total++;}

if (columna + 1 < 8) {if (casillas[fila][columna + 1].contenido == 80)total++;}if (fila + 1 < 8 && columna + 1 < 8) {if (casillas[fila + 1][columna + 1].contenido == 80)total++;}

if (fila + 1 < 8) {if (casillas[fila + 1][columna].contenido == 80)total++;}if (fila + 1 < 8 && columna - 1 >= 0) {if (casillas[fila + 1][columna - 1].contenido == 80)total++;}if (columna - 1 >= 0) {if (casillas[fila][columna - 1].contenido == 80)total++;}return total;}

private void recorrer(int fil, int col) {if (fil >= 0 && fil < 8 && col >= 0 && col < 8) {if (casillas[fil][col].contenido == 0) {casillas[fil][col].destapado = true;casillas[fil][col].contenido = 50;recorrer(fil, col + 1);recorrer(fil, col - 1);recorrer(fil + 1, col);recorrer(fil - 1, col);recorrer(fil - 1, col - 1);recorrer(fil - 1, col + 1);recorrer(fil + 1, col + 1);recorrer(fil + 1, col - 1);} else if (casillas[fil][col].contenido >= 1&& casillas[fil][col].contenido <= 8) {casillas[fil][col].destapado = true;}}}