не понимаю как сделать чтоб ракет не уходила за экран.
мне говорили что можно сделать через проверку координат , но не совсем понимаю как это реализовать
мне говорили что можно сделать через проверку координат , но не совсем понимаю как это реализовать
Python:
import pygame
pygame.init()
import random
WIDTH = 1000
HEIGHT = 670
fps = 60
# Цвета
BLACK = "#000000" # Черный
WHITE = "#FFFFFF" # Белый
RED = "#FF0000" # Красный
GREEN = "#008000" # Зеленый
BLUE = "#0000FF" # Синий
CYAN = "#00FFFF" # Голубой
icon = pygame.image.load("media/icon.png")
pygame.display.set_icon(icon)
pygame.display.set_caption("Arkanoid")
screen = pygame.display.set_mode((WIDTH, HEIGHT))
smail = pygame.image.load("media/smile.png")
smail_rect = smail.get_rect()
smail_rect.center = (WIDTH // 2, HEIGHT // 2)
racket = pygame.image.load("media/racket.png")
racket_rect = racket.get_rect()
racket_rect.center = (WIDTH // 2, HEIGHT - 150)
speed_x = 5
speed_y = 5
timer = pygame.time.Clock()
run = True
while run:
timer.tick(fps)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
run = False
key = pygame.key.get_pressed()
if key[pygame.K_RIGHT]:
racket_rect.x += 10
elif key[pygame.K_LEFT]:
racket_rect.x -= 10
smail_rect.x += speed_x
smail_rect.y += speed_y
if smail_rect.right >= WIDTH:
speed_x = -5
elif smail_rect.left <= 0:
speed_x = 5
if smail_rect.bottom >= HEIGHT:
speed_y = - 5
elif smail_rect.top <= 0:
speed_y = 5
collide = smail_rect.colliderect(racket_rect)
if collide:
speed_y = - 5
screen.fill(CYAN)
screen.blit(smail, smail_rect)
screen.blit(racket, racket_rect)
pygame.display.update()
pygame.quit()
Последнее редактирование: