greenfoot 9

31

Upload: elian-maya

Post on 12-Apr-2017

49 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Greenfoot 9
Page 2: Greenfoot 9
Page 3: Greenfoot 9

3

Page 4: Greenfoot 9

La abstracción se puede definir de varias formas. Nos centraremos en la idea de alejarnos de una función específica para adoptar una más general.

Piense en abstracción como el proceso de pasar de una tarea más específica a una tarea más general. Por lo tanto, en lugar de llamar a un constructor que siempre realice las mismas tareas, podríamos transferir valores que nos permitieran cambiar la configuración inicial.

4

Page 5: Greenfoot 9

Ya hemos comenzado a realizar la abstracción mediante la creación de nuestros propios métodos y constructores.

5

Page 6: Greenfoot 9

Cuando escriba código fuente y compruebe que algo que está escribiendo es muy parecido a otro código que ha escrito, debe comprobar si puede abstraer su finalidad a otro método. A continuación, llámelo desde las ubicaciones correctas. A continuación, producirá código que es más fácil de mantener.

6

Page 7: Greenfoot 9

Podríamos haber escrito

Fly fly1 = new Fly();

fly1.setSpeed(4); // un método definido

fly1.setRotation(90);

Tendríamos que repetir el código anterior para cada mosca. Al abstraer su propósito al constructor, reduce en gran medida la repetición.

7

Page 8: Greenfoot 9

El equipo de programación de Greenfoot ha creado métodos para que la tarea de desarrollo le resulte más sencilla. Puede abstraerlo aún más para que sea más potente.

8

Page 9: Greenfoot 9

Modificará con frecuencia constructores para que pueda transferirles la información inicial.

9

Page 10: Greenfoot 9

public void increaseScore(int value) {

score = score + value;

}

Podríamos llamarlo desde un área como increaseScore(5) y desde otra área como increaseScore(10).

10

Page 11: Greenfoot 9

Sumamos 1 a la velocidad porque getRandomNumber() puede devolver un 0. Una mosca con una velocidad de cero es muy fácil de atrapar.

11

Page 12: Greenfoot 9

Si desea cambiar la velocidad, el giro, etc. durante un juego, debe crear una variable de clase para almacenar el valor actual.

12

Page 13: Greenfoot 9

De este modo, se agregará una mosca en las coordenadas (150,150) con una velocidad máxima aleatoria de 2 a partir de una dirección de 90 grados.

13

Page 14: Greenfoot 9

Ahora se están agregando 4 moscas, cada una de ellas con una velocidad aleatoria máxima, una dirección inicial y un punto de partida distinto. Todas ellas con solo 4 líneas de código en el constructor BeeWorld.

14

Page 15: Greenfoot 9

Escribir líneas de código que presiente que se han escrito anteriormente suele ser el detonante de la abstracción.

15

Page 16: Greenfoot 9

16

Page 17: Greenfoot 9

Creamos 10 moscas, cada una con una dirección y posición aleatorias en la pantalla.

Esto se realiza mediante un bucle for. El bucle for ejecutará el código entre paréntesis un número determinado de veces. En este ejemplo hay 10 bucles. Nos centraremos en los bucles a medida que avance el curso.

Podríamos aumentar la velocidad máxima de las moscas, ya que el juego hace que sea cada vez más difícil atraparlas.

17

Page 18: Greenfoot 9

Si va a contar con actores que comparten funcionalidades, es mejor crear una subclase de actor, agregar la funcionalidad y, a continuación, crear una subclase de esa clase. Recuerde que la clase Movement puede contener varias subclases.

18

Page 19: Greenfoot 9

private static final int SPEED= 4

Crea una clase constante que podemos utilizar en nuestro código. Su ventaja es que se hace que nuestro código más legible al utilizarlo y también nos permite cambiar un valor para aumentar la velocidad de todos los actores que la usan.

19

Page 20: Greenfoot 9

setLocation() mueve un actor sin tener que cambiar su giro. En algunos casos, es mejor que move() y rotate(). En el ejemplo, deseamos que un bebé se mueva por la pantalla. No queremos que gire, sino que esté siempre erguido, pero que se siga moviendo por la pantalla en distintas direcciones.

20

Page 21: Greenfoot 9

Si el bebé se movió en una dirección tras estar en contacto con otro actor, también podríamos llamar a este método en esta ubicación.

if (leftBump()) {

moveLeft();

}

21

Page 22: Greenfoot 9

En algunos escenarios, no tendrá que preocuparse por las acciones que se producen lejos de los actores principales, pero en otros juegos tendrá que supervisarlos constantemente.

22

Page 23: Greenfoot 9

En algunos escenarios, no tendrá que preocuparse por las acciones que se producen lejos de los actores principales, pero en otros juegos tendrá que supervisarlos constantemente.

23

Page 24: Greenfoot 9

Tenga en cuenta que hemos mantenido la puntuación de propiedad en privado, de modo que ningún actor ajeno a BeeWorld tenga acceso directo a la misma. Deben utilizar los métodos públicos getScore() y updateScore().

24

Page 25: Greenfoot 9

Conversión es un término con el que le va a resultar muy familiar durante este curso.

25

Page 26: Greenfoot 9

No podemos convertir todo lo que deseemos para que sea algo diferente. Debe existir una relación como entre World y BeeWorld o Actor y Bee. No podríamos convertir World en Actor, por ejemplo.

26

Page 27: Greenfoot 9

Debe tener en cuenta que esto es muy similar a nuestro último ejemplo. Creamos un campo de clase privada para almacenar el tipo de datos a los que deseamos acceder. A continuación, creamos un método público para devolver este valor.

27

Page 28: Greenfoot 9

BeeWorld myworld = (BeeWorld)getWorld();

Esta línea obtiene una referencia al mundo actual y la almacena en la variable myworld. Puesto que el tipo de retorno de getWorld es World, tenemos que convertirlo en un tipo BeeWorld.

Bee bee = myworld.getBee();

Estas líneas crean una variable bee que hará referencia a la abeja que devuelve nuestro método getBee();

Una vez que tenemos esta referencia, podemos utilizar la abeja que se ha devuelto para acceder a métodos de la instancia Bee.

Usamos los métodos getX() y getY() de la instancia Bee en el método de actor turnTowards. Esto significa que la araña siempre girará para estar frente a la instancia Bee en el mundo.

28

Page 29: Greenfoot 9

29

Page 30: Greenfoot 9

30

Page 31: Greenfoot 9