Finalisons pour les JPO

Page pour centraliser les infos. Contributions élèves et discussions via les commentaires.

On sera dans le couloir, tests avec la télé vendredi soir, télé stockée sous clé jusqu’au samedi.

En place dans le couloir :

  • la télé, mon ordi portable, et scoop du jour, des manettes qui fonctionnent avec pygame 😀
  • des posters – liste finale à préciser avec la chef de projet :
    • création labyrinthe aléatoire,
    • parcours en largeur,
    • parcours en profondeur,
    • spritesheets et animation ?
  • des élèves, inscriptions ci-dessous via les commentaires.

Le menu comportera un tableau des scores. Voir commentaires.

9 réflexions au sujet de « Finalisons pour les JPO »

  1. Saisir un nom sous pygame pour le tableau des scores ?
    Un exemple

    import pygame
    from pygame.locals import *
    pygame.init()
    noir = 0,0,0
    bleu=150,180,230
    gris=128,128,128
    blanc= 255,255,255
    size = width, height = 800,600
    x= 200
    y= 25
    liste=[]
    score=42
    
    #creation d'une fenetre
    screen= pygame.display.set_mode(size)
    continuer=True
    
    message=''
    while continuer:
    	screen.fill(bleu)
    	font=pygame.font.SysFont("broadway",25,bold=False,italic=True)
    	texte=font.render(message,1,(0,0,0))
    	screen.blit(texte,(100,410))
    	pygame.draw.rect(screen,noir,pygame.Rect(90,400,min(620,100+len(message)*20),45),1)
    	for event in pygame.event.get():
    		if event.type==KEYDOWN: 
    			if event.key==K_BACKSPACE:
    				message=message[:-1]
    			elif event.key==K_RETURN: 
    				continuer=0
    			elif len(message)<24: 
    				message+=event.dict['unicode']
    			#print(event.key)
    		if event.type==QUIT:
    			continuer=0
    
    
    	pygame.time.delay(30)
    	pygame.display.flip()
    
    print(message)
    pygame.quit()
    

    La variable message contient alors ce qui a été saisi !

    • Un autre exemple, basé sur la même idée

      import pygame
      from pygame.locals import *
      pygame.init()
      
      fenetre= pygame.display.set_mode((600,100))
      
      continuer=True
      message=''
      
      while continuer:
      
          font=pygame.font.SysFont("broadway",80,bold=False,italic=False)
          fenetre.fill((0,0,0))
          texte=font.render(message,1,(255,255,255))
          fenetre.blit(texte,(10,10))
      
          for event in pygame.event.get():
              if event.type == KEYDOWN:
                  if event.key == K_BACKSPACE :
                      message=message[0:-1]
                  elif event.key==K_RETURN:
                      continuer=False
                      print(message)
                  else:
                      message+=event.dict['unicode']
              if event.type==QUIT:
                  continuer=False
          pygame.display.flip()
      
      pygame.quit()
  2. Enregistrer des scores et les stocker ?
    Utilisons des listes pour les scores :
    ->une liste scores qui contiendra elle-même des listes [score,nom du joueur]
    Utilisons le module pickle pour sauvegarder cette liste sur le disque dans le même dossier dans un fichier « parametres »

    import pickle
    
    def initialise():
        # liste des scores actuelle
        scores=[[92,"John Malkovich"],[17,"Steven Seagall"]]
        # nouveau score
        score=42
        nom="Arnold"
        # Ajout a la liste
        scores.append([score,nom])
        # Tri de la liste
        scores.sort()
        scores.reverse()
        # Sauvegarde de la liste dans le même dossier dans un fichier -> parametres
        f =open('parametres', 'wb') 
        pickle.dump(scores, f) 
        f.close()
    
    def charge() :
        # Chargement depuis le fichier parametres
        f = open('parametres', 'rb') 
        liste = pickle.load(f)
        f.close()
        # affichage
        print(liste)

    Après, dans la console :

    >>> initialise()
    >>> charge()
    [[92, 'John Malkovich'], [42, 'Arnold'], [17, 'Steven Seagall']]
    >>> 

    On voit bien que
    -> le score 42 est dans le tableau des scores à la bonne place
    -> la liste « scores » ainsi créée dans « initialise() » a bien été enregistrée sur le disque dans un fichier « parametres »
    -> la fonction « charge() » l’a récupérée et affichée.

  3. Liste des fichiers de la version en cours et commentaires :

    Images :
    -> black.png et V3IA.png, spritesheets de Noé et Gaëtan (encore un effort messieurs !)
    -> calque.png, le même que pour l’illusion d’optique, pour masquer le reste du labyrinthe

    Fichier de sauvegarde :

    -> parametres, géré par Cyril, avec le tableau des scores

    Fichiers python :

    -> carteALeatoire.py qui génére la carte, géré par Mathis et Romain, contient la fonction newCarteAvecDepartEtArrivee(largeur,hauteur)

    -> parcoursLargeur.py qui cherche le chemin le plus court et le transmet au jeu, géré par Corentin et Quentin, contient les fonctions coordArrivee(carte,largeur,hauteur), coordDepart(carte,largeur,hauteur) et plusCourtChemin(carte,xA,yA,largeur,hauteur)

    -> laby.py, le jeu en lui même, contient la fonction jeu :

    import pygame
    from pygame.locals import *
    from random import randrange,choice
    from carteALeatoire import newCarteAvecDepartEtArrivee
    from parcoursLargeur import coordDepart,coordArrivee,plusCourtChemin
    ...
    def jeu(resolution,fenetre,poseCalque=True,afficheChemin=False,taille=64):
       # ici le jeu tel qu'on l'avait

    la fenetre n’y est plus créée, c’est le menu qui crée la fenetre et appelle la fonction jeu.
    Ce fichier est géré par trop plein de monde 😉

    -> menu.py, celui qu’on lance et qui porte bien son nom, qui appelle le jeu et gère la fenètre, la résolution et les scores. Géré par Cyril, Alexandre, etc.

  4. Gérer la manette de jeu ?

    #Au début, avant la boucle perpétuelle
    #On compte les joysticks
        nb_joysticks = pygame.joystick.get_count()
        print("Il y a", nb_joysticks, "joystick(s) branché(s)")
    
        #Et on en crée un s'il y a en au moins un
        if nb_joysticks >0:
            mon_joystick = pygame.joystick.Joystick(0)
            mon_joystick.init() #Initialisation
        
    #Gestion des événements, dans la boucle perpétuelle :
        continuer=True # pour la boucle perpétuelle de jeu
        while continuer : # boucle principale
            
            #gestion des événements
            for event in pygame.event.get():   
                if event.type==QUIT: # la croix à cliquer
                    continuer=False # on sort
                    score=0
                elif event.type==JOYBUTTONDOWN :
                    if event.button == 2 :
                        nextorientation=0
                    elif event.button == 0 :
                        nextorientation=2
                    elif event.button == 1 :
                        nextorientation=3
                    elif event.button == 3 :
                        nextorientation=1
    
                elif event.type == JOYAXISMOTION:
                    if event.axis == 0 :
                        if event.value > 0:
                            nextorientation=0
                        elif event.value < 0:
                            nextorientation=2
                    elif event.axis == 1 :
                        if event.value < 0:
                            nextorientation=3
                        elif event.value > 0:
                            nextorientation=1
                            
                elif event.type==KEYDOWN:   #appui sur une touche
                    if event.key==K_ESCAPE:
                        #print("touche Escape")
                        continuer=False # on sort
                        score=0
                        
                    elif event.key==K_UP:
                        nextorientation=1
                    elif event.key==K_DOWN:
                        nextorientation=3
                    elif event.key==K_RIGHT:
                        nextorientation=0
                    elif event.key==K_LEFT:
                        nextorientation=2
    
                    # (...) il faut compléter encore...
    
        

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.