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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
| #!/usr/bin/python
# -*- coding: utf-8 -*-
#importation des bibliotheques nécessaires
import random
import pygame
from pygame.locals import *
pygame.init()
horloge = pygame.time.Clock()
from math import sqrt
# Initialisation de la fenetre
pygame.init()
# Creation de la fenetre
fenetre = pygame.display.set_mode((800,600))
# Variable qui continue la boucle si = 1, stoppe si = 0
continuer = 1
affichage_jeu = True
#Chargement et collage du fond
fond = pygame.image.load("imagespatial.png").convert()
fenetre.blit(fond, (0,0))
#Chargement et collage du personnage
perso = pygame.image.load("patate.png").convert_alpha()
position_perso = [150,275]
en_bas = True
#Chargement et collage de l'alien
perso2 = pygame.image.load("alien.png").convert_alpha()
position_perso2 = [-40,200]
#Chargement et collage du hublot
vd_hublot = [-5,0.25]
# XXX
x_hublot_init = 850
y_hublot_init = 225
hublot = pygame.image.load("hublot.png").convert_alpha()
#fenetre.blit(hublot, (int(x_hublot), int(y_hublot)))
positions_hublots = [ [10,267.0], [210,257.0], [410,247.0], [610,237.0], [810,227.0] ]
#Chargement et collage de la caisse
vd_caisse = [-5,0.25]
caisse = pygame.image.load("caisse.png").convert_alpha()
x_caisse_init = 850
y_caisse_init_haut = 157
y_caisse_init_bas =298
#fenetre.blit(caisse, (int(x_caisse), int(y_caisse)))
MAX_CAISSES=4
positions_caisses = [ [180,200], [650, 230], [500, 235], [760,230] ]
positions_caisses = list()
# horloge pour ralentir
horloge = pygame.time.Clock()
fenetre.blit(perso,position_perso)
fenetre.blit(perso2,position_perso2)
#Rafraichissement de l'écran car l'image ne peut pas s'afficher autrement
pygame.display.flip()
score = 0
#BOUCLE INFINIE
continuer = 1
while continuer:
# 30 fps image par seconde
horloge.tick(40)
for event in pygame.event.get(): #Attente des événements
if event.type == QUIT: # (ALT F4 ou appuyer sur la croix)
continuer = 0
if event.type == KEYDOWN:
if event.key == K_UP: #Si "fleche du haut"
#On fait sauter le personnage pour le coller au plafond
perso = pygame.transform.rotate(perso, 180)
if en_bas :
position_perso[0] = position_perso[0]+30
position_perso[1] = position_perso[1]-65
en_bas = False
else :
position_perso[0] = position_perso[0]-30
position_perso[1] = position_perso[1]+65
en_bas = True
# faut-il creer une caisse ?
if random.random() > 0.95 :
# verifier que la caisse n'est pas trop pres de la precedente...
if len(positions_caisses) >0 :
position_derniere_caisse = positions_caisses[-1]
print position_derniere_caisse
print - ( position_derniere_caisse[0] - x_caisse_init )
if x_caisse_init - position_derniere_caisse[0] > 150 :
# faut-il la creer en haut ou en bas ?
if random.random() > 0.5 :
positions_caisses.append([x_caisse_init, y_caisse_init_haut])
else :
positions_caisses.append([x_caisse_init, y_caisse_init_bas])
else :
if random.random() > 0.5 :
positions_caisses.append([x_caisse_init, y_caisse_init_haut])
else :
positions_caisses.append([x_caisse_init, y_caisse_init_bas])
#Re_collage caisses
# deplacer toutes les caisses de vd_caisse
for i in range(len(positions_caisses)) :
print positions_caisses
positions_caisses[i][0] = positions_caisses[i][0] + vd_caisse[0]
positions_caisses[i][1] = positions_caisses[i][1] + vd_caisse[1]
#collisions
#print '***************************'
#print position_perso[1]
#print positions_caisses[i][1]
#print sqrt(((position_perso[1]) - (positions_caisses[i][1]))**2)
#print '***************************'
* if en_bas == False:
*
* if (position_perso[0] +50 > positions_caisses[i][0]) and (position_perso[i][1] < positions_caisses[i][1]) :
* affichage_jeu = False
*
* if en_bas == True:
*
* if (position_perso[0] +50 > positions_caisses[i][0]) and (position_perso[i][1] < positions_caisses[i][1]) :
*
* affichage_jeu == False
*
# enlever la caisse qui sort de l'ecran
if len(positions_caisses)>0 and positions_caisses[0][0] < -75 :
positions_caisses.remove(positions_caisses[0])
score = score + 1
#Re_collage hublot
for i in range(len(positions_hublots)) :
positions_hublots[i][0] = positions_hublots[i][0] + vd_hublot[0]
positions_hublots[i][1] = positions_hublots[i][1] + vd_hublot[1]
if positions_hublots[i][0] < -250 :
positions_hublots[i][0] = x_hublot_init
positions_hublots[i][1] = y_hublot_init
#Re_collage personnages
fenetre.blit(fond,(0,0))
for x,y in positions_hublots :
fenetre.blit(hublot, (int(x), int(y)))
fenetre.blit(perso2, position_perso2)
for x,y in positions_caisses :
fenetre.blit(caisse, (int(x), int(y)))
if affichage_jeu:
fenetre.blit(perso, position_perso)
#affichage du score à l'écran
print 'score : ', score
font = pygame.font.Font(None, 36)
text = font.render(str(score), 1,(180, 100, 20))
textpos = text.get_rect()
textpos.centerx = 730
textpos.centery = 530
fenetre.blit(text, textpos)
#Rafraichissement
pygame.display.flip() |
Partager