Presentacion proyecto

Post on 25-Jan-2017

36 views 1 download

Transcript of Presentacion proyecto

C&S COMPANYPROYECTO BUSCAMINAS

“CIENCIA A LA COMPUTACION Y ARTE AL PROGRAMA”

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.

IDEA

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

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

•  

USOS DE LA APLICACION• PRACTICA• ENTRETENIMIENTO• CONOCIMIENTO

¿PORQUE LA APLICACIÓN ES PARA ANDROID?

• ¿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.

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.

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

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? 

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)

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.

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

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

¿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:

Luego codificamos las clases BuscaMinasActivity y Casilla:

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);

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();}

@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);

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;}

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;}}}