Μάθημα : PyGame
ΜΑΘΗΜΑ 4: Λίστα

# Λίστες - Νέοι εχθροί στο παιχνίδι
import pygame
from sys import exit
from random import randint
pygame.init()
screen = pygame.display.set_mode((1200, 700))
clock = pygame.time.Clock()
font = pygame.font.Font(None, 40)
player = pygame.Rect(100, 500, 30, 30)
star = pygame.Rect(600, 300, 15, 15)
# 20 μαύρες κουκίδες σε τυχαία σημεία και έλεγχος ώστε να μην πέφτει πάνω στον παίκτη και το star
dots = []
for i in range(20):
dot = pygame.Rect(randint(0, 1185), randint(0, 685), 15, 15)
while dot.colliderect(player) or dot.colliderect(star):
dot.topleft = (randint(0, 1185), randint(0, 685))
dots.append(dot)
points = 0
star_time = pygame.time.get_ticks() # πότε εμφανίστηκε το αστέρι
game_active = True
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if game_active:
# 7 δευτερόλεπτα για κάθε αστέρι
seconds_left = 7 - (pygame.time.get_ticks() - star_time) // 1000
if seconds_left <= 0:
game_active = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x = player.x - 5
if keys[pygame.K_RIGHT]:
player.x = player.x + 5
if keys[pygame.K_UP]:
player.y = player.y - 5
if keys[pygame.K_DOWN]:
player.y = player.y + 5
if player.left < 0:
player.left = 0
if player.right > 1200:
player.right = 1200
if player.top < 0:
player.top = 0
if player.bottom > 700:
player.bottom = 700
if player.colliderect(star):
points = points + 1
star.x = randint(0, 1185)
star.y = randint(0, 685)
star_time = pygame.time.get_ticks() # ο χρόνος ξαναρχίζει
# Οι κουκίδες αλλάζουν θέση, αλλά δεν σχεδιάζονται πάνω στον παίκτη ή στο αστέρι
for dot in dots:
dot.topleft = (randint(0, 1185), randint(0, 685))
while dot.colliderect(player) or dot.colliderect(star):
dot.topleft = (randint(0, 1185), randint(0, 685))
# Αν ακουμπήσεις μια κουκίδα, χάνεις
for dot in dots:
if player.colliderect(dot):
game_active = False
screen.fill('skyblue')
for dot in dots:
pygame.draw.circle(screen, 'black', dot.center, 8)
pygame.draw.rect(screen, 'red', player)
pygame.draw.rect(screen, 'gold', star)
screen.blit(font.render('Χρόνος: ' + str(seconds_left), True, 'black'), (20, 20))
screen.blit(font.render('Πόντοι: ' + str(points), True, 'black'), (1050, 20))
else:
screen.fill('navy')
screen.blit(font.render('Έχασες! Πόντοι: ' + str(points), True, 'white'), (450, 330))
pygame.display.update()
clock.tick(60)