A mejorar:
- Tan sólo tengo especificada una coordenada para las estrellas cuando el Tux pise, tengo que mejorar esto haciendolo un rectangulo, es un poco difícil de explicar.
- Música!
- Más imágenes de Tux
- Movimiento de Tux más elegante
- Efectos de cámara
- etc.

http://www.megaupload.com/?d=6OHBI1E0
http://www.filefactory.com/file/af72bbb ... mer_tar_gz
- Código: Seleccionar todo
#Importamos los modulos necesarios
import pygame
from pygame.locals import *
from random import randrange
pygame.init()
class Personaje(pygame.sprite.Sprite):
def __init__(self,Screen):
pygame.sprite.Sprite.__init__(self)
self.Screen = Screen
self.image = pygame.image.load('ima/Tux.png').convert_alpha()
self.rect = self.image.get_rect()
self.rect.x = 300
self.rect.y = 100
def Update(self):
self.rect.clamp_ip((0,0,700,275)) #Delimitamos la zona por la que se podra mover el personaje x=700,y=275
key = pygame.key.get_pressed()
if key[K_UP]:
self.rect.y -= 6
elif key[K_DOWN]:
self.rect.y += 6
elif key[K_RIGHT]:
self.rect.x += 6
elif key[K_LEFT]:
self.rect.x -= 6
if self.rect.x == 150 and self.rect.y == 160:
self.Metamorfosis()
elif self.rect.x == 498 and self.rect.y == 160:
self.Metamorfosis()
self.Screen.blit(self.image,(self.rect.x,self.rect.y))
def Metamorfosis(self):
Tux_array = []
Number_of_Tux = 8
for Numero in range(1,Number_of_Tux):
Tux_array.append(pygame.image.load("ima/Tux/%d.png" %Numero).convert_alpha())
Tux_Number = randrange(Number_of_Tux)
print Tux_Number
self.image = Tux_array[Tux_Number-1]
self.Update()
#La clase para la pantalla principal, la cual no se movera en la version 1.
def Escenario(Screen):
Numero_Bloques = Cargar_imagen_Bloques()
Archivo = open("Arrays.txt","r")
Contenido = Archivo.readlines()
Archivo.close()
#Determinamos el numero de Filas y el numero de Columnas a traves del Array.txt
Filas = len(Contenido)
Columnas = len(Contenido[0]) -1 # -1 por el salto de linea.
#Este ciclo de fors es para imprimir en pantalla todas las columnas y lineas, no os preocupeis
#hasta a mi me cuesta un poco de entender xD
for Fila in range(Filas):
for Columna in range(Columnas):
indice = int(Contenido[Fila][Columna])
x = Columna * 50
y = Fila * 31
Screen.blit(Numero_Bloques[indice], (x,y))
def Cargar_imagen_Bloques():
Numero_Bloques = []
#Este ciclo for carga las tres imagenes distintas y las almacena en una array.
for Bloques in range(5):
Numero_Bloques.append(pygame.image.load("ima/%d.png" %Bloques).convert_alpha())
return Numero_Bloques
def main():
#Definimos la pantalla y iniciamos el ciclo infinito para empezar el juego
Screen = pygame.display.set_mode((700,340))
pygame.display.set_caption("Mi primer RPG")
Sky = pygame.image.load("ima/Sky.jpg")
Personaje1 = Personaje(Screen)
Running = True
while Running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Running = False
Screen.blit(Sky,(0,0))
Escenario(Screen)
Personaje1.Update()
pygame.time.wait(100)
pygame.display.flip()
if __name__ == '__main__':
main()