python2dspiel/main.py

144 lines
4.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pygame
from pygame.locals import *
from random import randint
LARGEUR = 900
HAUTEUR = 700
fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
fond = pygame.sprite.Sprite()
fond.image = pygame.image.load("terre.jpg").convert()
fond.rect = fond.image.get_rect()
fond.rect.x = 55
fond.rect.y = 0
def creer_ananas(pos_x, pos_y):
ananas = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(ananas)
ananas.image = pygame.image.load("ananas.png").convert_alpha()
ananas.image = pygame.transform.scale(ananas.image,[200, 100])
ananas.rect = ananas.image.get_rect()
ananas.rect.x = pos_x
ananas.rect.y = pos_y
return ananas
pygame.init()
clock = pygame.time.Clock()
running = True
# Avion, das der Spieler steuert
avion = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(avion)
avion.image = pygame.image.load("avion.png").convert_alpha()
avion.image = pygame.transform.scale(avion.image,[120, 120])
avion.rect = avion.image.get_rect()
avion.rect.x = 200
avion.rect.y = 400
liste_des_sprites = pygame.sprite.LayeredUpdates()
liste_des_sprites.add(fond)
liste_sprites_ananas = pygame.sprite.LayeredUpdates()
liste_des_sprites.add(avion)
# Liste der ananas
liste_d_ananas = []
# Hilfetext 1
police = pygame.font.Font(None, 25)
texte = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(texte)
texte.image = police.render("ALERTE! La planète terre est attaquée par une flotte davions spatiaux!", 1, (10, 10, 10),(255, 90, 20))
texte.rect = texte.image.get_rect()
texte.rect.centerx = 360
texte.rect.centery = 30
liste_des_sprites.add(texte)
# Hilfetext 2
police = pygame.font.Font(None, 20)
texte2 = pygame.sprite.Sprite()
texte2.image = police.render("Vous vous trouver dans lengin SU-PER12. Votre mission est déliminer le plus dennemis possible!", 1, (10, 10, 10),(255, 90, 20))
texte2.rect = texte2.image.get_rect()
texte2.rect.centerx = 360
texte2.rect.centery = 60
liste_des_sprites.add(texte2)
# Hilfetext 3
police = pygame.font.Font(None, 20)
texte3 = pygame.sprite.Sprite()
texte3.image = police.render("Pour ce faire, appuyez sur « espace » pour tirer et bougez la souris pour manoeuvrer votre SU-PER12!", 1, (10, 10, 10),(255, 90, 20))
texte3.rect = texte3.image.get_rect()
texte3.rect.centerx = 360
texte3.rect.centery = 80
liste_des_sprites.add(texte3)
# Hilfetext 4
police = pygame.font.Font(None, 20)
texte4 = pygame.sprite.Sprite()
texte4.image = police.render("Bonne chance!", 1, (10, 10, 10),(255, 90, 20))
texte4.rect = texte4.image.get_rect()
texte4.rect.centerx = 360
texte4.rect.centery = 100
liste_des_sprites.add(texte4)
# Hilfetext 5
police = pygame.font.Font(None, 20)
texte5 = pygame.sprite.Sprite()
texte5.image = police.render("ALERTE, PLANETE TERRE EST SOUS ATTAQUE", 1, (10, 10, 10),(255, 90, 20))
texte5.rect = texte5.image.get_rect()
texte5.rect.centerx = 360
texte5.rect.centery = 1500
liste_des_sprites.add(texte5)
gameover = False
score = 0
# Hautschleife
while running:
liste_des_sprites.draw(fenetre)
liste_sprites_ananas.draw(fenetre)
# Benutzer Aktionen auswerten
for event in pygame.event.get():
if event.type == pygame.QUIT:
# Spiel beenden, wenn X gedrückt wurde
running = False
if event.type == MOUSEMOTION:
# Bewegung des avion
avion.rect.x = event.pos[0]
if event.type == MOUSEBUTTONDOWN:
print("Peng")
keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE]:
# Hilfetext bei Leertaste löschen
liste_des_sprites.remove(texte)
# Steuerung des Spiels
if gameover == False:
nombre_aleatoire = randint(0, 100)
if nombre_aleatoire == 100:
# Neues ananas erzeugen
position_x_aleatoire = randint(0, LARGEUR - 60)
nouvel_ananas = creer_ananas(position_x_aleatoire, -100)
liste_d_ananas.append(nouvel_ananas)
liste_sprites_ananas.add(nouvel_ananas)
# Alle ananas verarbeiten
for ananas in liste_d_ananas:
ananas.rect.y += 5
if ananas.rect.colliderect(avion):
# ananas erfolgreich abgefangen
print("COLLISION")
score += 1
liste_d_ananas.remove(ananas)
ananas.kill()
if ananas.rect.y > HAUTEUR:
# ananas nicht abgefangen
gameover = True
police = pygame.font.Font(None, 36)
texte = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(texte)
texte.image = police.render("Gameover. L'ennemi est entré dans notre atmosphère! Réessaye de tuer tout les ennemis! Score : "+ str(score), 1, (10, 10, 10),(255, 90, 20))
texte.rect = texte.image.get_rect()
texte.rect.centerx = 360
texte.rect.centery = 450
liste_des_sprites.add(texte)
pygame.display.flip()
fenetre.fill((36,242,232))
clock.tick(60)
pygame.quit()