Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pygame bataille navale

Problème pour afficher une image suivant une condition sur pygame

    13 février 2016 à 23:08:01

    Bonsoir, 

    J'ai créé un programme bataille navale assez simple et j'ai voulu le modéliser avec pygame.

    J'ai créer un fond avec 2 tableaux vierges, l'un servira de tableau données, c'est a dire la ou la souris cliquera pour choisir la case et le second tableau sert a afficher ce qu'on a trouvé en cliquant sur une certaine case.

    Le problème est que je n’arrive pas a faire afficher ce que l'on a trouvé, dans le bon tableau car cela n’affiche rien...

    C''est pourquoi j'aimerai trouver quelqu'un qui puisse m'aider, merci d'avance

    #-----------------------------Importations--------------------------------------
    
    import pygame
    from pygame.locals import *
    from numpy import zeros
    from random import randrange
    
    #-----------------------------Initialisations-----------------------------------
    
    pygame.init()
    titre_fenetre="Bataille Navale (OTT Ludovic)"
    pygame.display.set_caption(titre_fenetre)
    fenetre=pygame.display.set_mode((1500,800))             #Creation de la fenetre
    fond=pygame.image.load("background.png").convert()      #Creation et redimenssion du Background
    fenetre.blit(fond,(0,0))                                #Endroit ou sera place le background
    bateau=pygame.image.load("cross31.png").convert_alpha() #Essai d'un bateau
    x=0
    y=0
    #fenetre.blit(bateau,(x,y))
    n=0
    tours=0
    
    #-------------------------------Fonctions---------------------------------------
    
    def place_bat1():                                       #Fonction de placement des bateaux
        for i in range (12):
            x=randrange(0,5)
            y=randrange(0,5)
            while tab[x,y]==1:
                x=randrange(0,5)
                y=randrange(0,5)
            tab[x,y]=1
    
    def ligCase(y):
        lig=(y-355)//60
        return lig
    
    def colCase(x):
        col=(x-255)//60
        return col
    
    
    
    def touche(col,lig):                                      #Fonction determination emplacements bateaux
        if tab[col,lig]==1:
            if trouve[col,lig]==1:
                print ("Deja touche, reessaye")
                return 0
            else:
                trouve[col,lig]=1
                print("Touche, continue ainsi")
                return 1
        else:
            trouve[col,lig]=9
            print("Dans l'eau, essaye une autre case")
            return 0
    
    #--------------------------------Programme--------------------------------------
    
    pygame.display.flip()                                   #Rafraichissement de la fenetre pour afficher le background
    
    print("Tableau des bateaux :")                          #On affiche le tableau avec les bateaux places
    tab=zeros((5,5),"i")                                    #Creation d'un premier tableau vide
    place_bat1()
    print(tab)
    trouve=zeros((5,5),"i")                                 #Creation du deuxieme tableau vide
                                                            #Boucle infinie pour laisser la fenetre ouverte
    continuer=1
    while continuer:
        for event in pygame.event.get():	                #Attente des evenements et si on appuit sur la fleche rouge pour fermer la fenetre, celle si ce ferme
            if event.type==QUIT:
                continuer=0
            if event.type==MOUSEBUTTONDOWN:                 #On regarde ou clique la souris
                if event.button==1:
                    x=event.pos[0]                          #le -16 est la pour que la croix soit placee au milieu du pointeur de la sourie
                    y=event.pos[1]
                    print(x,y)
                    lig=ligCase(y)
                    col=colCase(x)
                    if touche(lig,col)==1:
                        fenetre.blit(bateau,(100,100))
                        pygame.display.flip()
    
    
        fenetre.blit(fond,(0,0))                            #Affichage fond pour pas le perdre au raffraichissement
        eau=pygame.image.load("ocean5.png").convert_alpha() #Essai emplacement aucun bateau
        fenetre.blit(eau,(391,371))
        pygame.display.flip()                               #Rafraichissement
    
    pygame.quit()
    
    • Partager sur Facebook
    • Partager sur Twitter

    Pygame bataille navale

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown