Фон және ойын кейіпкерлері
Терезе дайын — бірақ ол бос сахна. Бүгін оны безендіреміз: артқы фон саламыз және басты кейіпкерді шығарамыз. Ол үшін экранның «мекенжай жүйесін» — координаттарды түсінуіміз керек: кейіпкерге «мына жерде тұр» деп қалай айтамыз? Сюрприз: экран координаттары математика сабағындағыдан өзгеше жұмыс істейді!
Экран координаттары: бастапқы нүкте (0; 0) — терезенің СОЛ ЖОҒАРҒЫ бұрышы. X оңға өседі, Y — ТӨМЕН өседі.
Математикада Y жоғары өседі, ал экранда — ТӨМЕН! Себебі мәтін де солай оқылады: жоғарыдан төмен, солдан оңға. 800×600 терезеде: сол жоғарғы бұрыш — (0; 0), оң жоғарғы — (800; 0), сол төменгі — (0; 600), оң төменгі — (800; 600).
Суретсіз-ақ ойын жасауға болады — фигуралармен: кейіпкер — тіктөртбұрыш, доп — шеңбер. Көп атақты ойын дәл осылай басталған (Pong!).
# Тіктөртбұрыш: (x, y, ені, биіктігі) pygame.draw.rect(screen, (255, 0, 0), (100, 200, 50, 80)) # Шеңбер: орталығы (x, y), радиусы pygame.draw.circle(screen, (0, 0, 255), (400, 300), 25) # Сызық: басы, соңы, қалыңдығы pygame.draw.line(screen, (0, 255, 0), (0, 550), (800, 550), 3)
draw.rect аргументтері: (қайда, түс, (x, y, ені, биіктігі)) — x, y — фигураның СОЛ ЖОҒАРҒЫ бұрышы. draw.circle: (қайда, түс, (x, y), радиус) — x, y — ОРТАЛЫҒЫ.
Спрайт — ойын кейіпкерінің немесе затының 2D суреті. pygame.image.load("файл.png") — суретті файлдан жүктейді.
fon = pygame.image.load("fon.png") hero = pygame.image.load("hero.png")
Маңызды: сурет файлы программамен БІР қалтада жатуы керек (немесе толық жолын көрсету қажет), әйтпесе FileNotFoundError шығады. PNG форматы ыңғайлы — мөлдір фонды қолдайды: кейіпкердің айналасы «ақ қорап» болып тұрмайды.
Суреттерді жүктеу ойын циклінен БҰРЫН бір-ақ рет жасалады: әр кадрда қайта жүктеу — ойынды миллион есе баяулататын қате.
blit — суретті экранға «мөрлеу»:
screen.blit(hero, (100, 200)) — hero суретінің сол жоғарғы бұрышы (100; 200) нүктесіне қойылады.
while running: ... screen.blit(fon, (0, 0)) # 1-қабат: фон screen.blit(hero, (x, y)) # 2-қабат: кейіпкер pygame.display.update()
Салу реті = қабаттар реті: соңғы blit ҮСТІНДЕ жатады. Алдымен фон (бүкіл экранды жабады), үстіне кейіпкерлер, ең үстіне — ұпай жазуы. Ретті шатастырсаң — фон кейіпкерді «жұтып қояды».
- Координаттар: (0; 0) — сол жоғарғы бұрыш; X оңға, Y ТӨМЕН өседі.
- Фигуралар: draw.rect (x, y — сол жоғарғы бұрыш), draw.circle (x, y — орталық).
- Спрайт — кейіпкер суреті: image.load циклден БҰРЫН, бір рет.
- blit — суретті мөрлеу; салу реті = қабаттар: фон → кейіпкер → интерфейс.
- PNG — мөлдір фонды қолдайды; файл программамен бір қалтада болсын.