SlideShare una empresa de Scribd logo
1 de 22
C&S COMPANY
PROYECTO 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 HISTORICO
Buscaminas (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 MERCADO
A 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
MOVIL
ESTA ES LA FORMA EN
LA QUE SE VE NUESTRA
ADAPTACION MOVIL DE
EL BUSCAMINAS
¿COMO LO CREAMOS?
Creamos un proyecto llamado: BuscaMinas
Borramos 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;
@Override
protected void onCreate(Bundle
savedInstanceState) {
requestWindowFeature(Window.FEATURE_N
O_TITLE);
getWindow().setFlags(WindowManager.Layo
utParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLS
CREEN);
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();
}
@Override
public 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();
}
@Override
public 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();
else
ancho = 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);
else
paint.setARGB(255, 153, 153, 153);
canvas.drawRect(c * anchocua, filaact, c * anchocua
+ anchocua - 2, filaact + anchocua - 2, paint);
// linea blanca
canvas.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;
else
return 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;
}
}
}

Más contenido relacionado

Destacado

Deadra Plemons Resume_wsb_ed_1
Deadra Plemons Resume_wsb_ed_1Deadra Plemons Resume_wsb_ed_1
Deadra Plemons Resume_wsb_ed_1Deadra Plemons
 
Business Agility: Leaner and Smarter
Business Agility: Leaner and SmarterBusiness Agility: Leaner and Smarter
Business Agility: Leaner and SmarterRandy Pilkenton
 
Hope Watson_Graphic_Temple Analytics Challenge - Alexion Challenge
Hope Watson_Graphic_Temple Analytics Challenge - Alexion ChallengeHope Watson_Graphic_Temple Analytics Challenge - Alexion Challenge
Hope Watson_Graphic_Temple Analytics Challenge - Alexion ChallengeHope Watson
 
Michael Butcher Resume 1
Michael Butcher Resume 1Michael Butcher Resume 1
Michael Butcher Resume 1Mike Butcher
 
Planificador proyectos-tecnologicos..dani (1)
Planificador proyectos-tecnologicos..dani (1)Planificador proyectos-tecnologicos..dani (1)
Planificador proyectos-tecnologicos..dani (1)Aleejaandra Goodoy
 
High performing sales mindset method snapshot
High performing sales mindset method snapshotHigh performing sales mindset method snapshot
High performing sales mindset method snapshotMaria Nordstrom
 

Destacado (12)

Deadra Plemons Resume_wsb_ed_1
Deadra Plemons Resume_wsb_ed_1Deadra Plemons Resume_wsb_ed_1
Deadra Plemons Resume_wsb_ed_1
 
Deportivo
DeportivoDeportivo
Deportivo
 
Business Agility: Leaner and Smarter
Business Agility: Leaner and SmarterBusiness Agility: Leaner and Smarter
Business Agility: Leaner and Smarter
 
Hope Watson_Graphic_Temple Analytics Challenge - Alexion Challenge
Hope Watson_Graphic_Temple Analytics Challenge - Alexion ChallengeHope Watson_Graphic_Temple Analytics Challenge - Alexion Challenge
Hope Watson_Graphic_Temple Analytics Challenge - Alexion Challenge
 
Proyecto buscaminas
Proyecto buscaminasProyecto buscaminas
Proyecto buscaminas
 
Caritas
CaritasCaritas
Caritas
 
Michael Butcher Resume 1
Michael Butcher Resume 1Michael Butcher Resume 1
Michael Butcher Resume 1
 
100532
100532100532
100532
 
Planificador proyectos-tecnologicos..dani (1)
Planificador proyectos-tecnologicos..dani (1)Planificador proyectos-tecnologicos..dani (1)
Planificador proyectos-tecnologicos..dani (1)
 
Eclipse1»
Eclipse1»Eclipse1»
Eclipse1»
 
What Customers Want
What Customers WantWhat Customers Want
What Customers Want
 
High performing sales mindset method snapshot
High performing sales mindset method snapshotHigh performing sales mindset method snapshot
High performing sales mindset method snapshot
 

Similar a Presentacion proyecto

Manual(mario alberto rosales lara)
Manual(mario alberto rosales lara)Manual(mario alberto rosales lara)
Manual(mario alberto rosales lara)MariOo Rosales
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidLuis Ernesto Castillo Alfaro
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
 
Xna game studio presentación 05
Xna game studio   presentación 05Xna game studio   presentación 05
Xna game studio presentación 05Juan Cardona
 
Manual aplicaciones mobiles
Manual aplicaciones mobilesManual aplicaciones mobiles
Manual aplicaciones mobilesJuan Strongman
 
Develop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDKDevelop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDKAlberto Dominguez
 
Xna game studio presentación 03
Xna game studio   presentación 03Xna game studio   presentación 03
Xna game studio presentación 03Juan Cardona
 
Cuaderno de práctica sn (reparado)
Cuaderno de práctica sn (reparado)Cuaderno de práctica sn (reparado)
Cuaderno de práctica sn (reparado)karlycalleja
 
Band 2 y la domótica casera
Band 2 y la domótica caseraBand 2 y la domótica casera
Band 2 y la domótica casera[T]echdencias
 
Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2Cein
 

Similar a Presentacion proyecto (20)

Manual(mario alberto rosales lara)
Manual(mario alberto rosales lara)Manual(mario alberto rosales lara)
Manual(mario alberto rosales lara)
 
Desarrollando con visual studio
Desarrollando con visual studioDesarrollando con visual studio
Desarrollando con visual studio
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Xna game studio presentación 05
Xna game studio   presentación 05Xna game studio   presentación 05
Xna game studio presentación 05
 
