6

Click here to load reader

Instrucciones Proyecto Semana 3

Embed Size (px)

Citation preview

Page 1: Instrucciones Proyecto Semana 3

7/23/2019 Instrucciones Proyecto Semana 3

http://slidepdf.com/reader/full/instrucciones-proyecto-semana-3 1/6

LAS PRIMERAS PULSACIONES ENEL TABLERO

Objetivo: Completa tu proyecto de la semana pasada para juar contraun juador autom!t"co s"n compro#ar$ de momento$ el %"nal de unapart"da$ #asta con &ue se pueda colocar una %"c'a del color adecuado(d"st"nto al color del juador autom!t"co) al pulsar en la cas"llacorrespond"ente* Para ello$ l+"camente$ de#er!s compro#ar &ue lacas"lla es acces"#le*

Continuamos con el desarrollo de nuestro juego dando vida al tableroque hemos diseñado en la entrega anterior. Como has podido estudiar

en las últimas unidades, la forma más sencilla de ejecutar un métodocuando se pulsa un botón de la interfaz es asignar el nombre del métodoal atributo android:onClick del botón correspondiente. s! es comovamos a dotar de funcionalidad al tablero del juego Conecta " en estaentrega del pro#ecto.

$ara completar esta entrega te sugerimos que partas del pro#ectoanterior para reutilizar el %chero de diseño que #a has creado #, si tesientes con fuerzas, incluso optimizarlo mediante un %chero de estilo,como te e&plicamos en el punto número '. (i quieres ir directamente algrano, puedes pasar al punto número ) para añadir al pro#ecto una

nueva clase *Game+ donde iremos colocando todo lo relativo a las reglasdel juego.

'. (-/0(

ntes de avanzar en este sentido, veamos cómo simpli%car el %chero dediseño de la entrega anterior mediante la de%nición de estilos. (i lopre%eres, puedes saltar directamente a la sección 1). /ógica del juego1.n nuestra entrega anterior el %chero de diseño constaba de %las debotones con un aspecto parecido al siguiente2

Page 2: Instrucciones Proyecto Semana 3

7/23/2019 Instrucciones Proyecto Semana 3

http://slidepdf.com/reader/full/instrucciones-proyecto-semana-3 2/6

$ara evitar tener que repetir código innecesariamente resulta mu# útil

crear un nuevo estilo dentro del %chero styles.xml de lacarpeta /res/values. 3n estilo permite asignar de una vez el valor deun subconjunto de atributos. 4ás concretamente, el estilo consta de unaserie de items, cada uno correspondiente a un atributo al que se asignaun valor. l siguiente %chero introduce el estiloC4Button2

5racias a este estilo, el %chero de diseño se simpli%ca bastante. $orejemplo, una %la del tablero queda reducida a lo siguiente *elatributo content6escription no se puede asignar a través del estilo+2

Page 3: Instrucciones Proyecto Semana 3

7/23/2019 Instrucciones Proyecto Semana 3

http://slidepdf.com/reader/full/instrucciones-proyecto-semana-3 3/6

hora puedes añadir al estilo el item correspondiente alatributoandroid:onClick de tal forma que cuando el jugador pulse unbotón, se ejecute el método correspondiente de la lógica del juego.

). /75C 6/ 8350

9amos a centrar nuestra atención en el desarrollo de la lógica del juego.9amos a añadir al pro#ecto una nueva clase de nombre

Game, donde

vamos a colocar todo lo relativo a las reglas del juego. 6ejaremosen MainActivity todo aquello que tiene que ver con la interfaz. continuación te e&plicamos los pasos que tienes que seguir.

Te recomendamos &ue "ntentes proramar el c+d"o desde cero* S"nem#aro$ s" te resulta demas"ado compl"cado$ tam#",n puedesdescarar estepro#ecto donde encontrar!s alunas de las %unc"ones &uedescr"#"mos a cont"nuac"+n s"n term"nar* No te resultar! compl"cadocompletar el cuerpo de estas %unc"ones s"u"endo las "nd"cac"ones &ue

encontrar!s en sus ca#eceras* Antes de nada$ es muy recomenda#le &ueleas la e-pl"cac"+n &ue ."ene a cont"nuac"+n*

Game

3na pieza fundamental de tu juego será el tablero, un arra# de enterosque re:eja el estado del tablero, es decir, qué casillas están ocupadas #cuáles están libres2

