from machine import Pin, I2C import ssd1306 import time # Inicjalizacja OLED i2c = I2C(scl=Pin(5), sda=Pin(4)) # Dostosuj, jeśli używasz innych pinów oled = ssd1306.SSD1306_I2C(128, 64, i2c) # Inicjalizacja przycisków button_up_left = Pin(12, Pin.IN, Pin.PULL_UP) button_down_left = Pin(13, Pin.IN, Pin.PULL_UP) button_up_right = Pin(2, Pin.IN, Pin.PULL_UP) button_down_right = Pin(14, Pin.IN, Pin.PULL_UP) # Parametry gry paddle_height = 16 game_speed = 0.02 # Funkcja do resetu gry def reset_game(): global paddle_left_y, paddle_right_y, ball_x, ball_y, ball_dx, ball_dy # Paletki paddle_left_y = 26 paddle_right_y = 26 # Piłka ball_x = 64 ball_y = 32 ball_dx = 2 ball_dy = 2 # Funkcja do rysowania stanu gry def draw_game(): oled.fill(0) # Wyczyść ekran # Rysuj paletkę lewą oled.fill_rect(2, paddle_left_y, 3, paddle_height, 1) # Rysuj paletkę prawą oled.fill_rect(123, paddle_right_y, 3, paddle_height, 1) # Rysuj piłkę oled.fill_rect(ball_x, ball_y, 3, 3, 1) # Wyświetl zmiany oled.show() # Reset gry na początku reset_game() # Główna pętla gry while True: # Sterowanie paletką lewą if not button_up_left.value() and paddle_left_y > 0: paddle_left_y -= 2 if not button_down_left.value() and paddle_left_y < (64 - paddle_height): paddle_left_y += 2 # Sterowanie paletką prawą if not button_up_right.value() and paddle_right_y > 0: paddle_right_y -= 2 if not button_down_right.value() and paddle_right_y < (64 - paddle_height): paddle_right_y += 2 # Ruch piłki ball_x += ball_dx ball_y += ball_dy # Odbicia piłki od górnej i dolnej ściany if ball_y <= 0 or ball_y >= 61: ball_dy *= -1 # Odbicia od paletki lewej if ball_x <= 5 and paddle_left_y <= ball_y <= paddle_left_y + paddle_height: ball_dx *= -1 # Odbicia od paletki prawej if ball_x >= 120 and paddle_right_y <= ball_y <= paddle_right_y + paddle_height: ball_dx *= -1 # Sprawdzenie, czy piłka wyszła poza ekran if ball_x < 0 or ball_x > 127: oled.fill(0) oled.text("Game Over!", 30, 24, 1) oled.show() time.sleep(3) # Wyświetlenie komunikatu przez 3 sekundy reset_game() # Restart gry continue # Narysuj stan gry draw_game() time.sleep(game_speed)