Manual aplicaciones mobiles
Manual aplicaciones mobilesManual aplicaciones mobiles
Manual aplicaciones mobiles
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
 
Mobilessss
MobilessssMobilessss
Mobilessss
 
Canvas
CanvasCanvas
Canvas
 
Develop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDKDevelop Mobile Apps with Corona SDK
Develop Mobile Apps with Corona SDK
 
Applets.pdf
Applets.pdfApplets.pdf
Applets.pdf
 
Xna game studio presentación 03
Xna game studio   presentación 03Xna game studio   presentación 03
Xna game studio presentación 03
 
Android
AndroidAndroid
Android
 
Cuaderno de práctica sn (reparado)
Cuaderno de práctica sn (reparado)Cuaderno de práctica sn (reparado)
Cuaderno de práctica sn (reparado)
 
Manual del curso de autocad basico 2011
Manual del curso de autocad basico 2011Manual del curso de autocad basico 2011
Manual del curso de autocad basico 2011
 
Practicas de Word
Practicas de WordPracticas de Word
Practicas de Word
 
Band 2 y la domótica casera
Band 2 y la domótica caseraBand 2 y la domótica casera
Band 2 y la domótica casera
 
AUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptxAUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptx
 
Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2
 
manual
manualmanual
manual
 

Más de Roberto Perales

Más de Roberto Perales (20)

Equipo rocket (1)
Equipo rocket (1)Equipo rocket (1)
Equipo rocket (1)
 
Cetis 109
Cetis 109Cetis 109
Cetis 109
 
Gadget review
Gadget reviewGadget review
Gadget review
 
Paginaconestilo
PaginaconestiloPaginaconestilo
Paginaconestilo
 
Formularios
FormulariosFormularios
Formularios
 
Tripticos buscaminas(2) (1)
Tripticos buscaminas(2) (1)Tripticos buscaminas(2) (1)
Tripticos buscaminas(2) (1)
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
 
Tripticos buscaminas(2)
Tripticos buscaminas(2)Tripticos buscaminas(2)
Tripticos buscaminas(2)
 
Proyecto buscaminas
Proyecto buscaminasProyecto buscaminas
Proyecto buscaminas
 
Preguntas codecademy
Preguntas codecademyPreguntas codecademy
Preguntas codecademy
 
Manualhtml
ManualhtmlManualhtml
Manualhtml
 
Turorial perales
Turorial peralesTurorial perales
Turorial perales
 
Practica hola mundo
Practica hola mundoPractica hola mundo
Practica hola mundo
 
Perales tutorial 7
Perales tutorial 7Perales tutorial 7
Perales tutorial 7
 
Practica7
Practica7Practica7
Practica7
 
Operaciones con spinner1
Operaciones con spinner1Operaciones con spinner1
Operaciones con spinner1
 
Operaciones aritmeticas utilizando_radio_button(2)
Operaciones aritmeticas utilizando_radio_button(2)Operaciones aritmeticas utilizando_radio_button(2)
Operaciones aritmeticas utilizando_radio_button(2)
 
Multiplicacion de dos_numeros_en_eclipse1
Multiplicacion de dos_numeros_en_eclipse1Multiplicacion de dos_numeros_en_eclipse1
Multiplicacion de dos_numeros_en_eclipse1
 
Sumadedosnumeros
SumadedosnumerosSumadedosnumeros
Sumadedosnumeros
 
Sustraccion de-dos-numeros-en-eclipse
Sustraccion de-dos-numeros-en-eclipseSustraccion de-dos-numeros-en-eclipse
Sustraccion de-dos-numeros-en-eclipse
 

Presentacion proyecto

  • 2. “CIENCIA A LA COMPUTACION Y ARTE AL PROGRAMA”
  • 3. 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.
  • 4. IDEA • CREACION DE UNA APLICACIÓN PARA ANDROID, LA CUAL LLEVA EL NOMBRE DE MINESWEEPER (BUSCA MINAS).
  • 5. 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 •
  • 6. USOS DE LA APLICACION • PRACTICA • ENTRETENIMIENTO • CONOCIMIENTO
  • 8. • ¿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.
  • 9. ASPECTO HISTORICO Buscaminas (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.
  • 10. 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
  • 11. CUESTIONARIO DE ESTUDIO DE MERCADO A 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?
  • 12. 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)
  • 13. 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.
  • 14. Esta grafica de pastel marca el número de personas que consideran aburrido o entretenido
  • 15. BUSCAMINAS PARA MOVIL ESTA ES LA FORMA EN LA QUE SE VE NUESTRA ADAPTACION MOVIL DE EL BUSCAMINAS
  • 16. ¿COMO LO CREAMOS? Creamos un proyecto llamado: BuscaMinas Borramos el TextView que agrega automáticamente el plug-in de Eclipse y disponemos un Button y un LinearLayout:
  • 17. Luego codificamos las clases BuscaMinasActivity y Casilla:
  • 18. 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; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_N O_TITLE); getWindow().setFlags(WindowManager.Layo utParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLS CREEN); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
  • 19. 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(); } @Override public 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(); }
  • 20. @Override public 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(); else ancho = 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); else paint.setARGB(255, 153, 153, 153); canvas.drawRect(c * anchocua, filaact, c * anchocua + anchocua - 2, filaact + anchocua - 2, paint); // linea blanca canvas.drawLine(c * anchocua, filaact, c * anchocua + anchocua, filaact, paintlinea1); canvas.drawLine(c * anchocua + anchocua - 1, filaact, c * anchocua + anchocua - 1, filaact + anchocua, paintlinea1);
  • 21. 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; else return false; }
  • 22. 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; } } }