מספרים אקראיים
חלק מהיחידה Python בחלון משחק במסלול ה-Pygame של Coddy. שיעור 28 מתוך 32.
המודול random של Python בוחר מספרים באקראי. ייבאו אותו בראש התוכנית, מעל או מתחת ל־import pygame:
import randomrandom.randint(a, b) מחזירה מספר שלם מ־a עד b, כולל שני הקצוות. random.choice(items) בוחרת פריט אחד מתוך רשימה:
x = random.randint(20, 620)
size = random.choice([3, 4, 5])כל קריאה בוחרת שוב, לכן קראו לה ברגע שבו אתם צריכים ערך חדש. כוכב שמוצב בלחיצה על Space:
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
x = random.randint(20, 620)
y = random.randint(60, 300)
stars.append((x, y))שימו לב לסוגריים הכפולים ב־stars.append((x, y)): append מקבלת פריט אחד, והפריט הוא הטאפל (x, y). אם תבחרו את x ואת y פעם אחת לפני לולאת המשחק, כל כוכב יופיע באותו מקום.
אתגר
בינוניתנו למקש הרווח לפזר כוכבים:
- הוסיפו
import randomבחלק העליון. - כשמגיע אירוע
KEYDOWNעבורK_SPACE, בחרוx = random.randint(20, 620)ו־y = random.randint(60, 300), והוסיפו את(x, y)אלstars. - לחיצות עדיין מוסיפות כוכבים כמו קודם.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# הגדירו כאן את הדברים, לפני לולאת המשחק.
stars = []
font = pygame.font.Font(None, 36)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# שנו כאן את הדברים פעם אחת בכל פריים.
screen.fill((20, 24, 48))
# ציירו כאן, אחרי מילוי הרקע.
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה Python בחלון משחק
תרגלו בעצמכם: Pygame אונליין