-
Notifications
You must be signed in to change notification settings - Fork 0
/
test2.py
122 lines (90 loc) · 3.95 KB
/
test2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import pygame
from pygame.locals import *
import sys
# Initialisation de pygame
pygame.init()
# Définition des couleurs
WHITE = (255, 255, 255)
# Taille initiale de la fenêtre
BASE_WIDTH, BASE_HEIGHT = 800, 600
screen = pygame.display.set_mode((BASE_WIDTH, BASE_HEIGHT), RESIZABLE)
infoObject = pygame.display.Info() # Définir infoObject ici
# Classe Ship
class Ship:
def __init__(self, x, y):
self.sprite = pygame.image.load("player.png")
self.x = x
self.y = y
self.bullets = [] # Liste pour stocker les lasers
def draw(self):
screen.blit(self.sprite, (self.x, self.y))
for bullet in self.bullets: # Dessinez tous les lasers
bullet.draw()
def move(self, dx):
infoObject = pygame.display.Info()
self.x += dx
self.y = (infoObject.current_h - (infoObject.current_h)/20)-65
if self.x > infoObject.current_w - 65:
self.x = infoObject.current_w - 65
if self.x < 0:
self.x = 0
def shot(self):
bullet = Bullet(self) # Créez un nouveau laser
self.bullets.append(bullet) # Ajoutez le laser à la liste
class Bullet:
def __init__(self, ship): #J'initialise mon 'Bullet'
self.sprite=pygame.image.load("bob4.svg") #Son sprite
self.x=ship.x #Ses coordonées
self.y=ship.y
def draw(self):
"""
Affichage du vaisseau
"""
screen.blit(self.sprite,(self.x,self.y)) #Je place mon missile à sa position
class App:
def __init__(self, speed=1):
screen.blit(background, (0, 0))
self.ship = Ship((infoObject.current_w / 2) , (infoObject.current_h - (infoObject.current_h / 20)-65))
self.speed = speed
self.pressed_keys = [] # Liste pour stocker les touches enfoncées
def update(self, key_events):
for event in key_events:
if event.type == pygame.KEYDOWN:
if event.key not in self.pressed_keys: # Ajoutez la touche à la liste si elle n'y est pas déjà
self.pressed_keys.append(event.key)
elif event.type == pygame.KEYUP:
if event.key in self.pressed_keys: # Supprimez la touche de la liste si elle y est
self.pressed_keys.remove(event.key)
# Déplacez le vaisseau
if pygame.K_LEFT in self.pressed_keys:
self.ship.move(-1 * self.speed)
if pygame.K_RIGHT in self.pressed_keys:
self.ship.move(1 * self.speed)
if pygame.K_SPACE in self.pressed_keys:
self.ship.shot()
# Mettez à jour la position de tous les lasers
for bullet in self.ship.bullets:
bullet.y -= 3 * self.speed
# Supprimez les lasers qui ont quitté l'écran
self.ship.bullets = [bullet for bullet in self.ship.bullets if bullet.y > -bullet.sprite.get_height()]
def draw(self):
screen.fill((255, 255, 255)) # J'efface l'écran précédent
self.ship.draw() # Je draw le vaisseau à sa nouvelle position
for bullet in self.ship.bullets: # Dessinez tous les lasers
bullet.draw()
pygame.display.flip() # J'affiche tous les sprites
pygame.display.set_caption('Invaders') #Je choisi le nom de ma fenetre
background = pygame.Surface(screen.get_size()) #Je crée mon fond d'écran
appli=App(2) #Je définie mon application, avec une valeur de vitesse
key_events = [] # Liste pour stocker les événements clavier
while True: # Boucle principale du jeu
for event in pygame.event.get(): # Récupère tous les événements pygame
if event.type == pygame.QUIT:
sys.exit()
# Stockez les événements clavier
if event.type in [pygame.KEYDOWN, pygame.KEYUP]:
key_events.append(event)
# Mettez à jour et dessinez le jeu
appli.update(key_events)
appli.draw()
key_events.clear() # Nettoyez la liste des événements clavier après les avoir traités