| [Python] La programmation Facile. | |
|
+6Daragonis Chaotique Blue valentinos Blizzard Wraithslayer/HD Empty 10 participants |
|
Auteur | Message |
---|
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: [Python] La programmation Facile. Lun 24 Aoû 2009, 18:59 | |
| Comme vous avez sûrement pu le constater depuis le topic de Valentinos (L'histoire dont vous êtes le héro version interactive^^) l'apprentissage d'un langage de programmation n'est pas réservé aux vieux de la vieille ! Je ne sais pas si la programmation pure et "dure" en intéresse beaucoup parmi vous mais je me permets de vous proposer ce tutoriel au format .pdf sur la progra en Python. http://www.sendspace.com/file/yo6vjr Pour moi le meilleur tutoriel sur la programmation et le langage Python que j'ai eu l'occasion de lire jusqu'ici (370 pages quand même) et entièrement en FRANCAIS s'il vous plait =] Petite information pour vous motiver, Python est selon moi le langage pourvu de la syntaxe la plus minimaliste et simple à apprendre/comprendre que je connaisse, pourtant extrêmement performant (de haut niveau), portable (windows/Linux) et Orienté Objet, possédant une multitude de librairies, de façons d'interprétation différentes... Bref, tout ce qu'il faut pour créer un jeu en tant que débutant en programmation Le tutoriel est superbement bien écrit et ne se contente pas de définir les propriétés du langage mais vous apprend aussi l'art de la programmation de AàZ (ou presque) en utilisant des termes simples, faciles à comprendre ! Je trouve que passer à côté serait vraiment dommage... A vous de voir | |
|
| |
Wraithslayer/HD Maker de lumière Lv 30
Nombre de messages : 1369 Age : 34
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 19:02 | |
| Si on a touché au C++, le Python est plus facile ? ____________ Je sais tout de vous ! (0 ans) - Dernière visite le Jeu 01 Jan 1970 Ce floodeur a posté 5 messages. - Citation :
- [23:21:09] @ Floya : Falco dit plus rien :o
[23:21:20] Falco : je colmate [23:21:30] Falco : j'ai dormis 4 heures la nuit précédente | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 19:02 | |
| Nettement oui | |
|
| |
Wraithslayer/HD Maker de lumière Lv 30
Nombre de messages : 1369 Age : 34
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 19:05 | |
| Super ! J'essaierai de m'y mettre un de ces jours, en attendant je prends ton pdf, il pourra servir à portée de main ____________ Je sais tout de vous ! (0 ans) - Dernière visite le Jeu 01 Jan 1970 Ce floodeur a posté 5 messages. - Citation :
- [23:21:09] @ Floya : Falco dit plus rien :o
[23:21:20] Falco : je colmate [23:21:30] Falco : j'ai dormis 4 heures la nuit précédente | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 19:06 | |
| Yep il en vaut la peine.
Ne le perds pas car je ne sais plus où je l'ai trouvé ^^ | |
|
| |
Blizzard /!\ Utilisateur instable /!\
Nombre de messages : 6317 Age : 32
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 19:27 | |
| J'essaierai de m'y remettre moi aussi :p. J'avais très très légèrement commencé le C (j'allais commencé les pointeurs il me semble), et j'ai arrêté depuis environ 2 ans... Ca ferait sûrement une bonne occasion de refaire de la programmation ^^. ____________ | |
|
| |
valentinos Maker No Life Lv 31
Nombre de messages : 1493 Age : 30
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 20:05 | |
| Si c'est bien le tuto auquel je pense, il est pas mal, le seul problème, je trouve c'est qu'il porte trop sur TkInter mais sinon il permet de bien commencer, je conseille à ceux qui veule une autre approche, plus complexe mais intéressant, Dive Into Python, à la base il est en anglais mais je me rappelle avoir lu une traduction Valentinos PS : quelqu'un connait une librairie portable pour gérer simplement le son ( juste histoire d'avoir un peu de musique sous UJDVELH ) ? ____________ - Citation :
- [00:49:30] falco a été kické par choco-sama
[00:49:30] Falco : ok | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 20:38 | |
| PySFML normalement =] Tu sais donner un lien pour les tutos sur les interfaces GUI en Python (celui que tu as lu pour apprendre à créer une interface graphique par exemple) ? Ca complètera bien celui que j'ai donné | |
|
| |
Chaotique Blue Maker accro Lv 13
Nombre de messages : 441 Age : 36
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 20:48 | |
| Est-ce que le python ressemble au ruby? :p ____________ Miaou miaou, motherf\o/cker.
| |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 21:42 | |
| Dans la simplicité de sa syntaxe, un peu oui (puisque l'un comme l'autre ce sont des langages de SCRIPT qui ne nécessitent pas de compilateur et peuvent être interprétés au fur et à mesure de l'avancement dans le code). | |
|
| |
valentinos Maker No Life Lv 31
Nombre de messages : 1493 Age : 30
| Sujet: Re: [Python] La programmation Facile. Lun 24 Aoû 2009, 22:08 | |
| Tuto incomplet sur PyGTK tiré du SDZ. Sinon il me semble aussi avoir vu des tuto sur Developpez, mais je ne les ais jamais lu. Sinon je vais essayez de jeter un coup d'oeuil sur PySFML Valentinos ____________ - Citation :
- [00:49:30] falco a été kické par choco-sama
[00:49:30] Falco : ok | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Mar 25 Aoû 2009, 00:07 | |
| Tain il est génial aussi ce tuto j'ai déjà appris plein de truc... En fait elle déchire cette librairie Merci beaucoup Val | |
|
| |
valentinos Maker No Life Lv 31
Nombre de messages : 1493 Age : 30
| Sujet: Re: [Python] La programmation Facile. Mar 25 Aoû 2009, 11:55 | |
| Le seul défaut que je lui est trouvé c'est l'aspect un peu incomplet, mais sinon c'est un de mes tuto préférés, généralement simple, donne rapidement des résultats, etc...
Valentinos
PS : tu peux me conseiller un tuto sur PySFML ? ____________ - Citation :
- [00:49:30] falco a été kické par choco-sama
[00:49:30] Falco : ok | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Mar 25 Aoû 2009, 12:38 | |
| J'avais appris en éditant des codes sources mais je peux essayer de t'en trouver un plus ou moins correct (il en existe pas des masses je pense), t'as rien contre l'anglais ?
Sinon y a PyGame aussi (plus simple pour créer des jeux) ?! | |
|
| |
valentinos Maker No Life Lv 31
Nombre de messages : 1493 Age : 30
| Sujet: Re: [Python] La programmation Facile. Mar 25 Aoû 2009, 13:40 | |
| Si c'est assez simple, je veux bien tester. Pour pygame je ne sais pas trop, la SDL était assez bas niveau surtout au niveau du son et vu que selon ce que j'ai lu c'est une adaptation de la SDL, j'ai des doutes...
Valentinos ____________ - Citation :
- [00:49:30] falco a été kické par choco-sama
[00:49:30] Falco : ok | |
|
| |
Daragonis Maker de Légende Lv 52
Nombre de messages : 4582 Age : 27
| Sujet: Re: [Python] La programmation Facile. Mer 06 Nov 2013, 22:45 | |
| Coucou ! Nécropost limite justifiée cette fois-ci. Pour dire un truc tout bête déjà, je commence le Python, la raison étant tout simplement que mon professeur d'informatique (en spécialité au lycée) a décider d'enseigner principalement ce langage (bien qu'on ait fait du Html, du CSS et du Javascript juste avant). Donc, je débute là-dessus. Rajoutez par delà qu'il ne faut pas s'étonner que je pose quelques questions dans le coin, étant donner qu'il y a des personnes bien plus doués dans ce domaine que moi ici (assez logique n'est-ce pas ? ^^) Bref, pour ceux qui ont le temps et qui ont trop envie de se moquer de ma façon de coder, j'ai un exercice (que j'ai moi-même complexifier soit-dit en passant...) qui a pour objectif de faire rechercher à une petite IA une position choisie aléatoirement dans un jeu de bataille navale. Bon tout est expliqué dans le script mais du coup j'aimerais savoir si vous avez des conseils pour améliorer l'efficacité de l'IA (y'a 3 IA ayant des comportements différents, la première recherchant une performance optimale), où pour rendre le script plus clair où plus court (niveau fonctionnement il marche et je vois pas forcément comme rendre l'IA plus rapide dans ses capacités de détection.) Voilà, merci d'avance à ceux qui regarderons ^^ - Spoiler:
- Code:
-
import random
#Ce script est une IA simpliste qui a pour but de rechercher en un nombre minimum de tentatives une position choisie aléatoirement dans un jeu de bataille navale choisie aléatoirement sur un plateau de 10x10 cases. #Si l'objectif se trouve à moins d'une case (colonne,ligne où diagonale) du point objectif, le joueur (où l'IA) est prévenu de la proximité et peut donc réagir en conséquence. #L'IA Naïve recherche toutes les cases une par une. #L'IA Améliorée recherche toutes les cases une par une. Néanmoins si elle est prévenue d'une proximité, elle ne recherchera plus que dans les cases environnantes non visités. #L'IA Optimisée recherche les cases en se servant du rayon de recherche offert par l'avertissement de proximité pour analyser les cases 9 par 9.
#Initialisation des variables a = random.randint(1,10) b = random.randint(1,10) x=2 xa=0 xnaif=0 y=2 ya=0 ynaif=0 xproche=0 xproches=0 yproche=0 yproches=0 i=0 inaif=0 ia=0 proche=0 proches=0 print("Le bateau se trouve sur un plateau de jeu de 10x10 cases.") print("Entrez les coordonées de tir.")
#IA optimisée essaye de trouver la position while (a!=2,5): #Recherche des points proches si avertissement de proximité. if proche==1 : xproche=x yproche=y if xproche==10 : y=yproche+1 ia+=1 if x == a and y ==b : break x=xproche-1 ia+=1 if x == a and y ==b : break x=xproche ia+=1 if x == a and y ==b : break x=xproche+1 ia+=1 if x == a and y ==b : break y=yproche ia+=1 break elif yproche==10 : x=xproche+1 ia+=1 if x == a and y ==b : break y=yproche-1 ia+=1 if x == a and y ==b : break x=xproche ia+=1 if x == a and y ==b : break x=xproche-1 ia+=1 if x == a and y ==b : break y=yproche ia+=1 break else : x=xproche+1 ia+=1 if x == a and y ==b : break y=yproche+1 ia+=1 if x == a and y ==b : break x=xproche ia+=1 if x == a and y ==b : break x=xproche-1 ia+=1 if x == a and y ==b : break y=yproche ia+=1 if x == a and y ==b : break y=yproche-1 ia+=1 if x == a and y ==b : break x=xproche ia+=1 if x == a and y ==b : break x=xproche+1 ia+=1 break #Déplacement du point de recherche else : if y==2 and x==2 : if x >= a-1 and x <= a+1 and y >= b-1 and y <= b+1 : proche = 1 else : x+=3 else : if x==10 : x -= 8 if y==8 : y+=2 else : y+= 3 elif x==8 : x+=2 else : x += 3 print("IA essaye coordonnées : ",x,";",y,".") i+=1 if x == a and y ==b : break else : if x >= a-1 and x <= a+1 and y >= b-1 and y <= b+1 : proche = 1
#IA améliorée essaye de trouver la position while (a!=2,5): #Recherche des points proches si avertissement de proximité. if proches==1 : ia+=1 xproches=xa yproches=ya xa=xproches+1 if xa == a and ya ==b : break ya=yproches+1 ia+=1 if xa == a and ya ==b : break xa=xproches ia+=1 if xa == a and ya ==b : break xa=xproches-1 ia+=1 if xa == a and ya ==b : break #Déplacement du point de recherche else : if xa==10 : xa -= 10 ya += 1 else : xa += 1 ia+=1 if xa == a and ya ==b : break else : #Vérification si le bateau est en vue if xa >= a-1 and xa <= a+1 and ya >= b-1 and ya <= b+1 : proches = 1
#IA naive essaye de trouver la position while (a!=2,5): #Déplacement du point de recherche if xnaif==10 : xnaif -= 10 ynaif += 1 else : xnaif += 1 inaif+=1 if xnaif == a and ynaif ==b : break
#Affichage des informations finales. print("Coordonnées du bateau : ",x,";",y,".") print ("Coulé ! Bien joué ! L'IA a trouvé au bout de ",i," tentatives.") print("A l'IA améliorée, cela aurait demandé ",ia," tentatives.") print("A l'IA naïf, cela aurait demandé ",inaif," tentatives.")
| |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 00:38 | |
| Ouille ouille ouille, beaucoup de "break"... Je checkerai ça demain (faut me le rappeler si j'oublie) car là suis un peu bourré ^^ A première vue ça n'a pas l'air trop mal mais je ne suis pas certain de comprendre tout le code dans le sens où, toutes ces conditions sans appel de fonction me laissent l'impression qu'il n'y a pas de terminaison à ton programme... Je me comprends. Là par contre, pour moi c'est un vrai bordel à déchiffrer, je ne sais pas si c'est parce que je suis bourré ou si c'est le manque de commentaire dans ton code mais... J'ai du mal ! A demain, donc En tout cas, ravis que tu touche à Python, tu verras, c'est le meilleur langage du monde | |
|
| |
Empty Mangeur de manettes Lv 65
Nombre de messages : 16363 Age : 38
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 00:43 | |
| Roooh putain, j'essaye quand même de déchiffrer mais je suis trop pété xD Tout ce que je vois ce sont des imbrications de conditions qui me pètent à la gueule ... Faut que tu donnes d'autres noms que X et Y à tes variables, c'est pas lisible sinon ^^ Encore une fois, ça a l'air (vite fait) codé correctement mais, suis complètement paumé d'une façon ou d'une autre, ha ha. ps: En même temps, là je serais même pas capable de lire un de mes propres fichiers py ... | |
|
| |
Daragonis Maker de Légende Lv 52
Nombre de messages : 4582 Age : 27
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 07:23 | |
| Oui je viens de me rendre compte que je peux faire sauter un bon nombre de variable (les xa, ya etc...) en les réutilisant tout bêtement pour le calcul des autres IA Bah après c'est juste les noms des coordonnées (x;y) ce serait vraiment plus clair de mettre (abscisses;ordonnées) comme nom de variable ? Pour les commentaires je vois pas forcément quoi dire ^^ | |
|
| |
garywiss6 Rétrograde Lv 54
Nombre de messages : 5302 Age : 29
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 10:40 | |
| Les breaks c'est très moche en effet Après une question, pourquoi tu fais des "while (a!=2,5):" ? je ne comprends pas ce que fait ce 2,5 sorti de nowhere ici Pareil : if xnaif==10 : xnaif -= 10 ça revient à xnaif = 0 (pourquoi faire compliqué alors qu'on peut faire simple) Après oui, sépare ton code en plusieurs fonctions ce sera plus opti et plus lisibles. Par exemple ton algo naif en une fonction se réusme à ça : - Code:
-
def algo_naif (a, b, x, y, i) : if x == a and y == b : return i + 1 else : return algo_naif(a, b, (x != 10 and x + 1 or 0), (x == 10 and y + 1 or y,) i + 1) et ensuite dans ton code pour l'utiliser tu fait print("A l'IA naïf, cela aurait demandé ",algo_naif( random.randint(1,10), random.randint(1,10), 0, 0, 0)," tentatives.") ____________ - Un soir banal sur skype a écrit:
- Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
| |
|
| |
Daragonis Maker de Légende Lv 52
Nombre de messages : 4582 Age : 27
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 18:50 | |
| A ce niveau, je débute vraiment de chez vraiment. Dans le sens que je n'ai jamais vu "def" et "return". Pour le moment j'ai vu les bases des bases des bases : condition & boucle, c'est tout ^^ Mais je vais essayer de me mater ce qu'il y a de sympa sur OpenClassroom (le nouveau nom pourri du SdZ vous savez ?...) J'en profite d'ailleurs à ce niveau, KoZzY, le tuto en PDF que tu as mis en téléchargement en première page est désormais un lien mort, alors comme il m'a l'air très sympathique si tu l'as toujours où qu'il existe un autre lien vous savez que ça peut intéresser un gugus dans le coin. Pourquoi Break pose un problème ? C'est le seul moyen pratique que j'ai trouvé pour pouvoir me tirer de la boucle dès que la position est trouvé. Il y a une raison de ne pas le prendre ? Comment le remplacer dans ce cas ? If x==10: x-=10 C'est juste qu'étrangement x=0 ne fonctionnait pas, je n'ai pas compris pourquoi. Pour le a!=2,5... Eh... Méthode d'amateur j'imagine : Je fait une boucle infini (a ne peut pas être égal à 2,5) qui sortira lors d'un brake. Parce que de la même manière quelque chose qui semble normalement marcher ne fonctionnait pas chez moi, j'ai pourtant tester les 3 : While (x!=a) and (y!=a) While (x!=a and y!=a) While x!=a and y!=a Un While pour tester que les coordonnées essayées par l'IA soit celles ciblées en gros ^^ | |
|
| |
garywiss6 Rétrograde Lv 54
Nombre de messages : 5302 Age : 29
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 19:02 | |
| While x!=a and y!=b plutôt mais le problème avec ça, c'est que dès que x sera egale à a, tu sortiras de la boucle meme si tu n'as pas le bon y. Vaut mieux faire un While x != a or y != b ____________ - Un soir banal sur skype a écrit:
- Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
| |
|
| |
Daragonis Maker de Légende Lv 52
Nombre de messages : 4582 Age : 27
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 20:56 | |
| Ah ? Étrange. Pourtant and n'est pas censé vouloir dire que les deux conditions doivent être valides et or que seule une a besoin de l'être ? | |
|
| |
garywiss6 Rétrograde Lv 54
Nombre de messages : 5302 Age : 29
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 21:04 | |
| Si justement, c'est pour ça que comme je t'ai dis quand tu fais x!=a and y!=b Si x == a mais que y !=b alors la condition sera fausse et ça sortira de ta condition, parce que l'un des deux test à foiré ____________ - Un soir banal sur skype a écrit:
- Moi : C'était quoi ce cri ?
Choco : C'est ma saucisse qui a hurlé.
| |
|
| |
Daragonis Maker de Légende Lv 52
Nombre de messages : 4582 Age : 27
| Sujet: Re: [Python] La programmation Facile. Jeu 07 Nov 2013, 21:53 | |
| Ah oui ok, je réfléchissais dans le mauvais sens. Ça sort de la condition dès que ce n'est plus validé... D'un autre côté j'ai eu l'idée de faire une boucle infini en mettant une condition toujours vrai... Je n'essayerais pas de comprendre ma logique... Bon du coup je régleras ça, plus de break j'espère du coup...
Sinon j'ai trouvé une manière plus optimisé de trouver la case en changeant l'ordre, l'IA inspecte d'abord toutes les cases où il y a 9 cases environnantes non découvertes, plutôt que d'inspecter de 9 à 9 de gauche à droite & de haut en bas, sachant qu'à 6 reprises l'IA utilise un mouvement sur un bord ne vérifiant que très peu de cases (3) et à une reprise (en 10;10) un coup qui ne repère qu'une seule et unique case. Donc plutôt que d'inspecte en faisant : coordonnées : 2;2 2;5 2;8 2;10 5;2 5;5 5;8 5;10 8;2 8;5 8;8 8;10 10;2 10;5 10;8 10;10 cases explorées : 9, 18, 27, 30, 39, 48, 57, 60, 69, 78, 87, 90, 93, 96, 99, 100
Maintenant elle fait : coordonnées : 2;2 2;5 2;8 5;2 5;5 5;8 8;2 8;5 8;8 2;10 5;10 8;10 10;2 10;5 10;8 10;10 cases explorées : 9, 18, 27, 36, 45, 54, 63, 72, 81, 84, 87, 90, 93, 96, 99, 100
Là j'ai vraiment plus l'impression de pouvoir améliorer la vitesse du coup... | |
|
| |
Contenu sponsorisé
| Sujet: Re: [Python] La programmation Facile. | |
| |
|
| |
| [Python] La programmation Facile. | |
|