aalexislg
Messages postés3Date d'inscriptionlundi 25 mai 2015StatutMembreDernière intervention25 mai 2015
-
25 mai 2015 à 01:16
aalexislg
Messages postés3Date d'inscriptionlundi 25 mai 2015StatutMembreDernière intervention25 mai 2015
-
25 mai 2015 à 15:06
Bonjour tout le monde !
J'ai pour projet de faire un jeu, un shoot them up. Cependant je rencontre des problèmes.
Mon vaisseau se déplace exclusivement sur une seule ordonnée (il peut aller que à droite ou a gauche) et le problème est que quand il va trop a gauche ou a droite il sort de la fenêtre. Je voudrais qu'il soit bloqué aux 2 extrémités de la fenêtre et qu'il reste visible sur l'écran.
Après de nombreuses recherches et essais sans succès je m'en remet à vous : savez vous quelles lignes de code écrire ?:)
################################### # # # Programme : Space invaders # # Auteur :SteevenBaptisteAlexis # # Date de creation : 2015 # # # ###################################
########################################## # # # Importations des fonctions nécessaires # # # ########################################## from Tkinter import * #CHoisi la librairie Tkinter ########################################## # # # fonctions personnelles # # # ##########################################
# définition des gestionnaires # d'événements : def move(): "déplacement de la balle" global x1, y1, dx, dy, flag #x1,y1=coord ennemis - x2,y2=vaisseau - x3,y3=missile - dx, dy x1, y1 = x1 +dx, y1 + dy if x1 >600: x1, dx, dy = 600, -15, 0 if y1 >600: y1, dx, dy = 600, -15, 0 if x1 <10: x1, dx, dy = 10, 15, 0 if y1 <10: y1, dx, dy = 10, 15, 0 canevas.coords(boule_bleue,x1,y1,x1+30,y1+30) if flag >0: root.after(50,move) # =>
def move_tir(): "déplacement de la balle" global y3, laser, flag_tir, boule_bleue, x1, y1, boule_vert, x10, y10 y3 = y3 + dy3 canevas.coords(laser,x3-5,y3-5,x3+5,y3+5) if y3>0: root.after(30,move_tir) # => if abs(x3-x1)<30 and abs(y3-y1)<30: canevas.delete(boule_bleue) #disparition de la boule au contact du missile x1, y1 = 10, 10 ################################### boule_bleue = canevas.create_oval(x1, y1, x1+30, y1+30, width=2, fill='blue') ################## if y3 < 0: flag_tir = 1
def stop_it(): "arret de l'animation" global flag flag =0
def start_it(): "démarrage de l'animation" global flag if flag ==0: # pour ne lancer qu'une seule boucle flag =1 move()
# procédure générale de déplacement : def avance(gd, hb): #maj de l'interface avc le vaisseau qui bouge (ses coordonnées global x2, y2 x2, y2 = x2 +gd, y2 +hb canevas.coords(mon_vaisseau, x2, y2)
# gestionnaires d'événements : def depl_gauche(event): avance(-10, 0) #a chaque clique - 10 pxl sur la gauche
Ensuite dans la méthode 'avance' tu t'assures que le vaisseau restera dans les limite du caneva après l'ajout de sa vitesse :
- pour la limite gauche c'est facile
- pour la limite droite tu dois tenir compte de la largeur du vaisseau
def avance(gd, hb): #maj de l'interface avc le vaisseau qui bouge (ses coordonnées
global x2, y2
x2, y2 = x2 +gd, y2 +hb
if x2 < 0:
x2 = 0
elif x2+LARGEUR_VAISSEAU > 640:
x2 = 640-LARGEUR_VAISSEAU
canevas.coords(mon_vaisseau, x2, y2)