Capai Tujuan
Pelajaran 8 dari 40 dalam kursus Buat Game dengan Pygame di Coddy.
Sebuah game membutuhkan tujuan. Gambar persegi hijau di sudut kanan bawah, dan saat persegi pemain masuk ke dalamnya, pemain menang.
Tujuannya berada di (420, 300) dan berukuran 60 kali 60. Persegi pemain berada di dalamnya saat sisi kirinya berada di 420 atau lebih dan sisi atasnya di 300 atau lebih. Keduanya harus benar, jadi gabungkan dengan and.
Kondisi menang harus bertahan. Simpan dalam variabel yang dimulai dengan False dan hanya berubah menjadi True:
won = False
while running:
# gerakkan kotak
if x >= 420 and y >= 300:
won = True
if won:
screen.fill((40, 110, 70))
else:
screen.fill((30, 30, 46))Setelah won bernilai True, tidak ada yang mengubahnya kembali, jadi latar belakang tetap hijau meskipun persegi keluar dari tujuan.
Tantangan
Mudah- Sebelum perulangan, tetapkan
won = False. - Setelah membatasi
xdany, tetapkanwon = Truesaatx >= 420dany >= 300. - Isi layar dengan
(40, 110, 70)saatwonbernilai true, dan dengan(30, 30, 46)jika tidak. - Sebelum menggambar persegi pemain, gambar tujuan: warna hijau
(60, 200, 120)pada(420, 300, 60, 60).
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()
x, y = 220, 160
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
speed = 4
if keys[pygame.K_SPACE]:
speed = 8
if keys[pygame.K_LEFT]:
x -= speed
if keys[pygame.K_RIGHT]:
x += speed
if keys[pygame.K_UP]:
y -= speed
if keys[pygame.K_DOWN]:
y += speed
x = max(0, min(x, 480 - 40))
y = max(0, min(y, 360 - 40))
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Buat Game dengan Pygame
1Perulangan Game
Buka JendelaIsi LatarLatihan sendiri: Playground Pygame