Page 4: Instrucciones Proyecto Semana 3

7/23/2019 Instrucciones Proyecto Semana 3

http://slidepdf.com/reader/full/instrucciones-proyecto-semana-3 4/6

int tablero[][];

$or ejemplo, puedes marcar las posiciones libres con ;, las ocupadas porla máquina con ' # las ocupadas por el jugador con ). <o olvides utilizarvariablesinal para almacenar estos valores constantes, en lugar de

literales.

<o se trata de que implementes en este momento la lógica completa del juego sino que programes algunos de los métodos fundamentales para,al menos, ir colocando %chas # que la interfaz del tablero las muestrecon colores diferentes de acuerdo con el jugador. 6ejaremos para másadelante los métodos que detectan si se han colocado cuatro %chas enl!nea.

$ara empezar, en esta entrega deberás programar al menos lossiguientes métodos dentro de la clase Game2

• Game!"2 constructor sin argumentos de la clase Game dondese instancia el arra# tablero # se inicializan sus elementos con el código

correspondiente a posición vac!a.

• boolean se#uedeColocar$ic%a!int i& int '"2 estemétodo devuelve true si se puede colocar una %cha en la posición deltablero pasada como argumento, # alse en caso contrario. -en en

cuenta que no basta con comprobar que la posición está vac!a, sino que

además debe ser la posición vac!a más baja de su columna.

• void 'ue(aMa)uina!"2 actualiza el arra# tablero con un

movimiento de la máquina. 6e momento puedes asignar aleatoriamenteuna posición disponible, para lo que tendrás que utilizar el métodoanterior. 4ás adelante, tendrás ocasión de re%nar el algoritmo utilizadopor la máquina.

demás de estos métodos será conveniente que añadas métodos deacceso al tablero para consultar el estado de cada posición.

MainActivity

$asemos ahora a la actividad MainActivity. 3na de sus nuevasincorporaciones es el arra# de identi%cadores, similar a la del pro#ectocha cha cha, que necesitarás para acceder a los botones del tableromediante sus coordenadas2

Page 5: Instrucciones Proyecto Semana 3

7/23/2019 Instrucciones Proyecto Semana 3

http://slidepdf.com/reader/full/instrucciones-proyecto-semana-3 5/6

*rivate inal int ids[][] + ,,-.id.c& -.id.c& ...0 ...0;

demás, deberás añadir un miembro privado de tipo Game2

*rivate Game (ame;

/a actividad MainActivity de tu entrega anterior se va a poblar conalgunos métodos nuevos, además de adaptar los #a e&istentes2

• void onCreate!"2 además de in:ar la interfaz del tablero

como #a hiciste en la entrega anterior, deberás instanciar el miembroprivado de tipo Game.

• int de1dentiicadorA$ila!int id"2 este método nos

devuelve la %la del tablero correspondiente al botón cu#o identi%cadorse pasa como argumento.

• int de1dentiicadorAColumna!int id"2 este método nos

devuelve la columna del tablero correspondiente al botón cu#oidenti%cador se pasa como argumento.

• void *ulsado!2ie3 v"2 método callbac= que se ejecuta

cuando el jugador pulsa una posición del tablero. ste método deberáidenti%car las coordenadas del botón del tablero que se ha pulsado

mediante llamadas a los dos métodos anteriores, averiguar si se puedecolocar %cha mediante el método se#uedeColocar$ic%a!" de Game #, sies as!, actualizar el arra#tablero. 3n toast será útil para informar al

 jugador en el caso de que la posición pulsada no esté disponible. continuación deberá llamar al método'ue(aMa)uina!" de Game #,%nalmente, dibu'arablero!", que se encargará de actualizar el

aspecto de la interfaz. ste último método se e&plica a continuación.

• void dibu'arablero!"2 dibuja el tablero de acuerdo con

los valores del arra# tablero, es decir, dependiendo de si la posiciónestá vac!a, ocupada por una %cha de la máquina u ocupada con una%cha del jugador. -endrás que desarrollar dos recursos >4/ nuevos,similares a c45button.xml, uno para representar las %chas del jugador

humano # otro para las %chas de la máquina.

n la siguiente imagen se muestran las %chas de la máquina en rojo2

Page 6: Instrucciones Proyecto Semana 3

7/23/2019 Instrucciones Proyecto Semana 3

http://slidepdf.com/reader/full/instrucciones-proyecto-semana-3 6/6