Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2023-11-23T09:58:58+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Problème avec attribut key suite à un pygame.event.get(), message #2529582023-11-23T09:58:58+01:00yifitvaz/@yifitvazhttps://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252958<p>I’m ecstatic to have discovered your website, <strong><a href="https://monkeymartgame.com/main">monkey mart</a></strong> and I’m looking forward to many more engaging moments here. Once again, many thanks for providing all of the information.</p>Problème avec attribut key suite à un pygame.event.get(), message #2528702023-11-15T07:48:44+01:00memorablereceive/@memorablereceivehttps://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252870<p>The error you’re encountering may stem from the fact that the KEYUP event does not have the key attribute. To avoid this issue, you should check whether the event is a KEYDOWN event. Here’s how you can modify your code:</p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span></div><pre><code class="hljs language-py">attends = <span class="hljs-literal">True</span>
<span class="hljs-keyword">while</span> attends:
<span class="hljs-keyword">for</span> event <span class="hljs-keyword">in</span> pygame.event.get():
<span class="hljs-keyword">if</span> event.<span class="hljs-built_in">type</span> == pygame.KEYDOWN: <span class="hljs-comment"># Check if the event is a KEYDOWN event</span>
<span class="hljs-keyword">if</span> event.key == pygame.K_j:
pygame.draw.rect(screen, blanc, tabledim, width=<span class="hljs-number">2</span>)
pygame.display.flip()
<span class="hljs-keyword">elif</span> event.<span class="hljs-built_in">type</span> == pygame.KEYUP:
pygame.draw.rect(screen, jaune, tabledim, width=<span class="hljs-number">2</span>)
pygame.display.flip()
<span class="hljs-keyword">elif</span> event.<span class="hljs-built_in">type</span> == pygame.QUIT:
attends = <span class="hljs-literal">False</span>
</code></pre></div>
<p>By checking for pygame.KEYDOWN before accessing the key attribute, you ensure that event has the key attribute, avoiding the AttributeError when trying to access event.key.
<a href="https://geometrydashmeltdown.net/">geometry dash meltdown</a></p>Problème avec attribut key suite à un pygame.event.get(), message #2528352023-11-12T15:55:17+01:00Jojo17/@Jojo17https://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252835<p>Effectivement, ça a beaucoup plus de sens avec ces explications.
merci.</p>Problème avec attribut key suite à un pygame.event.get(), message #2528272023-11-11T10:03:52+01:00entwanne/@entwannehttps://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252827<p>La logique c’est qu’un évènement peut avoir plusieurs sources (plusieurs types d’évènements), par exemple un déplacement de souris, un redimensionnement de fenêtre ou encore un appui sur une touche du clavier.</p>
<p>Dans ton exemple initial tu pensais que <code>pygame.event.get()</code> ne renvoyait que des touches mais il peut renvoyer tout cet éventail d’évènements.
Et parmi ces évènements, seuls ceux qui concernent le clavier peuvent avoir un attribut <code>key</code> qui précise la touche (ça n’a pas de sens de demander la touche d’un événement souris par exemple).</p>
<p>Ainsi, tu ne peux accéder à cet attribut <code>key</code> que si tu t’es d’abord assuré d’être sur un événement clavier.</p>Problème avec attribut key suite à un pygame.event.get(), message #2528262023-11-11T09:17:25+01:00Jojo17/@Jojo17https://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252826<p>Effectivement ça marche. Merci.
un peu bizarre comme logique tout de même.</p>Problème avec attribut key suite à un pygame.event.get(), message #2528202023-11-10T19:04:12+01:00DonKnacki/@DonKnackihttps://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252820<p>Salut, le test de la touche doit être consécutif à celui du type d’événement:</p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span></div><pre><code class="hljs language-py">attends = <span class="hljs-literal">True</span>
<span class="hljs-keyword">while</span> attends:
<span class="hljs-keyword">for</span> touche <span class="hljs-keyword">in</span> pygame.event.get():
<span class="hljs-keyword">if</span> touche.<span class="hljs-built_in">type</span> == pygame.KEYUP: <span class="hljs-comment"># ou KEYDOWN</span>
<span class="hljs-keyword">if</span> touche.key == pygame.K_j:
pygame.draw.rect(screen,blanc,tabledim,width = <span class="hljs-number">2</span>)
pygame.display.flip()
<span class="hljs-keyword">elif</span> touche.<span class="hljs-built_in">type</span> == pygame.QUIT:
attends = <span class="hljs-literal">False</span>
</code></pre></div>Problème avec attribut key suite à un pygame.event.get(), message #2528102023-11-10T11:01:23+01:00Jojo17/@Jojo17https://zestedesavoir.com/forums/sujet/17204/probleme-avec-attribut-key-suite-a-un-pygameeventget/?page=1#p252810<p>Bonjour,</p>
<p>Je suis débutant en python et pygame.
Dans cette boucle:</p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span></div><pre><code class="hljs language-py">attends = <span class="hljs-literal">True</span>
<span class="hljs-keyword">while</span> attends:
<span class="hljs-keyword">for</span> touche <span class="hljs-keyword">in</span> pygame.event.get():
<span class="hljs-keyword">if</span> touche.key == pygame.K_j:
pygame.draw.rect(screen,blanc,tabledim,width = <span class="hljs-number">2</span>)
pygame.display.flip()
<span class="hljs-keyword">elif</span> touche.<span class="hljs-built_in">type</span> == pygame.KEYUP:
pygame.draw.rect(screen,jaune,tabledim,width = <span class="hljs-number">2</span>)
pygame.display.flip()
<span class="hljs-keyword">elif</span> touche.<span class="hljs-built_in">type</span> == pygame.QUIT:
attends = <span class="hljs-literal">False</span>
</code></pre></div>
<p>J’ai un message d’erreur lorsque je teste <code>touche.key</code> (<code>if touche.key == pygame.K_j:</code>)</p>
<div class="hljs-code-div hljs-code-py"><pre><code class="hljs language-py">AttributeError: <span class="hljs-string">'pygame.event.Event'</span> <span class="hljs-built_in">object</span> has no attribute <span class="hljs-string">'key'</span>
</code></pre></div>
<p>C’est pourtant la syntaxe donnée dans les exemples du tuto pygame.
Est-ce qu’il me manque quelque chose ?
Merci pour votre aide.</p>
<p>Jojo</p>
<hr>
<p><em><a href="/@Amaury" rel="nofollow" class="ping ping-link">@<span class="ping-username">Amaury</span></a> — Mise en forme du code (modifie ton message pour voir comment on fait)</em></p>Pygame détection de collisions, message #2488742023-02-03T16:56:03+01:00flopy78/@flopy78https://zestedesavoir.com/forums/sujet/16794/pygame-detection-de-collisions/?page=1#p248874<p>Bonjour,</p>
<p>Je suis actuellement entrain de travailler sur un Donkey Kong avec PyGame.</p>
<p>J’aimerais bien pouvoir détecter les collisions entre les personnages et les plateformes seulement si le contact se fait via le bas des personnages (et le haut de la plateforme, donc). Existe-t-il des méthodes plus élégantes que de tout faire à la main, et plus précises que <code>pg.Rect.colliderect</code> pour faire ça ?</p>
<p>Merci d’avance,</p>
<p><a href="/@flopy78" rel="nofollow" class="ping ping-link">@<span class="ping-username">flopy78</span></a></p>Problème de fonctionnement d'un programme Python, message #2319872021-03-08T10:39:27+01:00Chevalier Saphir/@Chevalier%20Saphirhttps://zestedesavoir.com/forums/sujet/15116/probleme-de-fonctionnement-dun-programme-python/?page=1#p231987<p>Salut entwanne ! Merci à toi de m’avoir fait penser au except trop large, je me demandais pourquoi Python ne m’envoyait aucune erreur et c’était bien pour ça !
J’ai donc réussi à résoudre le problème, merci ! <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"> </p>
<p>Je ferme donc le sujet !</p>Problème de fonctionnement d'un programme Python, message #2319832021-03-08T10:24:24+01:00entwanne/@entwannehttps://zestedesavoir.com/forums/sujet/15116/probleme-de-fonctionnement-dun-programme-python/?page=1#p231983<p>Salut,</p>
<p>Déjà est-ce tu peux préciser ce que tu entends par « il s’arrête au bout d’un moment ». Est-ce que le programme se coupe brutalement et que tu obtiens une exception ?<br>
Si oui il serait bien de nous donner la trace de cette exception, trace que tu n’obtiens pas actuellement à cause de ton <code>except</code> très large qui ne donne aucune information sur l’exception attrapée.</p>Problème de fonctionnement d'un programme Python, message #2319802021-03-08T09:23:04+01:00Chevalier Saphir/@Chevalier%20Saphirhttps://zestedesavoir.com/forums/sujet/15116/probleme-de-fonctionnement-dun-programme-python/?page=1#p231980<p>Bonjour à tous !
Je crée ce sujet car j’ai un problème avec un programme en Python. Il me semble que je n’ai fait aucune erreur (de plus, j’ai testé le code partie par partie et tout marchait bien), et pourtant lorsque je lance mon programme, il s’arrête au bout d’un moment sans que je sache pourquoi <img src="/static/smileys/svg/triste.svg" alt=":(" class="smiley"> .
Je serai bien content si vous m’aidiez à comprendre où j’ai fait une erreur !</p>
<p>En fait, mon programme est séparé en deux fichiers, car c’est un programme fonctionnant avec des sockets (donc un pour le serveur et un pour les clients).
Le problème semble venir du programme destiné aux clients car tout marche bien chez le serveur.</p>
<p>Le programme fonctionne aussi avec Pygame, car je souhaite coder un petit jeu en réseau. <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"> </p>
<p>Voici le code du client :</p>
<div class="hljs-code-div hljs-code-py"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span><span data-count="16"></span><span data-count="17"></span><span data-count="18"></span><span data-count="19"></span><span data-count="20"></span><span data-count="21"></span><span data-count="22"></span><span data-count="23"></span><span data-count="24"></span><span data-count="25"></span><span data-count="26"></span><span data-count="27"></span><span data-count="28"></span><span data-count="29"></span><span data-count="30"></span><span data-count="31"></span><span data-count="32"></span><span data-count="33"></span><span data-count="34"></span><span data-count="35"></span><span data-count="36"></span><span data-count="37"></span><span data-count="38"></span><span data-count="39"></span><span data-count="40"></span><span data-count="41"></span><span data-count="42"></span><span data-count="43"></span><span data-count="44"></span><span data-count="45"></span><span data-count="46"></span><span data-count="47"></span><span data-count="48"></span><span data-count="49"></span><span data-count="50"></span><span data-count="51"></span><span data-count="52"></span><span data-count="53"></span><span data-count="54"></span><span data-count="55"></span><span data-count="56"></span><span data-count="57"></span><span data-count="58"></span><span data-count="59"></span><span data-count="60"></span><span data-count="61"></span><span data-count="62"></span><span data-count="63"></span><span data-count="64"></span><span data-count="65"></span><span data-count="66"></span><span data-count="67"></span><span data-count="68"></span><span data-count="69"></span><span data-count="70"></span><span data-count="71"></span><span data-count="72"></span><span data-count="73"></span></div><pre><code class="hljs language-py"><span class="hljs-comment">#coding:utf-8</span>
<span class="hljs-comment">### Importation des bibliothèques</span>
<span class="hljs-keyword">import</span> socket, pygame, time
<span class="hljs-keyword">from</span> pygame.<span class="hljs-built_in">locals</span> <span class="hljs-keyword">import</span> *
<span class="hljs-comment">#################################</span>
<span class="hljs-comment">### Initialisation de pygame</span>
pygame.init()
x_ecran, y_ecran = pygame.display.Info().current_w, pygame.display.Info().current_h
x_ecran = x_ecran-<span class="hljs-number">200</span>
y_ecran = y_ecran-<span class="hljs-number">113</span>
<span class="hljs-comment">############################</span>
<span class="hljs-comment">### Variables</span>
bouclecompte = <span class="hljs-number">0</span>
envoi = <span class="hljs-string">"%"</span>
lancementjeu = <span class="hljs-number">0</span>
<span class="hljs-comment">#############</span>
<span class="hljs-comment">### Préparation pour la connexion au serveur</span>
host, port = (<span class="hljs-string">"localhost"</span>, <span class="hljs-number">9810</span>) <span class="hljs-comment"># Le serveur est sur le port 9810 et son adresse IP est "localhost"</span>
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) <span class="hljs-comment"># Paramètres de socket</span>
<span class="hljs-comment">############################################</span>
<span class="hljs-comment">### Connexion avec le serveur</span>
<span class="hljs-keyword">try</span>:
socket.connect((host, port)) <span class="hljs-comment"># Connexion au serveur</span>
<span class="hljs-comment">### Partie "compte"</span>
<span class="hljs-keyword">while</span> bouclecompte == <span class="hljs-number">0</span>:
<span class="hljs-keyword">while</span> <span class="hljs-string">"%"</span> <span class="hljs-keyword">in</span> envoi:
pseudo = <span class="hljs-built_in">input</span>(<span class="hljs-string">"PSEUDO >>> "</span>)
motdepasse = <span class="hljs-built_in">input</span>(<span class="hljs-string">"MOT DE PASSE >>> "</span>)
envoi = <span class="hljs-string">f"<span class="hljs-subst">{pseudo}</span>/<span class="hljs-subst">{motdepasse}</span>/c"</span>
<span class="hljs-keyword">if</span> <span class="hljs-string">"%"</span> <span class="hljs-keyword">in</span> envoi:
print(<span class="hljs-string">"Caractère % non autorisé, veuillez réessayer."</span>)
<span class="hljs-keyword">else</span>:
envoi = envoi.encode(<span class="hljs-string">"utf8"</span>)
socket.sendall(envoi)
reception = socket.recv(<span class="hljs-number">1024</span>)
reception = reception.decode(<span class="hljs-string">"utf8"</span>)
print(reception)
<span class="hljs-keyword">if</span> reception == <span class="hljs-string">"compte existant"</span>:
print(<span class="hljs-string">"Compte trouvé, jeu lancé."</span>)
bouclecompte = <span class="hljs-number">1</span>
lancementjeu = <span class="hljs-number">1</span>
<span class="hljs-keyword">else</span>:
x = <span class="hljs-built_in">input</span>(<span class="hljs-string">"Compte non trouvé, souhaitez vous créer un compte ? (oui/non) >>> "</span>)
<span class="hljs-keyword">if</span> x == <span class="hljs-string">"oui"</span>:
envoi = <span class="hljs-string">f"<span class="hljs-subst">{pseudo}</span>/<span class="hljs-subst">{motdepasse}</span>/n"</span>
envoi = envoi.encode(<span class="hljs-string">"utf8"</span>)
socket.sendall(envoi)
bouclecompte = <span class="hljs-number">1</span>
lancementjeu = <span class="hljs-number">1</span>
<span class="hljs-keyword">else</span>:
print(<span class="hljs-string">"Ok, réessayez de vous connecter."</span>)
envoi = <span class="hljs-string">"%"</span>
<span class="hljs-comment">###################</span>
<span class="hljs-comment">########## PARTIE JEU ##########</span>
fenetre = pygame.display.set_mode((x_ecran, y_ecran)) <span class="hljs-comment"># Ouverture de la fenêtre du jeu</span>
time.sleep(<span class="hljs-number">5</span>)
<span class="hljs-comment">################################</span>
<span class="hljs-keyword">except</span>: <span class="hljs-comment"># Si la connexion au serveur échoue</span>
print(<span class="hljs-string">"la connexion est coupée"</span>)
<span class="hljs-keyword">finally</span>: <span class="hljs-comment"># Dans tous les cas on coupe la connexion</span>
socket.close()
<span class="hljs-comment">#############################</span>
</code></pre></div>
<p>Merci d’avance de vos réponses !</p>Python et jeu de gestion, message #2163912020-02-29T15:28:59+01:00Abou/@Abouhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p216391<p>Ah d’accord, donc il me faut télécharger go ok <img src="/static/smileys/clin.png" alt=";)" class="smiley">
Merci !!!</p>Python et jeu de gestion, message #2163902020-02-29T15:20:03+01:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p216390<p>Euh, oui ce sont simplement des bibliothèques pour écrire des jeux en Go, plutôt qu’en C ou Python…</p>Python et jeu de gestion, message #2163892020-02-29T15:16:24+01:00Abou/@Abouhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p216389<p>Merci buffalo <img src="/static/smileys/clin.png" alt=";)" class="smiley">
aH Nohar, j’ai téléchargé pixels et l’autre logiciel mais le format des fichiers est ".go" donc je ne sais pas comment lancer l’application sur win 7 :/</p>Python et jeu de gestion, message #2161862020-02-25T19:41:39+01:00buffalo974/@buffalo974https://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p216186<p>salut,
tu peux essayer des trucs sympas avec flask , sqlalchemy ,et schedule pour un jeux de gestion, jettes un coup d’oeil à brython pour le côté client si tu veux faire du 100÷ python.</p>Python et jeu de gestion, message #2159132020-02-19T16:57:07+01:00Abou/@Abouhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215913<p>Merci <strong>Rocketter</strong> <img src="/static/smileys/clin.png" alt=";)" class="smiley"></p>
<p><strong>Nohar :</strong> Ah j’avais entendu parler de Go mais je n’avais pas eu la curiosité de le tester, ce que tu m’écris me motive à le regarder de plus près, par contre Pixel je ne connaissais pas du tout, je vais regarder ces deux liens et voir ce que je peux en tirer, merci beaucoup pour tes conseils <img src="/static/smileys/clin.png" alt=";)" class="smiley">
En plus tu m’as donné les liens, c’est génial <img src="/static/smileys/clin.png" alt=";)" class="smiley"></p>Python et jeu de gestion, message #2157712020-02-17T16:27:32+01:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215771<figure><blockquote>
<p>Je fais un jeu du style héroes of myght and magic en ce moment mais en temps réel, et j’utilise pygame, j’ai bientôt terminé l’éditeur de map et de campagnes du jeu, et je suis content mais en tant que débutant ça m’a pris beaucoup de temps vu l’état de la doc actuelle, mais mes prochains jeux je pense peut-être changer de language de programmation et de librairie, peut-être le C, je sais pas.</p>
<p></p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215734">Abou</a></figcaption></figure>
<p>Si tu veux, tu peux essayer Go avec <a href="https://github.com/hajimehoshi/ebiten">Ebiten</a> (particulièrement intéressant si tu veux le faire tourner sur mobile ou sur un navigateur en WASM) ou <a href="https://github.com/faiface/pixel">Pixels</a>. Ça sera toujours moins relou à utiliser que la SDL en C.</p>Python et jeu de gestion, message #2157652020-02-17T13:52:14+01:00rocketter/@rocketterhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215765<p>Merci de ton retour Abou, au moins avec l’expérience que t’as acquis, pygame doit être devenu moins galère pour toi. Bon courage pour la suite.</p>Python et jeu de gestion, message #2157342020-02-16T15:25:37+01:00Abou/@Abouhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215734<p>Salut, je suis d’accord avec toi rocketter au sujet de pygame, vaut mieux utiler panda3D si tu veux utiliser de la 3D.
Déjà programmer en 2D avec pygame est assez galère contrairement à ce qui se dit sur le net, car tout se fait en booléens pratiquement vu que le code est inclu dans la boucle principale du jeu, et que chaque fonctionnalité du jeu qu’on veut inclure doit être autorisée ou interdite par bouléen, sinon la boucle de jeu les inclues toutes, c’est assez galère de gérer la centaine de bouléens. Et la gestion du modèle objet en pygame est assez complèxe contrairement aux autres languages utilisant les objets (exemple C++) ou semi-objets (comme php, javascript).
Surtout que la doc de pygame n’est absolument pas claire, et rien que utiliser la gestion des sprites est difficile à appréhender au début et on perd beaucoup de temps à tout comprendre.
Je fais un jeu du style héroes of myght and magic en ce moment mais en temps réel, et j’utilise pygame, j’ai bientôt terminé l’éditeur de map et de campagnes du jeu, et je suis content mais en tant que débutant ça m’a pris beaucoup de temps vu l’état de la doc actuelle, mais mes prochains jeux je pense peut-être changer de language de programmation et de librairie, peut-être le C, je sais pas.</p>Python et jeu de gestion, message #2156372020-02-13T15:30:59+01:00nohar/@noharhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215637<p>Dans le web et côté backend, Python et C# sont kif-kif je pense. Avec un avantage pour Python qui est plutôt sur une pente montante. Mais on s’en fout un peu non ?</p>Python et jeu de gestion, message #2155422020-02-11T08:33:45+01:00rocketter/@rocketterhttps://zestedesavoir.com/forums/sujet/13595/python-et-jeu-de-gestion/?page=2#p215542<p>En me documentant un peu sur la 3D isométrique et Python, je me rends compte que je pourrais crééer des assets en low poly dans Blender (que je connais un peu, donc un du temps d’apprentissage en moins pour moi) et les importer ensuite dans Panda3D.
J’étais au départ parti sur pygame mais il ne semble pas être le plus adéquat pour ça vu qu’il a été conçu pour la 2D</p>