Lo programacion orientada a objetos de ahora en adelante POO por ser esa su sigla, nos brinda un mundo de oportunidades, entre las mas entendibles estan la capacidad de reutilizar codigo, (similar a las funciones en ese aspecto) y la capacidad que tiene para ordenarlo, imaginate que tienes un codigo de unas 5000 lineas, encontrar algo ahi puede ser complicado.
En los terminos mas sencillos posibles un objeto es un grupo de datos y funciones. En terminos un poco mas tecnicos un objeto es un enfoque abstracto de un problema. un ejemplo practico seria el objeto personaje
En los terminos mas sencillos posibles un objeto es un grupo de datos y funciones. En terminos un poco mas tecnicos un objeto es un enfoque abstracto de un problema. un ejemplo practico seria el objeto personaje
#Codigo----
class Personaje:
def __init__(self):
self.posX = 400
self.posY = 300
self.color = (255, 255, 255)
self.radio = 50
def draw(self):
pygame.draw.circle(SCREEN, self.color,\
(self.posX, self.posY), self.radio)
pygame.display.update()
La palabra class se ocupa para avisarle al compilador que hemos empezado a escribir un objeto.
La funcion __init__ recibe el nombre tecnico de constructor, en terminos practicos simplemente lo que este puesto ahi seran los valores iniciales de nuestro objeto.
La funcion draw dibuja al personaje en la pantalla, el \ que hay ahi es simpelemente para escribir en 2 lineas, no cumple ningun rol a la hora de correr el juego.
La funcion __init__ recibe el nombre tecnico de constructor, en terminos practicos simplemente lo que este puesto ahi seran los valores iniciales de nuestro objeto.
La funcion draw dibuja al personaje en la pantalla, el \ que hay ahi es simpelemente para escribir en 2 lineas, no cumple ningun rol a la hora de correr el juego.
Repasemos el vocabulario antes de seguir:
argumento = valor que recibe una funcion.
clase = abstraccion del objeto.
atributo = cualquier variable o constante definido dentro de la clase.
metodo = cualquier funcion definida dentro de la variable que contenga el argumento self.
constructor = metodo que permite asignar valores iniciales a un objeto.
advertencia:
A todos los atributos de un objeto los debe preceder un self. , es esto lo que los convierte en atributos
class miclase:
def __init__(self):
a = 0 # Esto no es atributo y no se puede hacer nada con el desde fuera del codigo
self.a = 0 # Esto si es un atributo
Ahora volviendo a nuestro personaje, que ventajas tiene?, como lo usamos?.
Para que esto quede claro voy a juntar la clase personaje con el codigo anterior, y ahi notaran la utilidad, pero antes me falta por explicar un solo concepto que es el de instancia, una instancia es cuando se crea un objeto, esto se hace asi
mi_instancia = mi_objeto()
aqui va el codigo:
#Codigo----
import pygame
from sys import exit
SCREEN = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
class Personaje:
def __init__(self):
self.posX = 400
self.posY = 300
self.color = (255, 255, 255)
self.radio = 50
def draw(self):
pygame.draw.circle(SCREEN, self.color,\
(self.posX, self.posY), self.radio)
pygame.display.update()
personaje = Personaje()
while True:
clock.tick(60)
SCREEN.fill((0,0,0))
personaje.draw()
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
personaje.posX = personaje.posX - 10
elif event.key == pygame.K_RIGHT:
personaje.posX = personaje.posX + 10
Espero que haya quedado claro puesto que la programacion orientada objetos es muy util a la hora de desarrollar video juegos, en especial aquellos en 3D.
1 comentario:
Hola muy buen blog so de un nuevo blog pasate por el mio chao
Publicar un comentario