Я создаю небольшую игру пинг понг)
И я столкнулся с проблемами:
после проигрыша шарик не останавливается
после нажатия на кнопку 'R' -рестарт шарик скачет только вверх и вниз
и пожалуйста напишите в коде чтобы место чёрного фона бала какая нибудь картика
ЗАРАНЕЕ СПАСИБО БОЛЬШОЕ
КОД:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
import pygame as pg import random pg.init() pg.font.init() TITLE = 'absolute.pong' WIDTH = 800 HEIGHT = 480 FPS = 60 WHITE = (255, 255, 255) BLACK = (0, 0, 0) PLATFORM_WIDH = 90 PLATFORM_HEIGHT = 22 PLATFORM_SPEED = 13 platform_rect= pg.rect.Rect(WIDTH / 2 - PLATFORM_WIDH / 2, HEIGHT - PLATFORM_HEIGHT * 2, PLATFORM_WIDH, PLATFORM_HEIGHT) CIRCLE_RADIUS = 15 CIRCLE_SPEED = 7 circle_frist_collide = False circle_x_speed = 0 circle_y_speed = CIRCLE_SPEED circle_rect = pg.rect.Rect(WIDTH / 2 - CIRCLE_RADIUS, HEIGHT /2 - CIRCLE_RADIUS, CIRCLE_RADIUS * 2, CIRCLE_RADIUS * 2) score = 0 ARIAL_FONT_PATH = pg.font.match_font('arial') ARIAL_FONT_48 = pg.font.Font(ARIAL_FONT_PATH, 48) ARIAL_FONT_36 = pg.font.Font(ARIAL_FONT_PATH, 36) screen = pg.display.set_mode([WIDTH, HEIGHT]) pg.display.set_caption(TITLE) clock = pg.time.Clock() game_over = False running = True while running: for event in pg.event.get(): if event.type == pg.QUIT: running = False continue elif event.type == pg.KEYDOWN: if event.key == pg.K_ESCAPE: running = False continue elif event.key == pg.K_r: game_over = False platform_rect.centerx = WIDTH / 2 platform_rect.bottom = HEIGHT - PLATFORM_HEIGHT circle_rect.center = [WIDTH / 2, HEIGHT / 2] circle_x_speed = 0 circle_y_speed = CIRCLE_SPEED score = 0 screen.fill(BLACK) if not game_over: keys = pg.key.get_pressed() if keys[pg.K_a]: platform_rect.x -= PLATFORM_SPEED elif keys[pg.K_d]: platform_rect.x += PLATFORM_SPEED if platform_rect.colliderect(circle_rect): if not circle_frist_collide: if random.randint(0, 1) == 0: circle_x_speed = CIRCLE_SPEED else: circle_x_speed = -CIRCLE_SPEED circle_frist_collide = True circle_y_speed = -CIRCLE_SPEED score += 1 pg.draw.rect(screen, WHITE, platform_rect) circle_rect.x += circle_x_speed circle_rect.y += circle_y_speed if circle_rect.bottom >= HEIGHT: game_over = True circle_y_speed = -CIRCLE_SPEED elif circle_rect.top <= 0: circle_y_speed = CIRCLE_SPEED elif circle_rect.left <= 0: circle_x_speed = CIRCLE_SPEED elif circle_rect.right >= WIDTH: circle_x_speed = -CIRCLE_SPEED pg.draw.circle(screen, WHITE, circle_rect.center, CIRCLE_RADIUS) score_surface = ARIAL_FONT_48.render(str(score), True, WHITE) if not game_over: screen.blit(score_surface, [WIDTH / 2 - score_surface.get_width() / 2, 15]) else: retry_surface = ARIAL_FONT_36.render('press R to restart', True, WHITE) screen.blit(score_surface, [WIDTH / 2 - score_surface.get_width() / 2, HEIGHT / 3]) screen.blit(retry_surface, [WIDTH / 2 - retry_surface.get_width() / 2, HEIGHT / 3 + score_surface.get_height()]) clock.tick(FPS) pg.display.flip() pg.quit() |