#51 Le 15/05/2008, à 07:53
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Justement c'est ce que je veux faire avec __del__ : détruire l'instance, et enlever les résidus sur l'écran
Par ex quand une brique est touchée, elle est détruite et donc vidée de la
mémoire, elle ne servira plus à rien. Mais il faut aussi qu'elle soit gommée de l'écran (__del__ tout seul ne l'efface pas de l'écran, d'où le gommage fait en même temps que __del__)
Idem pour les autres objets graphiques : Lorsque j'ai besoin de les détruire, je les gomme en même temps (même si j'admets que pour les autres, genre la raquette c'est un peu bourrin...)
Ai-je tort ?
En tous cas merci d'avoir lu mon code, si il y a d'autres choses que tu voies qui ne sont pas top n'hésite pas, ça doit être bourré de fautes de ce type
Anu(ntu)
Hors ligne
#52 Le 15/05/2008, à 13:47
- aleph
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
> Ai-je tort ?
Oui et non.
Non dans le sens où je comprends que tu désires logiquement effacer un objet de l'affichage et en même temps détruire cet objet de la mémoire.
Oui, dans le sens où tu négliges un peu la puissance du ramasse-miettes (garbage collector) de Python et que peut-être tu ne saisis pas bien les "name spaces" de Python (sans reproche).
Je ne nie pas l'utilité de la méthode __del__, mais il est plutôt rare de devoir explicitement détruire un objet.
Illustration avec une console
>>> class C:
def __init__(self):
print '--> __init__'
def __del__(self):
print '--> __del__'
>>> a = C()
--> __init__
>>> def func():
print '...func...'
b = C()
print 'b:', b
>>> a
<__main__.C instance at 0x01D65DF0>
>>> func()
...func...
--> __init__
b: <__main__.C instance at 0x01D6B198>
--> __del__
>>> b
Traceback (most recent call last):
File "<psi last command>", line 1, in <module>
NameError: name 'b' is not defined
>>> class D():
def __init__(self):
z = C()
def info(self):
print z
>>> u = D()
--> __init__
--> __del__
>>> u.info()
Traceback (most recent call last):
File "<psi last command>", line 1, in <module>
File "<psi last command>", line 5, in info
NameError: global name 'z' is not defined
Exprimé différemment et d'un point de vue purement empirique.
Il y bien longtemps que je n'ai plus touché à Tkinter, mais dans mon expérience de wxPython, je n'ai jamais dû détruire une instance et n'ai pas souvenance avoir vu du code le faire (bien que cela soit parfois et certainement justifié).
Je n'ai pas spécialement examiné ton code, mais ce "__del__" m'avais frappé.
#53 Le 15/05/2008, à 14:30
- f3k
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
quand je tape py ./arkython.py il me renvoie que il ne connais pas la commande py
Que faire? car j'aimerais beaucoup tester
Hors ligne
#54 Le 15/05/2008, à 14:44
- JérémieR
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
python arkython.py
Ca devrait mieux marcher
Dernière modification par JérémieR (Le 15/05/2008, à 14:45)
Hors ligne
#55 Le 15/05/2008, à 15:12
- f3k
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
voilà l'erreur que me retourne le terminal
f3k@f3k-laptop:~$ python arkython.py
Traceback (most recent call last):
File "arkython.py", line 136, in <module>
import Xlib.display
ImportError: No module named Xlib.display
Dernière modification par f3k (Le 15/05/2008, à 15:12)
Hors ligne
#56 Le 15/05/2008, à 15:30
- JérémieR
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Nécessite d'installer python-xlib et python-tk
Les as-tu installés ?
Hors ligne
#57 Le 15/05/2008, à 15:33
- snapshot
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
@f3k: Il faut installer les bibliothèques manquantes :
sudo apt-get install python-xlib python-tk
Abu, tu pourrais t'inspirer de ce code pour avoir un message plus explicite :
import sys
try:
from Tkinter import Tk, Canvas, Label, Button, Frame
import Xlib.display
except ImportError:
print >>sys.stderr, "Vous devez installer les package python-xlib et python-tk pour utiliser ce jeu : "
print >>sys.stderr, "sudo apt-get install python-xlib python-tk"
sys.exit(3)
from random import randrange, uniform
import os
from math import sqrt
Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !
Hors ligne
#58 Le 15/05/2008, à 15:37
- f3k
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Sa marche niquel merci de ton aide
Et bravo pour le script Abu
Hors ligne
#59 Le 15/05/2008, à 15:40
- slasher_fun
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
@JérémieR : si tu as des problèmes de messages en double, déloggues puis reloggues toi sur le forum
Hors ligne
#60 Le 15/05/2008, à 15:43
- JérémieR
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
TEST : Et comme ça c'est mieux?
C'est mieux merci de l'astuce.
Dernière modification par JérémieR (Le 15/05/2008, à 15:44)
Hors ligne
#61 Le 15/05/2008, à 17:54
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Houla plus de 1000 vues sur mon petit programme !!! Champagne !!!
@snapshot : J'ai ajouté ce que tu m'as donné, ce sera présent dans la prochaine release (je savais que ça pourrais poser problèmes). Merci.
@aleph : Oui c'est sûr que je ne me préoccupe pas du garbage collector (pour moi une classe crée doit être détruite à la fin mais c'est vrai qu'en python c'est un peu différent), et que le terme "espace de noms" ne m'inspire encore que des choses vagues (même si j'ai une petite idée de ce que c'est). J'avoue que je n'ai pas tout compris à ton exemple mais je vais l'étudier de près.
@f3k : Cool que ça marche et merci du compliment
@Tous le monde : En ce moment je retravaille l'algorithme de collisions.
J'ai identifié le bug qui fait qu'une brique peut être détruite en 1 coup (et notamment les briques noires invisibles, ce qui donne l'impression que la balle change de direction sans raison). C'est la gestion des contacts de la balle avec les coins des briques qui pose problème.
J'ai travaillé à une solution mais ça ne marche pas encore complètement.
Je vous envoie la release quand ce sera mieux.
Qu'est ce que vous pensez du nouveau comportement de la balle sur la raquette ?
Est-ce que c'est bien que l'angle de rebond corresponde à la position exacte de la balle sur la raquette ? (au milieu la balle repart verticalement, et sur les bords à 45°). Car du coup l'angle avec lequel elle arrive n'a plus d'influence.
J'ai essayé avec l'ellipse mais j'ai encore quelques soucis, notamment si le rebond envoie la balle sous la raquette (par ex si la balle arrive de la droite avec un angle faible et qu'elle touche la raquette à gauche)
A ce propos il y a un léger oubli, la balle ne rebondit pas exactement symétriquement sur les bords et les briques. Corrigé dans la prochaine version
Abu(ntu)
Hors ligne
#62 Le 15/05/2008, à 18:45
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Une petite question :
Est-ce que qqun sait comment faire un bip tout con ? C'est juste pour voir à quel moment certaines méthodes se lancent (je rame avec mes coins)
(j'ai essayé la méthode bell() de Tkinter, et print '\a', ça ne marche pas)
Hors ligne
#63 Le 15/05/2008, à 19:00
- snapshot
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
pour faire "bip" :
print chr(7)
mais ça ne marche que si le code est envoyé dans un terminal
Pensez à mettre [Résolu] dans le titre une fois votre problème réglé !
Hors ligne
#64 Le 15/05/2008, à 19:08
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Hmm ça ne marche pas (j'ai même essayé en lancant python dans un terminal)
Pas grave j'essaie me dépatouiller avec des print et la pause pour voir ce qui se passe quand une brique disparait en un coup
Je l'aurai...!!! (je l'ai presque...déjà beaucoup moins de briques qui disparaissent en un coup, mais encore quelques unes par-ci par-là, donc c'est pas encore bon....)
Abu(ntu)
Hors ligne
#65 Le 15/05/2008, à 19:49
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Je l'ai eu !!! Yatttaaa !!!!
(En fait il suffisait juste de tester la direction pour pas qu'il fasse plusieurs fois la même collision...)
Trop content
Donc Arkapython v0.3.0.3 en 1ère page. Enjoy
Si les rebonds sur la raquette vont bien, ben j'ai fini en gros le "moteur" du casse-briques (j'attends vos avis avant de l'estampiller 0.3.1)
Abu(ntu)
Hors ligne
#66 Le 15/05/2008, à 20:22
- elfoiros
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Abu,
je viens de faire un .deb avec ton projet arkapython.
Ainsi, pour l'installer il faut juste ajouter au fichier /etc/apt/sources.list
deb http://elfoiros.free.fr/ubuntu/hardy/games /
Puis executer :
apt-get update
apt-get install arkapython
Tu peux voire les (tes) sources du .deb sur http://elfoiros.free.fr/ubuntu/hardy/games/
Le fichier DEBIAN/control permet de renseigner la version et l'adresse email du "maintener" (donne moi ton mail en privé MP pour que revienne à Cesar ce qui à Cesar )
Passer par un point deb permet de benificier de la notion de mise a jour en incrementant le numero de version. De meme, les dependances sont gérées de maniere transparente pour l'utilisateur (python-tk, ...)
De plus, pour lancer le jeu cliquer sur Applications/ Jeux/ Arkapython
Pas mal ton projet. Je te conseille de creer ton propre depot sur free.fr c'est gratos et pratique pour partager
a+
Dernière modification par elfoiros (Le 15/05/2008, à 20:38)
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#67 Le 15/05/2008, à 20:53
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Ouaich comment c'est cool Mon 1er deb
Mici beaucoup
Par contre je sais pas du tout comment ça marche
Je regarderai ça demain
En attendant je mets à jour le 1er post
Abu(ntu)
Mon adresse miel pour linux : abunux, le tout dans la google boite du point com (j'attends les bots )
Hors ligne
#68 Le 15/05/2008, à 21:19
- elfoiros
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
C'est bon, j'ai mis a jour le .deb avec ton adresse mail.
Fais moi signe si j'ai du retard dans les mises à jour.
A+
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#69 Le 16/05/2008, à 22:18
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Version 0.3.0.4 en 1ère page
Correction de bugs de collisions, et quelques changements
Je vais passer à la partie interface (menu, préférences,...) et j'aurais quelques questions rapides (je pourrais trouver mais si vous avez une réponse rapide ça me gagnerait du temps ) :
1) Quel est le meilleur moyen de stocker les préférences ? Quand je programmais sous windows je faisais des .inf. Est-ce qu'il y a un équivalent ? (XML ?)
2) Quel module permet de gérer le XML ? Dans la doc j'en ai vu au moins 5 ou 6, lequel je dois prendre pour faire un truc simple (juste stocker des variables et les récupérer après)
3) Est-ce que le nom (et le chemin complet d'ailleurs) du script en exécution est stocké quelque part dans une variable ? (car j'aimerais dans la boite "à propos" mettre une fenêtre de texte avec le source, mais le nom du fichier dépend des versions, etc...même si c'est peu utile ça me fait bien planer comme idée ^_^)
Voilà c'est à peu près tout je pense...
Comme d'hab, j'attends vos avis, notamment sur les changements du gameplay, savoir si je vais dans la bonne direction ou s'il y a des trucs à revoir (voire carrément foireux...)
Ah oui, aussi, j'ai corrigé un bug très chiant car assez rare : des fois la balle traverse des briques. Normalement c'est réglé, je viens de tester un moment ça avait l'air bon, mais si ça vous arrive avec la dernière version ce serait sympa de me le dire
Abu(ntu)
Hors ligne
#70 Le 17/05/2008, à 09:22
- cat_loic
Hors ligne
#71 Le 17/05/2008, à 10:16
- elfoiros
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Depot à jour v0.3.0.4
Sytème > Administration > Gestionnaire de mise a jour > Verifier
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#72 Le 17/05/2008, à 10:21
- elfoiros
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Je te conseille d'utiliser un fichier de conf au format XML. Il existe des bibliothèques de parsing XML dans presque tous les langages.
En perl, par exemple, tu peux convertir un fichier XML en table de hash et ainsi parcourir les clés et les valeurs.
Par exemple, Gnome utilise le XML pour les fichiers de conf :
~/.gconf/desktop/gnome/background/%gconf.xml
A+
Dernière modification par elfoiros (Le 17/05/2008, à 13:32)
Coluche : "Bite" c'est un gros mot, même si c'est une petite
Consultant e-commerce
Étude et realisation
Optimisation, maintenance
Hors ligne
#73 Le 17/05/2008, à 11:33
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
@(cat_loic , elfoiros) : Cool merci
@elfoiros : Ok va pour le XML. C'est vrai que python doit faire ça très bien. Je viens de voir un chapitre là dessus dans une de mes doc, je vais l'étudier.
Pour l'instant j'apprends à manipuler les menus et les fenêtres "secondaires" (aide, à propos, etc...), et je mets un peu d'ordre dans mes classes (pfiou ça commençait à être un peu n'importe quoi...)
A part ça plus de problèmes de collisions apparemment et ça.... c'est bon
Abu(ntu)
Hors ligne
#74 Le 17/05/2008, à 19:20
- Abu
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Et voilou le arkapython nouveau est arrivé.... v0.3.1.0 en first page
Eh oui changement de numéro pour cette version qui intègre la toute nouvelle interface de la mort qui tue que même les gars de chez compiz ils l'envient (en fait j'ai juste rajouté des menu et réorganisé mes classes, mais ça m'a pris la journée )
Si vous avez des problèmes de ralentissement dites le moi j'en ai eu quelques un(s ? un un , des uns ?) mais ça vient peut être de mon pc. Sinon c'est qu'il y a quelque chose qui cloche (à mon avis en réorganisant les classes j'ai dû faire des trucs carrément pas standards...feeling quand tu nous tiens...)
Pendant que j'y suis, la question du jour :
J'ai mis des fenêtres Toplevel en modale avec ça :
self.fen_apropos.focus_set( )
self.fen_apropos.grab_set( )
self.fen_apropos.wait_window()
J'aimerais aussi qu'il soit impossible à la fenêtre principale de reprendre le focus (elle ne réagit pas mais si on clique dessus elle vient au 1er plan)
C'est possible ?
Abu'n tout
Dernière modification par Abu (Le 17/05/2008, à 19:21)
Hors ligne
#75 Le 17/05/2008, à 20:49
- cat_loic
Re : [Python] Projet de casse-briques (maj 23/05 : v0.3.1.1)
Waaahhhhh génial des High scores .
Les points sont comptés en fonction de la vitesse non ?
Petite remarque : quand on tente de voir le "à propos" et "l'aide" (les guillemets sont la pour citer, pas pour critiquer) pendant le jeu (après avoir fait pause), et qu'ensuite on ferme, le jeu se remet tout de suite en marche... ça aurait été mieux qu'il reste en pause, je penses.
En tout cas, il ne manque plus que les sons ^^ .
Hors ligne