הגעה אל היעד
שיעור 8 מתוך 40 בקורס יוצרים משחקים עם Pygame של Coddy.
למשחק דרושה מטרה. ציירו ריבוע ירוק בפינה הימנית התחתונה, וכשהריבוע של השחקן נכנס אליו, השחקן מנצח.
המטרה נמצאת ב־(420, 300) וגודלה 60 על 60. הריבוע של השחקן נמצא בתוך המטרה כשהצד השמאלי שלו נמצא ב־420 או יותר והחלק העליון שלו ב־300 או יותר. שני התנאים חייבים להתקיים, לכן חברו ביניהם באמצעות and.
הניצחון חייב להישאר בתוקף. שמרו אותו במשתנה שמתחיל ב־False והופך ל־True רק פעם אחת:
won = False
while running:
# הזיזו את הריבוע
if x >= 420 and y >= 300:
won = True
if won:
screen.fill((40, 110, 70))
else:
screen.fill((30, 30, 46))ברגע ש־won מקבל את הערך True, שום דבר לא מחזיר אותו לאחור, ולכן הרקע נשאר ירוק גם אם הריבוע יוצא מהמטרה.
אתגר
קל- לפני הלולאה, הגדר את
won = False. - אחרי הגבלת
xו-y, הגדר אתwon = Trueכאשרx >= 420וגםy >= 300. - מלא את המסך בצבע
(40, 110, 70)כאשרwonהוא true, ובצבע(30, 30, 46)אחרת. - לפני הריבוע של השחקן, צייר את היעד: בירוק
(60, 200, 120)במיקום(420, 300, 60, 60).
נסו בעצמכם
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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יוצרים משחקים עם Pygame
תרגלו בעצמכם: Pygame אונליין