p
u
b
l
i
c
i
t
é
publicité
  1. #1

    Inscrit en
    décembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 10
    Points : -2
    Points
    -2

    Par défaut Script de recherche automatique de sprites

    Salut,

    J'ai suis entrain de faire mon TFE intutilé "Bananas Defender", c'est un Tower Defense dont le but est de protéger les bananes d'une invasion de Donkey Kong .

    Actuellement, j'ai finit de coder le système de génération de la map et je suis entrain de coder le système de création automatique de Donkey Kong et les faire automatiquement aller vers les bananes .

    Voici ma class DK qui est on va dire l'IA des Donkey Kong

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    class DK:
     
    	#Classe permettant de générer les ennemis qui sont des Donkey Kong
     
    	def __init__(self, structure_niveau, png, niveau):
    		#Sprites du personnage
    		self.donkey = pygame.image.load(png).convert_alpha()
    		#Position du personnage en cases et en pixels
    		self.case_x = 0
    		self.case_y = 0
    		self.x = 0
    		self.y = 0
    		#Niveau dans lequel le personnage se trouve 
    		self.niveau = niveau
     
    	def rechercher(self,case_x,case_y):	
    			#Si un Donkey Kong arrive à la banane, on return 'end'
    			if structure_niveau[self.case_y][self.case_x+1] == 'd':
    				self.game = 'end'
    				return self.game
    			#Sinon on recherche le "way" obstacle sur la ligne
    			if structure_niveau[case_y][case_x+1] == 'w':
    				#Déplacement d'une vers la droite si c'est un "way"
    				self.case_x += 1
    				#Calcul de la position de de la case "way" pour Donkey Kong
    				self.x = case_x * 40
    				self.y = case_y * 40
    				self.new_pos = "(+self.x+,+self.y+)"
    				return self.new_pos					
     
    			#Si elle n'est pas sur la même ligne, on regarde si elle est sur la colone
    			elif structure_niveau[self.case_y+1][self.case_x] == 'w':
    				self.case_y += 1
    				self.x = case_x * 40
    				self.y = case_y * 40
    				self.new_pos = "(+self.x+,+self.y+)"
    				return self.new_pos

    Et voila comment j'esseye de générer mes 10 Donkey Kong

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    #Combien d'ennemis 
    		nb_ennemis = 10
    		liste_ennemis = []
    		#Création de Donkey Kong
    		donkey = DK(structure_niveau, "image/dk.png", choix)
     
    		for event in pygame.event.get():
     
    			cpt_ennemis = 0
    			while (cpt_ennemis < nb_ennemis) :
     
    				#Affichages aux nouvelles positions
    				niveau.afficher(fenetre)
     
    				#Position par défault de Donkey Kong
    				"""image_dk = pygame.image.load(dkpng).convert()
    				fenetre.blit(image_dk,(0,0))"""
     
    				pygame.display.flip()
    				pygame.time.Clock().tick(1)
    				#Lancement de Donkey Kong
     
    				i = 0
    				x = 0
    				y = 0
    				o = 0
     
    				donkeyseek = donkey.rechercher(0,0)
     
    				liste_ennemis.append(donkey)
    				liste_ennemis.append[i](donkeyseek)
     
    				while liste_ennemis[i][o] != "end":
     
     
    					fenetre.blit(image_dk,donkey.rechercher(x,y))
    					pygame.display.flip()
     
    					new_pos = liste_ennemis[i][o]
    					liste_ennemis[i][o] = liste_ennemis[i][donkey.rechercher[new_pos]]
     
     
     
     
    				if liste_ennemis[i][o] == "end":
    					continuer_accueil = 0
    					continuer_jeu = 0
    					continuer = 0
    Voici mon erreur :
    liste_ennemis.append[i](donkeyseek)
    TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'

    Merci d'avance pour vos réponse

  2. #2
    Membre émérite
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2009
    Messages
    590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2009
    Messages : 590
    Points : 995
    Points
    995

    Par défaut

    À la ligne 33, dans le code pour les 10 DK. Quelle est l'action souhaitée par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    				liste_ennemis.append[i](donkeyseek)
    car je vois que juste avant, le ".append" a été correctement utilisé.
    Et que les éléments de liste_ennemis ne sont pas des fonctions alors le est mal.

    les représentations de positions m'inquiètent un peu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    self.new_pos = "(+self.x+,+self.y+)"
    ...self.new_pos = "(+self.x+,+self.y+)"
    vu les <+> de part et d'autre, c'est pas pour se servir d'un éval (ce qui serait également une mauvaise idée).
    Pourquoi ne pas se servir de tuples ou listes?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selt.new_pos = (self.x, self.y)
    et là, c'est le même soucis: un <None>, liste/tuple vide ne ferait il pas l'affaire?
    Win 7 HP 64 bits /Ubuntu 12.04, - AMD A6 Quad: Py32 / Py27
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tuto, Web, ...)
    - Tests déjà effectués

  3. #3

    Inscrit en
    décembre 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : décembre 2011
    Messages : 10
    Points : -2
    Points
    -2

    Par défaut

    Merci pour ta réponse

    Pour le moment je cherche a créer un Donkey Kong chaque seconde à la position (0,0) .Une fois crée, il cherche sa prochaine position grâce à la classe DK.rechercher (avec comme paramètre sa position actuel) afin de savoir si le sprite où il doit aller est en dessous de lui ou à sa droite .
    Mais une des autres difficultés est d’instancier les 10 Donkey Kong en même temps .

    Voila ce que je cherche à faire, et la j'ai un peu du mal a trouver la solution pour faire cela .

    Sinon pour le reste des erreurs voila ce que j'ai corrigé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	def rechercher(self,case_x,case_y):	
    			#Si un Donkey Kong arrive à la banane, on return 'end'
    			if structure_niveau[self.case_y][self.case_x+1] == 'd':
    				return None
    			#Sinon on recherche le "way" obstacle sur la ligne
    			if structure_niveau[case_y][case_x+1] == 'w':
    				#Déplacement d'une vers la droite si c'est un "way"
    				self.case_x += 1
    				#Calcul de la position de de la case "way" pour Donkey Kong
    				self.x = case_x * 40
    				self.y = case_y * 40
    				def rechercher(self,case_x,case_y):	
    			#Si un Donkey Kong arrive à la banane, on return 'end'
    			if structure_niveau[self.case_y][self.case_x+1] == 'd':
    				return None
    			#Sinon on recherche le "way" obstacle sur la ligne
    			if structure_niveau[case_y][case_x+1] == 'w':
    				#Déplacement d'une vers la droite si c'est un "way"
    				self.case_x += 1
    				#Calcul de la position de de la case "way" pour Donkey Kong
    				self.x = case_x * 40
    				self.y = case_y * 40
    				self.new_pos = "(+self.x+,+self.y+)"
    				return self.new_pos					
     
    			#Si elle n'est pas sur la même ligne, on regarde si elle est sur la colone
    			elif structure_niveau[self.case_y+1][self.case_x] == 'w':
    				self.case_y += 1
    				self.x = case_x * 40
    				self.y = case_y * 40
    				self.new_pos = (self.x,self.y)
    				return self.new_pos				
    	self.new_pos = "(+self.x+,+self.y+)"
    				return self.new_pos					
     
    			#Si elle n'est pas sur la même ligne, on regarde si elle est sur la colone
    			elif structure_niveau[self.case_y+1][self.case_x] == 'w':
    				self.case_y += 1
    				self.x = case_x * 40
    				self.y = case_y * 40
    				self.new_pos = (self.x,self.y)
    				return self.new_pos

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/04/2015, 16h10
  2. script d'installation automatique
    Par zero7 dans le forum Windows
    Réponses: 2
    Dernier message: 23/05/2006, 14h11
  3. [Tableaux] Script de recherche pour site dynamique
    Par clemsouz dans le forum Fonctions
    Réponses: 7
    Dernier message: 12/05/2006, 16h31
  4. Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & MySQL
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  5. Script de recherche de type mime
    Par bluecurve dans le forum Modules
    Réponses: 1
    Dernier message: 31/08/2005, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo