IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

bataille navale avec pygame [Python 2.X]


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Par défaut bataille navale avec pygame
    bonjour,

    Pour mon problème, pygame et python seront spécifique à mon cas mais, je pense, pourra aider pour d'autre langage.

    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
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    import pygame
    from pygame.locals import *
    pygame.display.init()
    continuer = False
    def fenetre(): 
     
     
        while 1:
     
     
            fond = pygame.image.load("grille.jpg")
            fenetre = pygame.display.set_mode((720, 501))
            fenetre.blit(fond, (0,0))
            pygame.display.flip()
            for event in pygame.event.get():  
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                    continuer = True
            pygame.mouse.get_pressed()
            coordonne = pygame.mouse.get_pos()
            print(coordonne)
     
     
     
     
    fenetre()
    Ce (bout) de code est un début de bataille navale,
    Comment créer une "adresse" pour chaque case du quadrillage afin de pouvoir tirer sur des coordonnées précises type 1A, 6C
    je pensais le faire en récupérant les coordonnés de la souris et selon afficher la croix sur la case mais ça veut dire qu'il faut 2 conditions (coordonnés + savoir si le bouton gauche est pressé) + la fonction pour afficher l'image x 100 pour chaque cases donc 300 lignes de code pour presque rien...
    de plus je n'ai pas de moyen de récupérer les coordonné vraiment précisément, je le fait avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pygame.mouse.get_pressed()
            coordonne = pygame.mouse.get_pos()
            print(coordonne)
    mon affaire est un poil compliqué à expliquer veillez m'en excuser.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    En effet, je ne suis pas sur de bien comprendre le souci.
    Je vais partir du principe que vous avez une grille de 10x10.

    Pour passer des coordonnées chiffre|lettre vers les coordonnées classiques X/Y sur la grille, il suffit :
    • de prendre le chiffre. En effet, vous pouvez l'utiliser tel quel.
    • de prendre la lettre et de faire un petit calcul simple : il faut savoir qu'en informatique, ce que l'on appelle une lettre, ce n'est qu'un nombre. Par exemple, pour la lettre 'a', c'est le nombre 97. Chaque caractère correspond à un nombre (voir la table ASCII). Pour faire la conversion, vous devez utiliser la fonction ord(). Ok, mais ce n'est pas tout. Là, vous récupérez un nombre qui sera un truc comme 65. Alors que pour 'A', vous voulez un 0. Pour 'B' vous voulez 1. La chance que nous avons, c'est que dans la table ASCII, A et B (et C et...) se suivent. Du coup, nous pouvons faire : CHAR - ord('A') et on obtiendra pour CHAR == A -> 0 ; CHAR == B -> 1 et ainsi de suite.



    Pour l'utilisation de la souris. Bah ... si coordonne = pygame.mouse.get_pos() donne un résultat précis (le pixel sur lequel vous cliquez, relatif au coin haut gauche). Ensuite, si on dit que chacun de vos cases fait N pixels, il suffit de faire une opération du style : click_x / N , et on obtient la case sur laquelle on a cliqué.

    Voilà
    Bonne continuation.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Par défaut Re:
    Effectivement ce n'est pas ça, je cherche a creer un quadrillage sur lequel le joueur pourra cliquer dessus et marquer la case pour positionner ses bateaux

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    il faut récupérer l'événement MOUSEBUTTONUP et regarder si c'est le button 1 qui est relaché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while 1:
        ev = event.wait()
        if ev.type == MOUSEBUTTONUP and ev.button == 1:
            x,y = ev.pos # recupere la position de la souris

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Par défaut Re:
    On pour savoir si il clique droit, mais comment savoir dans quelle case?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    tu connais la position de la grille, ses dimensions et la position de la souris, il suffit de calculer, c'est des maths.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bataille navale client/serveur avec Lobby d'attente
    Par hannibal974 dans le forum Général Java
    Réponses: 24
    Dernier message: 21/05/2015, 17h42
  2. Problème avec une grille de bataille navale
    Par Marty_and_Doc dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 18/01/2015, 13h51
  3. bataille navale
    Par keenurives dans le forum C
    Réponses: 7
    Dernier message: 21/11/2005, 12h15
  4. [LG]Programme Bataille Navale en Pascal
    Par RaFaL dans le forum Langage
    Réponses: 21
    Dernier message: 10/06/2003, 21h22

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