He estado viendo Python desde algunas semanas atrás y algunos días antes me he metido con Pygame, resulta que estoy creando un juego de practica, para ir obteniendo mas conocimientos y claro poder crear mejores proyectos en un futuro, solo que aun tengo algunas dudas. Aquí dejo el código del juego que estoy creando, al final explico mis dudas.
- Código: Seleccionar todo
#!/usr/bin/python
# ######################
# Programando un juego en Python utilizando Pygame como libreria
# Irving Rodriguez
# IDE: Eric4 && Geany
# S.O.: Ubuntu 10.10
# ######################
import pygame
from pygame.locals import *
pygame.init()
screen_x = 640
screen_y = 480
# Creamos pantalla y asignamos nombre
screen = pygame.display.set_mode((screen_x, screen_y))
pygame.display.set_caption('Juego en Python')
######################
# Posicion de mario
mario_pos_x = 1
mario_pos_y = 1
######################
#Cargamos las imagenes y visualizamos en pantalla
fondo = pygame.image.load('./data/fondo.jpg') .convert()
mario = pygame.image.load('./data/mario1.png') .convert_alpha()
mario2 = pygame.image.load('./data/mario4.png') .convert_alpha()
screen.blit(fondo, (0, 0))
#Rectas
recta_mario = mario.get_rect()
recta_mario2 = mario2.get_rect()
#Actualizamos pantalla
pygame.display.update()
#bucle
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
presionada = pygame.key.get_pressed()
if presionada[K_RIGHT]:
screen.blit(fondo, recta_mario, recta_mario)
recta_mario.x += 1
screen.blit(mario, recta_mario)
pygame.display.update()
if presionada[K_LEFT]:
screen.blit(fondo, recta_mario, recta_mario)
recta_mario.x -= 1
screen.blit(mario, recta_mario)
pygame.display.update()
if presionada[K_DOWN]:
screen.blit(fondo, recta_mario, recta_mario)
recta_mario.y += 1
screen.blit(mario, recta_mario)
pygame.display.update()
if presionada[K_SPACE]:
screen.blit(fondo, recta_mario, recta_mario)
recta_mario.y -= 1
screen.blit(mario2, recta_mario)
pygame.display.update()
Lo único que hace este juego es mover el personaje por la pantalla con las teclas de dirección(< >) y hacia abajo, brinca con la tecla "space".
Lo que quiero hacer es al moverlo no se salga de la pantalla, intente con una función pero no me sirve:
- Código: Seleccionar todo
def pos_mario(par1, par2):
if pos_mario_x < 1:
pos_mario_x = 600
También que al brincar regrese a la posición donde inicio, osea que baje, por que el personaje no conoce la gravedad

He intentado hacer que inicie el personaje desde una coordenada, por ejemplo (0,385) Pero no sucede eso, supongo que es por la recta que me inicia el personaje desde la coordenada (0,0), cuando hago eso se crean dos personajes, el que imprime en la primera coordenada, y el que inicia cuando presiono alguna tecla.
Espero me puedan ayudar. Gracias