Estoy intentando crear un sprite que aparezca cada vez en una posición aleatoria dentro de la ventana.
El sprite que debe aparecer en una posición aleatoria cada vez, es el objetivo (también el enemigo, pero eso mas adelante, "cuando sepa usar random").
He estado leyendo un poco de random, pero no sé exactamente como usarlo.
Es un juego basado en squarez, que consiste en recoger el mayor numero de "objetivos" (corazones sanos), sin ser alcanzado por los "enemigos" (corazones heridos) que se mueven de izquierda a derecha y de arriba a abajo a una velocidad constante entre tres velocidades. Cada vez que se coja un objetivo, tiene que aparecer un enemigo nuevo en una posición aleatoria, y a una velocidad también aleatoria entre 1 y 3 (pero eso ya lo iré viendo).
- Código: Seleccionar todo
# -*- coding: utf-8 -*-
import pygame, random
from pygame.locals import *
from pygame.sprite import Sprite
width = 800
height = 600
# Clase Jugador
class Fantasma(pygame.sprite.Sprite):
def __init__(self):
self.image = pygame.image.load("boo1.png").convert_alpha()
self.rect = self.image.get_rect()
self.rect.move_ip(200, 300)
def update(self):
teclas = pygame.key.get_pressed()
if self.rect.left >=1:
if teclas[K_LEFT]:
self.rect.x -= 3
if self.rect.right <=width:
if teclas[K_RIGHT]:
self.rect.x += 3
if self.rect.top >= 1:
if teclas[K_UP]:
self.rect.y -= 3
if self.rect.bottom <= height:
if teclas[K_DOWN]:
self.rect.y += 3
#Clase Objetivo
class Objetivo (pygame.sprite.Sprite):
speed = 13
def __init__(self):
self.image = pygame.image.load("c1.png").convert_alpha()
self.rect = self.image.get_rect()
self.rect.move_ip(300, 200)
if __name__ == '__main__':
salir = False
#ventana
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("CazAmoR")
fondo = pygame.image.load("fa.jpg").convert()
#objetos
fantasma = Fantasma()
objetivo = Objetivo()
while not salir:
fantasma.update()
#actualizacion
screen.blit(fondo, (0, 0))
screen.blit(fantasma.image, fantasma.rect)
screen.blit(objetivo.image, objetivo.rect)
pygame.display.flip()
#eventos
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
salir = True
¿Cómo uso random en este caso?
También tengo la clase enemigo, que empieza así, debería aparecer el primero, al recoger el primer objetivo (pero eso ya lo iré viendo).
- Código: Seleccionar todo
# Clase Enemigo
class Enemigo(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load('cb1.png').convert_alpha()
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2.0
self.rect.centery = HEIGHT / 2.7
self.speed = [0.2, -0.2]
def update(self, time):
self.rect.centerx += self.speed[0] * time
# self.rect.centery += self.speed[1] * time
if self.rect.left <= 0 or self.rect.right >= WIDTH:
self.speed[0] = -self.speed[0]
self.rect.centerx += self.speed[0] * time
if self.rect.top <= 0 or self.rect.bottom >= HEIGHT:
self.speed[0] = -self.speed[1]
self.rect.centery += self.speed[1] * time
Esto es casi todo lo que tengo de código, ¿está bien?
Para haceros una idea os dejo una imagen:

Esto es un esquema mental en modo gráfico... ;-P
Saludos
Pd: Esto lo hago a modo entretenimiento... no pretendo programar a nivel profesional.
Pd1: Me acabo de dar cuenta, que no está en el hilo correcto, muévanlo si es necesario, y disculpen las molestias.