Ойын нәтижесін есептеу
Бөлімнің қорытынды сабағы: ойын жасаудың барлық бөлшегін (терезе, фон, кейіпкер, қозғалыс, соқтығысу) біріктіріп, НАҚТЫ нәтижесі бар ойын құрастырамыз. Кез келген ойын соңында бір нәрсе шешілуі керек — ұпай саны, жеңіс немесе жеңіліс. Бұл сабақта «Футболшы» ойынының мысалында ұпай есептеу мен ойынды аяқтау логикасын үйренеміз.
Кез келген ойынның түпкі идеясында ойыншылардың біреуі жеңу, біреуі жеңілу немесе тең ойнауы керек — ойын белгілі бір қорытынды НӘТИЖЕГЕ жетуі тиіс.
«Футболшы» ойынының мақсаты: футболшы допты басымен қайтарып, допты жерге түсірмей мүмкіндігінше көп ұпай жинау керек. Футболшыға 3 «өмір» беріледі — доп 3 рет жерге түскенде ойын аяқталады. Доп жоғарғы шекараға (қабырғаға) соғылған сайын 1 ұпай қосылады.
Экранда мәтін (ұпай саны, хабарлама) көрсету үшін pygame.font модулі үш қадаммен қолданылады:
# 1. Қаріп нысанын құру score_font = pygame.font.Font(None, 50) # 2. Мәтінді суретке (Surface) айналдыру score_surf = score_font.render(str(score), 1, (0, 0, 0)) # 3. Экранға шығару screen.blit(score_surf, [10, 10])
Доп футболшыдан немесе жоғарғы қабырғадан серпілгенде, ұпай саны артады және мәтін ҚАЙТА render етіледі — өйткені render() тек сол сәттегі жолдың кескінін жасайды, автоматты жаңармайды.
if self.rect.top <= 0: self.speed[1] = -self.speed[1] score = score + 1 score_surf = score_font.render(str(score), 1, (0, 0, 0))
lives — ойыншыға берілген қателесу мүмкіндігінің саны. Доп төменгі шекараға жеткен сайын
lives бірге азаяды; lives == 0 болғанда ойын аяқталады.
if myBall.rect.top >= screen.get_rect().bottom: lives = lives - 1 if lives == 0: final_text2 = "Upailarsany: " + str(score) ft2_font = pygame.font.Font(None, 50) ft2_surf = ft2_font.render(final_text2, 1, (255, 0, 0)) screen.blit(ft2_surf, [screen.get_width()/2 - ft2_surf.get_width()/2, 200]) pygame.display.flip() done = True else: pygame.time.delay(1000) myBall.rect.topleft = [50, 50]
Мұнда screen.get_width()/2 - ft2_surf.get_width()/2 формуласы мәтінді экранның дәл ортасына (горизонталь бойынша) орналастыру үшін қолданылады — мәтіннің жарты ені экран ортасынан алынып тасталады.
- pygame.font модулі: Font() → render() → blit() — үш қадам.
- Ұпай (score) мен өмір (lives) — ойын нәтижесінің екі негізгі көрсеткіші.
- Ұпай өзгерген сайын мәтінді ҚАЙТА render ету керек.
- lives==0 — ойынды аяқтап, қорытынды нәтижені экранға шығару шарты.