J'ai découvert la chaîne il y a environ une semaine. J'étudie l'informatique au lycée et j'avais besoin de plus de connaissances pour un projet à écrire en python, cette chaîne est vraiment superbe, tu expliques tout de manière extrêmement compréhensible en seulement quelques minutes c'est vraiment génial !
j'ai hâte aussi mais faudra a mon avis pas s'attendre a créer des jeu de toute beauté avec python car se n'ai pas un langage bien adapté pour se génère de choses . ils existe bien le module pygame pour les jeu 2D mais bon .
@@lamassonnerie5050 Python peut faire de bons jeux (2D et 3D). Après ce n'est pas non plus le plus adapté à mon sens. Pour en savoir + : openclassrooms.com/forum/sujet/peut-on-creer-de-bons-jeux-avec-python
2:40 Créer un objet à partir d'une classe 5:10 Définir le constructeur d'une classe pour définir les attrubues des objets 8:40 Les méthodes sont des fonctions dans la cadres d'une classe(3 types de méthode) 8:50 1-Les guetteurs(assesseurs), ils permettent de récupérer des informations : def get_pseudo(self): return self.pseudo 10:30 2-Les setteurs(mutateur) 12:15 3-Tous les autres méthodes, Ex : un méthode pour attaquer un autre joueur 15:10 Créer une nouvelle feuille avec pour la classe player
Un tout grand merci pour toutes ces vidéos de qualité ! Tu dois prendre un temps dingue pour réaliser tout ça mais le résultat est au rendez-vous ! Merci 😊 Petite suggestion : faire une explication de la correction du tp (un petit vocal rapide et concis suffit, pas besoin d'une vidéo d'une qualité aussi grande) Bravo !
Hâte de voir la suite ! (Ça fait un mois que j'attends et les autres cours de python (Vidéos , livres) sont beaucoup moins captivants que cette série du coup... j'attend xD)
Salut Graven, je voudrait te faire une critique constructive malgré ton travail excellent !!! Lors du cours, vers 11:00 nous pouvons voir la fonction damage et la donnée entre () damage, tu aurais du les différencier un peu pl us pour que nous nous perdions moin. Merci pour ton travail qui donne envie d'être vue !!!
Excéllente vidéo malgré sa complexité pour un débutant car il m'a fallut de suivre d'autre vidéo sur UA-cam pour suivre celle là, mais des vidéos comme ça en français sont rare donc profitez de nous remplir ce vide :) merci beaucoup
Se que j'aime chez toi, c'est que pour illustrez tes propos tu fais des animations et tu parle posément. Beaucoup d'autre s'énerve où on comprend rien donc félicitation. J'aime beaucoup cette série :) ¿ A quand l'épisode 8 ? :*
Merci Graven pour tes vidéos. Je suis en reconversion depuis mon licenciement à cause de la crise sanitaire et je t’avoue que tes vidéos m’aident énormément en complétant mes cours !
La marche de progression à avoir est assez grande avec l'introduction des objets mais ton tuto est génial cela demande de la réflexion et ce qui est dur c'est de trouver les bonnes interactions entre les fonctions méthodes afin de faire quelque chose de logique j'avais du mal à comprendre comment faire interagir les objets avec l'arme et le joueur mais une fois le code réalisé tout devient logique encore merci pour tes tuto !
Bonjour Graven. Je te remercie pour ces videos. J'apprend et surtout comprend beaucoup mieux avec toi. Peut etre est ce parce que je suis fan de jeux videos et que du coup ca me parle plus. Je ne sais pas si c est pareil pour les precedentscorriges de tp et les futurs mais en titre il y a ecrit " Apprendre le Java" alors que nous apprenons du python sur l'instant ;). Je t'avoue ne pas y avoir preter attention jusque la. Prends soin de toi .
Excellente vidéo! Rapide et efficace! Vas tu aborder par la suite (lors que tu parles d'interface) les moyens pour déplacer un objet dans un plan (2D), à l'image de ta vidéo sur le rasberry pi sense hat qui m'a parue assez compliquée à comprendre sans cette notion de programmation orientée objet. Hate de voir la suite en tous cas c'est un super taff!!
Wow wow wow, je suivais t’es cours pour me donner un peu d’avance avant de commencer une formation, jusque la tout allait bien malgré n’avoir jamais rien appris a ce sujet avant, mais la je viens de me prendre une énorme claque
Wow wow wow, je viens de tomber sur cette video car je débute et je ne connaissais pas les classes mais tes tutos sont hyper clairs et instructifs, avec TP ET correction !! Magnifique je pense que je vais me taper toute ta série merci Graven !
TP : 1. méthode set_weapon qui permet de changer l'arme du joueur 2. modifier la méthode d'attaque pour, si le joueur a une arme, rajouter le nombre de dégâts qu'elle fait (en + du nombre d'attaque de base du joueur) (pour ceux qui comme moi préfère le voir à l'écrit)
Oula...je vais devoir regardé la video 4ou 5 fois et appuyer plusieurs fois sur pause .😂😂 Merci pour le boulot graven je suis en reconversion pro et fchm ta pédagogie est excellente. 🤜🤛🔥
ce que j'adore chez Graven, c'est qu'il nous apprends des langages de code comme si on voulait les utiliser pour faire des jeux.... ce qui est vrai ! ça donne un apprentissage beaucoup + clair !
Petite remarque pour ceux qui jouent avec le TP, attention à n'associer le couteau qu'à un seul joueur ou à créer un second couteau pour le second joueur, car sinon les deux joueurs possèderait le même couteau ce qui ne serait normalement pas possible. Vous pouvez faire un print sur la variable knife afin de vérifier l'identifiant unique de l'objet (Weapon).
Oui mais ça empêche pas le programme de fonctionner Dans ce cas on s'en fout un peu Le but de linfo c'est de gagner du temps donc si ça fonctionne en l'état ça ne sert à rien de créer deux fois le même couteau si tu veux l'appliquer Dans un fps en ligne à la cs go tu pense que les devs se sont fait chié à cloner une arme dans le code pour que plusieurs joueurs puissent l'utiliser ? A mon avis non ils ont fait au plus simple Désolé c'était un peu long mais j'aimerai bien faire comprendre la logique
Merci oui, la vidéo aura été assez complète pour moi 🙂 Je commence à m'y mettre depuis ta première vidéo sur python du coup, je ne sais pas encore jusqu'ou ça va d'aller plus loin mais je m'y atèle 👊🏼😁
Salut Graven, merci pour cette série de tuto sur python moi qui débute de zéro, j'ai compris presque tout mdr. J'espère que tu ne vas pas t'arrêter en ci bon chemin ^^
graven s'il vous je n arrive pa a comprendre le fonctinnement de _init_(self) a quoi sert cette derniere merci d' avance et bonne continuation , salutation de MAROC
Salit Graven, c'était pour te dire que j'adorais ta série, d'ailleurs j'ai même réalisé un programme qui permet de calculer l'aire ou le périmètre d'un triangle, mais vraiment cette épisode est dure à comprendre, les vidéos avant celle la passaient toutes seules mais celle-ci j'ai du mal, je pense que je vais devoir la regarder plusieurs fois pour comprendre, au moins ça te fera des vues 😂
La même... j'ai pas compris grand chose mais bon, au bout de 2 fois ça devrait passer... faudrait essayer de faire le tp après avoir visualisé la vidéo à quelques autres reprises, ça nous aiderait à comprendre.
Alors autant les épisodes d'avant, j'ai galerer pour comprendre certaines choses, autant les objets ça a été plutot "simple" je trouve. Par contre j'ai toujours autant de mal à faire les TP par moi même. J'pense regarder une deuxieme fois la série des tuto une fois que j'aurai fini. Merci en tout cas pour ce que tu fais, tu explique super bien, même si j'aurai aimé que tu explique plus en "détail" les termes utilisé, tels que return, ou init, etc etc. (Quand je dis en détail, c'est leur signification, pourquoi on utilise ça, qu'est ce que cela signifie, etc)Sinon c'est génial !
Salut Graven, j'adore tes tutos !!! Je suis bloqué à la 8ème minute, mêmes saisies que toi et lorsque je lance voici l'erreur : TypeError: Player() takes no arguments. Peux-tu m'aider ?
j'arrive un peut tard, mais merci pour tes videos, tu geres de ouf! alors, entre cette video et la precedente il y a vraiement une enorme difference en difficulté, je n'ai pas compris grand chose et bien entendu je narriverai pas a faire le tp, je vais devoir regarder la videos plusieurs fois, vraiement plusieurs fois et mentrainer beaucoup avant de passer a la prochaine. merci beaucoup pour ce boulot de dingue
Bonnes explications, exemple bien choisi, du bon boulot. Cependant je ne peux m'empêcher de relever qu'on déconseille d'utiliser des accesseurs/mutateurs en python pour plutôt directement manipuler l'attribut global et d'utiliser des propriétés (comme en C#) lorsqu'on souhaite exécuter une fonction (de traitement, de contrôle d'accès) à la place d'accéder directement à la variable.
cela vient surement du fais que j'utilise visuale studio code et que ce dernier n'a pas la possibilité d'aller chercher dans un autre fichier Python !?
@@Adecathelineau je l'utilse aussi et sa marche tres bien tu a du te tromper dans ta phrase qui te sert d'importe un truc du genre mais si tu gere pas VS suit sont cours avec Pycharm.
Salut, Je viens récemment de me mettre à suivre tes vidéos mais je rencontrais un problème car mon ordinateur était trop ancien pour supporter python 3. J'ai donc décidé de basculer sur mon raspberry afin de remédier à ce problème mais je tombe encore sur une embûche : je n'ai pas le même IDE. Je suis sur thonny qui fonctionne très bien mais là je bute sur le moyen d'appeler le class player dans un autre projet ? Je ne sais pas si mon explication était clair, si oui aurais tu une solution stp ? En tout cas merci pour ton contenus tes vidéos sont clairs et très bien expliqué
Salut Graven ! Tres bon tuto franchement gg . Cependant j'ai une question:j'aimerai créer un systeme de mot de passe et d'identifiant,mais si par exemple quelqu'un n'en a pas,j'aimerai bien en creer un pour lui mais est ce que si je redemarre le programme,il sera toujours enregistré ?
Un grand merci pour tes vidéos, que je suis assidement depuis quelques jours. J'ai du mal à comprendre le rôle des getteurs. En effet, mon code fonctionne très bien sans eux, mais tu dis un moment donné que c'est plus judicieux de faire un 'get_pseudo' par exemple 9:44. Du coup je me rend bien compte que quelque chose m'a échappé, mais je ne vois pas ce que c'est. Peux-tu m'éclairer stp ?
je pense que dans ce cas preçis c'est inutile, pour moi le getteur sert quand les variable sont privées dans la class et donc pas accessible de maniere direct. cela permet de securiser les varaibles (controle des saisies etc)
Bravo Graven, super vidéo! Pourrais-tu fair un serveur d'aide discord pour python si t'es dessus ? Ce serait génial ! Merci d'avoir fait cette vidéo ! (Même si c'est compliqué à comprendre , mais c'est pas à cause de toi ! )
Bonjour, je ne comprends pas concrètement l'utilité des "getters" dans le cas présent à partir de 8:53 , qu'est-ce que tu entends par l'accessibilité de la valeur? J'ai dû mal à comprendre l'intérêt de cette Méthode sachant qu'elle densifie le code et que player1.pseudo permet de renvoyer les mêmes informations PS : Excellente chaine, tant sur le format que sur les TP qui permettent de mettre tes tutos en pratique. Merci beaucoup pour ton travail!
bon avec un peu de mal j'ai réussit, merci pour vos tutos Quand le joueur change d'arme il faut absolument avoir sauvegarder dans une variable l'attaque du début sinon l'attaque ne cesse d'augmenter #Dans le corps du programme j'ai ajouté #Sauvegarde variable de l'attaque sans arme attaque_Origine1=joueur1.attaque joueur1.set_arme(tournevis.nom, tournevis.dommage,attaque_Origine1) print("desormais", joueur1.pseudo," a une attaque de", joueur.attaque) Et dans la classe Player le setteur de la classe Player je l'ai modifié ainsi def set_arme(self,arme,attaque_arme,attaque_origine): self.arme = arme self.attaque = attaque_arme+attaque_origine
Super vidéo, super série ! Bravo et merci Graven :-) J'ai quand-même une question... En programmation Python, j'ai compris (grâce à toi ;-) ) que s'il y a répétition du code, c'est qu'il doit y exister une manière plus courte et efficace de faire. Cependant, dans les "class" , il faut répéter 3 fois variable "self." dans __init__ ? C'est normal ? Il y a plus court ?
Salut graven. Merci Merci Merci pour vos tutos. J ai un petit question pour vous. Moi je veux me spécialiser en site Web.. Vous pensez que ça en vaut la peine de regarder le tuto 7 pour nous qui voulons se spécialiser en dev web? Et non pour la création des Jeux vidéos
Hey salut ! je pense que cette serie peut t'aider à t’intéresser à la programmation de maniere plus ludique, mais peux etre pas enormement si tu souhaites faire du web ;)
Merci graven comme dab , il est agréable de suivre ce cours car , sous ton animation, tu nous devoile beaucoup de travail et un grand savoir faire . Je cherche a acheter un raspberry serais tu me renseigner ou en acheter au moin cher possible ?
@@Gravenilvectuto merci beaucoup il y en aurait il que tu me conseillerais ("ps j'ais voter pr que tu offre un raspberry pour le giveaways , bientot les 50k gros gg")
14:50 Je n'ai pas compris pourquoi player2.health a été affecté par la fonction damage de player1 alors que dans d'autres langages comme c# ou c++ où il faut utiliser une reference ou un pointeur pour l'affecter. Est-ce que c'est gérer sans mot clé?
C'est parce que la méthode player1.attack a pris player2 en paramètre et l'attribue a target_player, la méthode player1.attack appel donc la méthode player2.dammage qui retire des pv au player2
oui mais normalement si on applique une modification à un paramètre ça ne change pas la variable globale, au moins dans les autres langages que je connais.
Salut professeur très bonne vidéo comme d'habitude, mais j'ai une faveur à te demander, je suis un passionné en sécurité informatique et il s'avère que le langage python et un langage très utilisaient dans ce milieu alors tu pourrais prochainement faire des vidéo sur ce domaine par exemple au niveau des modules on tu pourrais montrer l'utilisation des modules: -sys -os.platform -subprocess Après c'est toi qui vois je respecterais totalement ton choix, ce n'est qu'une faveur donc à toi de décider si oui ou non, sur ce bonne. continuation professeur.
à 13:16, pourquoi si à la place de target_player.damage(self.attack) je mets target_player.damage(get_attack_value(self)) ça me renvoie une erreur ? (alors que cette fonction renvoie self.attack, soit la valeur de l'attaque du joueur) Traceback (most recent call last): File "", line 1, in File "", line 17, in attaque_joueur NameError: name 'get_attack_value' is not defined J'avoue ne pas comprendre.
J'ai trouvé ma réponse : il faut écrire target_player.damage(player.get_attack_value(self)) et là ça marche. Peut-être que la réponse à mon interrogation se trouvait dans les vidéos suivantes ! (en tout cas j'ai trouvé l'explication ailleurs ;))
RedRom 00 c’est parce qu’il faut d’abord écrire def puis mettre une espace et commencer à écrire init et normalement il te la proposera en bas en violet
Bonjour juste pour vérifier : quand je récupère des variables d'objets dans un même fichier python, les données sont bien récupérées même sans getters. Ceux ci servent donc uniquement lorsque l'on met le model dans un autre fichier ? Merci pour ce tutoriel !
A 9:47, je n'ai pas trop compris cette histoire d'accessibilité. Je suis preneur de toute explication (je ne suis pas novice avec le monde de la programmation donc je suis preneur même des subtilités). Sinon, je me régale à suivre l'ensemble du tuto qui est super bien fait.
Alors c'est simple, par défaut tu as des attributs qui sont pseudo, health, etc Seulement, il est mieux de definir une methode get pour recuperer la valeur, et une set pour la changer, car sinon tout est publique et c'est pas du tout bon pour le code
Bonsoir, et merci pour tes vidéos, j'ai été bloquée à la toute fin de la vidéos avec une erreur d'attribut pour "attack_value" et pourtant j'ai recopier à la lettre prêt chaque ligne de code, serait-ce le logiciel qui est plus moderne,...
Dans le cadre de cette vidéo je dirais : à rien. D'autant plus qu'il est possible _ensuite_ d'ajouter des get/set via des décorateurs en Python. Mais de manière générale en programmation il est bon de ne pas utiliser directement les attributs (c'est une « bonne pratique »). Imagines que tu utilises ton objet (et ses attributs) dans plein de code ailleurs. Si jamais ton attribut doit finalement être modifié avant d'être utilisé, tu vas devoir changer tous les endroits où cet attribut est utilisé. Si je prends l'exemple de « health », imagines que tu décides que la vie de ton personnage est maintenant pondérée par un handicap, en gros « vie = vie * handicap ». Tu vas devoir ajouter cette notion de handicap partout. Alors que si tu utilises une fonction pour y accéder, tu n'as qu'à modifier cette fonction seulement. L'autre avantage est la protection. Si tu souhaites que seul ton objet actuel puisse _modifier_ ta vie, en mettant par exemple des contraintes. Ça évite que du code ailleurs face un truc idiot qui casserait le fonctionnement interne de ton objet. Une petite référence pour la route : www.datacamp.com/community/tutorials/property-getters-setters
Par contre je capte juste pas un truc quand tu dis la protection tu veux dire que dans la classe il faut utiliser get et en dehors self ou l’inverse ou rien à voir ?
@@wara1543 la protection c'est le fait que les autres objets ne puissent pas directement modifier les variables de l'objet courant (tout est relatif, en Python il n'y a pas véritablement d'attribut privé). Donc les autres objets vont utiliser get/set forcément. Après à l'intérieur de ton objet c'est bien aussi d'utiliser get/set le plus possible.
Hello Graven! j'ai fait ton tp et j'ai essayé ensuite de faire attaqué mon player1 mais que faire il ne veut pas pourrais tu m'ai der s'il te plait !!!
petite erreur : def get_attack_value(self) ne change pas. def attack_player(self, target_player) : target_player.damage(self.attack + self.weapon) Il ne faut bien sûr pas oublier d'importer le module weapon.
je me demandais suite aux longues heures passées à regarder tes vidéos (^_^) : quelles études à tu fais et quelles études conseillerais tu à quelqu'un voulant faire de l'informatique ? merci, j'hésite actuellement entre prépa + école d'ingé et cursus universitaire. merci bien °_°
bonjour petit soucis avec la correction du TP. le code de la ligne 28 de la classeplayer(damage += self.weapon.get_damage_amount()) la fonction get_damage_amount( fait parti de la classe weapon) , mais comment elle peut etre appelé au niveau local de la fonction. de plus dans la classe player je ne comprend pas comment tu fais pour fabriquer une arme, j'ai l'impression que c'est une simple variable (dans la fonction set_wapon (self.weapon = weapon)). dans mon esprit je croyais que l'on devait faire appel a la classe weapon pour fabriquer l'arme par defaut
Slt Graven! J'ai 1 pti problème avec l'enregistrement des fichiers texte. Je veux écrasé un fichier texte à plusieurs reprise et pouvoir l'enregistrer mais le "write(...)" ne donne pas et la méthode du module "pikcle" (dump) déforme mon fichier au fur et à mesure. Qu'est ce je peut faire pour me débloquer? En passant, merci pour tes vidéos ça m'a super aidé et ça m'aide toujours d'ailleurs.
HEY BIEN SALUT GRAVEN . J'aimerais que tu m' explique quelque chose, parceque je rencontre une erreur. EN effet lorsque j'ai essayé de repeter ce que tu fait on me fait savoir q'entre les parametres il ne faut mettre d'argument. player1 = Player("tortue", 20, 4) player2 = Player("goku", 20, 5)
Hey inoussa, je pense que ton init est mal écrit.. écrit le __init__ au lieu de juste init. Si tu as rien modifié sur l'interface ton "init" devrait être rose et pas jaune ;) Bonne chance pour la suite.
Yo les devs ! Nouvelle vidéo python sur les objets !
Bon visionnage à tous !
Génial j'attendais cette vidéo avec impatience ! 🔝
@@nyrox3614 pareil
Merci ! J attendais cette vidéo 😁
Excellente vidéo, merci, c'est très bien expliqué et ça m'aide beaucoup
moi j attend la prochaine avec impatience 😭
Les vidéos précédentes étaient plutôt facile mais celle ci, je crois qu'il y a une marche énorme à monter!
très bonne série btw!
une fois que tu as compris ça, le reste va couler de source :)
Graven - Développement alors je me remet au boulot!! Merci
@@prcha7294 T'as compris maintenant ?
@@barbeblanche1581 😂
@@jean-fredericsaint-auret7061 🤣
J'ai découvert la chaîne il y a environ une semaine. J'étudie l'informatique au lycée et j'avais besoin de plus de connaissances pour un projet à écrire en python, cette chaîne est vraiment superbe, tu expliques tout de manière extrêmement compréhensible en seulement quelques minutes c'est vraiment génial !
Oh merci beaucoup !
Je m’amuse vraiment à bâtir mon propre projet grâce à votre tuto! Merci Graven! vous avez un don pour l’enseignement! continuez!
Toujours là. Ça veut dire que la série est bien ^^
c'est incroyable sa fais des semaine que je ne comprend rien a la POO et je tombe sur cette vidéo merveilleuse Merci pour ce cours incroyable .
Quoi ?! J’ai bien entendu... On va faire... UNE INTERFACE ? Vivement le prochain épisode !!!
j'ai hâte aussi mais faudra a mon avis pas s'attendre a créer des jeu de toute beauté avec python car se n'ai pas un langage bien adapté pour se génère de choses .
ils existe bien le module pygame pour les jeu 2D mais bon .
@@habbodev6226 pycharm ne permet pas de faire des jeux ?
@@lamassonnerie5050 Python peut faire de bons jeux (2D et 3D). Après ce n'est pas non plus le plus adapté à mon sens.
Pour en savoir + :
openclassrooms.com/forum/sujet/peut-on-creer-de-bons-jeux-avec-python
@plushoom non en c#
@@blubyzey2480 C'est très différent... Le C++ sera vraiment pour les gros jeux du genre Call of duty...
Vraiment Graven vous êtes trop fort ! J'apprends bcp avec vous. J'ai hâte de voir la vidéo sûre les interfaces graphiques
2:40 Créer un objet à partir d'une classe
5:10 Définir le constructeur d'une classe pour définir les attrubues des objets
8:40 Les méthodes sont des fonctions dans la cadres d'une classe(3 types de méthode)
8:50 1-Les guetteurs(assesseurs), ils permettent de récupérer des informations : def get_pseudo(self): return self.pseudo
10:30 2-Les setteurs(mutateur)
12:15 3-Tous les autres méthodes, Ex : un méthode pour attaquer un autre joueur
15:10 Créer une nouvelle feuille avec pour la classe player
Un tout grand merci pour toutes ces vidéos de qualité ! Tu dois prendre un temps dingue pour réaliser tout ça mais le résultat est au rendez-vous ! Merci 😊
Petite suggestion : faire une explication de la correction du tp (un petit vocal rapide et concis suffit, pas besoin d'une vidéo d'une qualité aussi grande)
Bravo !
Hâte de voir la suite !
(Ça fait un mois que j'attends et les autres cours de python (Vidéos , livres) sont beaucoup moins captivants que cette série du coup... j'attend xD)
Salut Graven, je voudrait te faire une critique constructive malgré ton travail excellent !!! Lors du cours, vers 11:00 nous pouvons voir la fonction damage et la donnée entre () damage, tu aurais du les différencier un peu pl us pour que nous nous perdions moin. Merci pour ton travail qui donne envie d'être vue !!!
Excéllente vidéo malgré sa complexité pour un débutant car il m'a fallut de suivre d'autre vidéo sur UA-cam pour suivre celle là, mais des vidéos comme ça en français sont rare donc profitez de nous remplir ce vide :) merci beaucoup
Raouf Astuce moi aussi je trouve que c’est un peut complique. Quelle est la vidéo qui t’a aider à mieux comprendre ?
Ah ouais les premiers épisodes était faciles impeu mais la la difficulté augmente , en tout cas tes vidéos sont les meilleurs. Merci
Bon courage
Se que j'aime chez toi, c'est que pour illustrez tes propos tu fais des animations et tu parle posément. Beaucoup d'autre s'énerve où on comprend rien donc félicitation. J'aime beaucoup cette série :) ¿ A quand l'épisode 8 ? :*
en pleine finalisation d'ecriture, cette semaine avec un peu de chance :)
@@Gravenilvectuto Hoho, cadeau du début d'année ;)
La vidéo était géniale. Je crois tout de même que je vais la revoir un autre jour, tant j'apprend de nouvelles choses.
Merci Graven pour tes vidéos. Je suis en reconversion depuis mon licenciement à cause de la crise sanitaire et je t’avoue que tes vidéos m’aident énormément en complétant mes cours !
La marche de progression à avoir est assez grande avec l'introduction des objets mais ton tuto est génial cela demande de la réflexion et ce qui est dur c'est de trouver les bonnes interactions entre les fonctions méthodes afin de faire quelque chose de logique j'avais du mal à comprendre comment faire interagir les objets avec l'arme et le joueur mais une fois le code réalisé tout devient logique encore merci pour tes tuto !
Elle sont toujours aussi cool tes vidéos, on comprend bien
Bonjour Graven. Je te remercie pour ces videos. J'apprend et surtout comprend beaucoup mieux avec toi. Peut etre est ce parce que je suis fan de jeux videos et que du coup ca me parle plus. Je ne sais pas si c est pareil pour les precedentscorriges de tp et les futurs mais en titre il y a ecrit " Apprendre le Java" alors que nous apprenons du python sur l'instant ;). Je t'avoue ne pas y avoir preter attention jusque la. Prends soin de toi .
Excellente vidéo! Rapide et efficace!
Vas tu aborder par la suite (lors que tu parles d'interface) les moyens pour déplacer un objet dans un plan (2D), à l'image de ta vidéo sur le rasberry pi sense hat qui m'a parue assez compliquée à comprendre sans cette notion de programmation orientée objet.
Hate de voir la suite en tous cas c'est un super taff!!
oui ;)
On l'attendait ! Merci Graven :D
Encore un excellent cours, rien à dire !
Wow wow wow, je suivais t’es cours pour me donner un peu d’avance avant de commencer une formation, jusque la tout allait bien malgré n’avoir jamais rien appris a ce sujet avant, mais la je viens de me prendre une énorme claque
Tu était donc tout en haut de la montagne de stupidité et tu a chuté, bon courage ça va passer avec de la persévérance
tu vas sauver mon année en 2024 c'est dingue
Wow wow wow, je viens de tomber sur cette video car je débute et je ne connaissais pas les classes mais tes tutos sont hyper clairs et instructifs, avec TP ET correction !! Magnifique je pense que je vais me taper toute ta série merci Graven !
TP :
1. méthode set_weapon qui permet de changer l'arme du joueur
2. modifier la méthode d'attaque pour, si le joueur
a une arme, rajouter le nombre de dégâts qu'elle fait (en + du nombre d'attaque
de base du joueur)
(pour ceux qui comme moi préfère le voir à l'écrit)
Merci, au top tes vidéos sur Pythons !
pourra tu faire une vidéo sur les exceptions ? comment les gérer ect ?
Oula...je vais devoir regardé la video 4ou 5 fois et appuyer plusieurs fois sur pause .😂😂 Merci pour le boulot graven je suis en reconversion pro et fchm ta pédagogie est excellente. 🤜🤛🔥
c'est très complexe ! Mais merci j'ai compris, t'es un dieu mec !
UN GRAND MERCI GRAVEN ! je suis fier de vous
ce que j'adore chez Graven, c'est qu'il nous apprends des langages de code comme si on voulait les utiliser pour faire des jeux.... ce qui est vrai !
ça donne un apprentissage beaucoup + clair !
je viens de commencer a apprendre la programmation j'espère que je deviendrais un bon développeur un jour ! Merci Graven
Petite remarque pour ceux qui jouent avec le TP, attention à n'associer le couteau qu'à un seul joueur ou à créer un second couteau pour le second joueur, car sinon les deux joueurs possèderait le même couteau ce qui ne serait normalement pas possible. Vous pouvez faire un print sur la variable knife afin de vérifier l'identifiant unique de l'objet (Weapon).
Oui mais ça empêche pas le programme de fonctionner
Dans ce cas on s'en fout un peu
Le but de linfo c'est de gagner du temps donc si ça fonctionne en l'état ça ne sert à rien de créer deux fois le même couteau si tu veux l'appliquer
Dans un fps en ligne à la cs go tu pense que les devs se sont fait chié à cloner une arme dans le code pour que plusieurs joueurs puissent l'utiliser ? A mon avis non ils ont fait au plus simple
Désolé c'était un peu long mais j'aimerai bien faire comprendre la logique
Merci oui, la vidéo aura été assez complète pour moi 🙂
Je commence à m'y mettre depuis ta première vidéo sur python du coup, je ne sais pas encore jusqu'ou ça va d'aller plus loin mais je m'y atèle 👊🏼😁
trop top merci 😊⭐️
Salut Graven, merci pour cette série de tuto sur python moi qui débute de zéro, j'ai compris presque tout mdr. J'espère que tu ne vas pas t'arrêter en ci bon chemin ^^
graven s'il vous je n arrive pa a comprendre le fonctinnement de _init_(self) a quoi sert cette derniere merci d' avance et bonne continuation , salutation de MAROC
Moi aussi j'ai pas trop bien compris ça
ou celle la elle m'a bien aidé malgré le micro x)
ua-cam.com/video/J2cLlwVPC94/v-deo.html
Mercii!
je t'aime, tu es mon sauveur
2:18 20 points de vie... hmm , ca me rapelle vaguement un autre jeu vidéo hein
Minecraft
@@akouguij Ou undertale quand on est en lv1
mec y'a plein de jeux dans lesquels ton perso a 20 points de vie calme toi
@@bonjour7209 et pas que des jeux video y'a magic the gathering
Salit Graven, c'était pour te dire que j'adorais ta série, d'ailleurs j'ai même réalisé un programme qui permet de calculer l'aire ou le périmètre d'un triangle, mais vraiment cette épisode est dure à comprendre, les vidéos avant celle la passaient toutes seules mais celle-ci j'ai du mal, je pense que je vais devoir la regarder plusieurs fois pour comprendre, au moins ça te fera des vues 😂
La même... j'ai pas compris grand chose mais bon, au bout de 2 fois ça devrait passer... faudrait essayer de faire le tp après avoir visualisé la vidéo à quelques autres reprises, ça nous aiderait à comprendre.
Bonjour j'aimerais savoir si on peut regrouper tout les player pour faire par exemple : Print (nom de tout les player)
Oui, tu peux créer une liste contenant le nom des joueurs et afficher cette liste
@@Slimour Lol enfaite je sais c'est juste que j'étais débutant avant ! Merci pour ta réponse
Lama ah 😅.
Bon bah de rien quand même.
@@Slimour Tu as discord?
MDR
Non sinon vraiment bravo à toi tes tutos sont super !
Alors autant les épisodes d'avant, j'ai galerer pour comprendre certaines choses, autant les objets ça a été plutot "simple" je trouve. Par contre j'ai toujours autant de mal à faire les TP par moi même. J'pense regarder une deuxieme fois la série des tuto une fois que j'aurai fini. Merci en tout cas pour ce que tu fais, tu explique super bien, même si j'aurai aimé que tu explique plus en "détail" les termes utilisé, tels que return, ou init, etc etc. (Quand je dis en détail, c'est leur signification, pourquoi on utilise ça, qu'est ce que cela signifie, etc)Sinon c'est génial !
Vraiment ? Perso je trouve le reste c’était simple par rapport à ca
Explications super claires 🎉
Salut Graven, j'adore tes tutos !!!
Je suis bloqué à la 8ème minute, mêmes saisies que toi et lorsque je lance voici l'erreur : TypeError: Player() takes no arguments. Peux-tu m'aider ?
tu as peut-etre ecris __int__ a la place de __init__ ca m'est arrivé aussi
j'arrive un peut tard, mais merci pour tes videos, tu geres de ouf! alors, entre cette video et la precedente il y a vraiement une enorme difference en difficulté, je n'ai pas compris grand chose et bien entendu je narriverai pas a faire le tp, je vais devoir regarder la videos plusieurs fois, vraiement plusieurs fois et mentrainer beaucoup avant de passer a la prochaine. merci beaucoup pour ce boulot de dingue
c pas si difficile que sa
Merci beaucoup M. Graven
13:26 🤣je m'y attendais pas
Bonnes explications, exemple bien choisi, du bon boulot. Cependant je ne peux m'empêcher de relever qu'on déconseille d'utiliser des accesseurs/mutateurs en python pour plutôt directement manipuler l'attribut global et d'utiliser des propriétés (comme en C#) lorsqu'on souhaite exécuter une fonction (de traitement, de contrôle d'accès) à la place d'accéder directement à la variable.
Excellente vidéo!! C'est pour quand la prochaine?
tres bientot, mais avant il y a un evenement special la semaine prochaine
@@Gravenilvectuto Merci! Quel évènement?
un grand live evenement ;) je ferais une annonce cette semaine
Je me langui la prochaine, et je me nomme aussi Lorenzo ! x)
15:41 ça ne foctionne pas ! pourtant j'ai tout fait pareil et jusque là ça marchais !
Pouvez vous me conseiller sur le sujet ?
cela vient surement du fais que j'utilise visuale studio code et que ce dernier n'a pas la possibilité d'aller chercher dans un autre fichier Python !?
@@Adecathelineau je l'utilse aussi et sa marche tres bien tu a du te tromper dans ta phrase qui te sert d'importe un truc du genre mais si tu gere pas VS suit sont cours avec Pycharm.
Hey Graven,
En cours on programme avec IDLE 3, je l'ai donc gardé et n'ai pas pris ton logiciel ^^'
Il ne reconnaît pas le __init__(self)
Que faire?!
pareil
c'est pas grave tkt ^^
excellentes explications
Salut,
Je viens récemment de me mettre à suivre tes vidéos mais je rencontrais un problème car mon ordinateur était trop ancien pour supporter python 3. J'ai donc décidé de basculer sur mon raspberry afin de remédier à ce problème mais je tombe encore sur une embûche : je n'ai pas le même IDE. Je suis sur thonny qui fonctionne très bien mais là je bute sur le moyen d'appeler le class player dans un autre projet ?
Je ne sais pas si mon explication était clair, si oui aurais tu une solution stp ?
En tout cas merci pour ton contenus tes vidéos sont clairs et très bien expliqué
facile le tp
Salut Graven ! Tres bon tuto franchement gg . Cependant j'ai une question:j'aimerai créer un systeme de mot de passe et d'identifiant,mais si par exemple quelqu'un n'en a pas,j'aimerai bien en creer un pour lui mais est ce que si je redemarre le programme,il sera toujours enregistré ?
regarde la video sur les interfaces graphique (episode 8) je montre un peu comment faire à la fin
@@Gravenilvectuto Ok merci beaucoup👍😉
Un grand merci pour tes vidéos, que je suis assidement depuis quelques jours.
J'ai du mal à comprendre le rôle des getteurs. En effet, mon code fonctionne très bien sans eux, mais tu dis un moment donné que c'est plus judicieux de faire un 'get_pseudo' par exemple 9:44. Du coup je me rend bien compte que quelque chose m'a échappé, mais je ne vois pas ce que c'est.
Peux-tu m'éclairer stp ?
je pense que dans ce cas preçis c'est inutile, pour moi le getteur sert quand les variable sont privées dans la class et donc pas accessible de maniere direct.
cela permet de securiser les varaibles (controle des saisies etc)
Pédagogue et efficace 👌
Bravo Graven, super vidéo!
Pourrais-tu fair un serveur d'aide discord pour python si t'es dessus ? Ce serait génial !
Merci d'avoir fait cette vidéo ! (Même si c'est compliqué à comprendre , mais c'est pas à cause de toi ! )
regarde la derniere video
Super vidéo tout est limpide merci beaucoup
Bonjour, je ne comprends pas concrètement l'utilité des "getters" dans le cas présent à partir de 8:53 , qu'est-ce que tu entends par l'accessibilité de la valeur? J'ai dû mal à comprendre l'intérêt de cette Méthode sachant qu'elle densifie le code et que player1.pseudo permet de renvoyer les mêmes informations
PS : Excellente chaine, tant sur le format que sur les TP qui permettent de mettre tes tutos en pratique. Merci beaucoup pour ton travail!
des cours sont super efficaces
bon avec un peu de mal j'ai réussit, merci pour vos tutos
Quand le joueur change d'arme il faut absolument avoir sauvegarder dans une variable l'attaque du début sinon l'attaque ne cesse d'augmenter
#Dans le corps du programme j'ai ajouté
#Sauvegarde variable de l'attaque sans arme
attaque_Origine1=joueur1.attaque
joueur1.set_arme(tournevis.nom, tournevis.dommage,attaque_Origine1)
print("desormais", joueur1.pseudo," a une attaque de", joueur.attaque)
Et dans la classe Player
le setteur de la classe Player je l'ai modifié ainsi
def set_arme(self,arme,attaque_arme,attaque_origine):
self.arme = arme
self.attaque = attaque_arme+attaque_origine
Super vidéo, super série ! Bravo et merci Graven :-) J'ai quand-même une question... En programmation Python, j'ai compris (grâce à toi ;-) ) que s'il y a répétition du code, c'est qu'il doit y exister une manière plus courte et efficace de faire. Cependant, dans les "class" , il faut répéter 3 fois variable "self." dans __init__ ? C'est normal ? Il y a plus court ?
Non, car de ce que j'ai compris ça va chercher dans self... donc si tu mets pas le "self". , ça ira pas chercher dedans. De ce que j'ai compris :)
incroyables tuto
continue comme ça😤👌👍
Salut graven. Merci Merci Merci pour vos tutos. J ai un petit question pour vous. Moi je veux me spécialiser en site Web.. Vous pensez que ça en vaut la peine de regarder le tuto 7 pour nous qui voulons se spécialiser en dev web? Et non pour la création des Jeux vidéos
Je serai ravi d avoir votre avis. Merci et passer une bonne journée
Hey salut ! je pense que cette serie peut t'aider à t’intéresser à la programmation de maniere plus ludique, mais peux etre pas enormement si tu souhaites faire du web ;)
Merci pour ton avis
when I tape the code 8:40 it gaves me yellow lines and say unexpected arguments i don't know how to solve it please answer me
Je suis trop contente je m'améliore enfin
Merci graven comme dab , il est agréable de suivre ce cours car , sous ton animation, tu nous devoile beaucoup de travail et un grand savoir faire . Je cherche a acheter un raspberry serais tu me renseigner ou en acheter au moin cher possible ?
Merci beaucoup tout dabord,
tu peux acheter des raspberry pas trop cher sur le site :
www.kubii.fr/
@@Gravenilvectuto merci beaucoup il y en aurait il que tu me conseillerais ("ps j'ais voter pr que tu offre un raspberry pour le giveaways , bientot les 50k gros gg")
je vais recevoir des produits de cette marque, mais je te conseil le A+
14:50 Je n'ai pas compris pourquoi player2.health a été affecté par la fonction damage de player1 alors que dans d'autres langages comme c# ou c++ où il faut utiliser une reference ou un pointeur pour l'affecter.
Est-ce que c'est gérer sans mot clé?
C'est parce que la méthode player1.attack a pris player2 en paramètre et l'attribue a target_player, la méthode player1.attack appel donc la méthode player2.dammage qui retire des pv au player2
oui mais normalement si on applique une modification à un paramètre ça ne change pas la variable globale, au moins dans les autres langages que je connais.
ultra bien expliquer je comprand vrainment bien que sa reste difficil pour moi mais l'expliquation est parfaite bravo
help ! a 4:44 sa ne marche pas ! je ne pzeux pas mettre quel que chose entre les parenthéses snif
Tu as mis quoi ça " ou ça ' ?
Super propre et efficace gg juste un petit quelque chose tu pourrais essayer wing Ide comme Ide il est vraiment pas mal
merci ;)
Opti j’vais essayer
Sublime Text est pas mal aussi
@@alkapalkapone cest pas un ide
@@pateencroute8256
Ah ok d'accord je penser que vous parlé IDE
Super vidéo ! Repost ? Y’a plus le truc à 1:20 ! Merci. Et continue !!!!
oui j'ai repost, #perfectionniste
Graven - Développement :)
j'attends le prochain ep sur les interfaces ! merci à toi
on va voir l'heritage avant
Merci infiniment pour tes tutos, ils sont simples et très clairs !
Salut professeur très bonne vidéo comme d'habitude, mais j'ai une faveur à te demander, je suis un passionné en sécurité informatique et il s'avère que le langage python et un langage très utilisaient dans ce milieu alors tu pourrais prochainement faire des vidéo sur ce domaine par exemple au niveau des modules on tu pourrais montrer l'utilisation des modules:
-sys
-os.platform
-subprocess
Après c'est toi qui vois je respecterais totalement ton choix, ce n'est qu'une faveur donc à toi de décider si oui ou non, sur ce bonne. continuation professeur.
Je vais y reflechir ;)
@@Gravenilvectuto merci professeur.
@@letutohack7210 Je vois qu’il y accorde une longue réflexion
Gg les gars qui sont en tête du quizz
à 13:16, pourquoi si à la place de target_player.damage(self.attack) je mets target_player.damage(get_attack_value(self)) ça me renvoie une erreur ? (alors que cette fonction renvoie self.attack, soit la valeur de l'attaque du joueur)
Traceback (most recent call last):
File "", line 1, in
File "", line 17, in attaque_joueur
NameError: name 'get_attack_value' is not defined
J'avoue ne pas comprendre.
name 'get_attack_value' is not defined
@@Gravenilvectuto J'ai bien vu, mais il me semble que la méthode est créée avant, non ? (ou bien je rate une subtilité). Merci de la réponse rapide :)
J'ai trouvé ma réponse :
il faut écrire target_player.damage(player.get_attack_value(self)) et là ça marche.
Peut-être que la réponse à mon interrogation se trouvait dans les vidéos suivantes ! (en tout cas j'ai trouvé l'explication ailleurs ;))
Je n'ai pas de coloration pour __init__ et le self ne s'écrit pas automatiquement mais sinon tout marche
Super, tu peux tout de meme me faire une capture de ton ide pour voir
Moi aussi Pycharm , sur Fedora 29 pas de coloration pour __init__
@@alkapalkapone __init__
RedRom 00 c’est parce qu’il faut d’abord écrire def puis mettre une espace et commencer à écrire init et normalement il te la proposera en bas en violet
Bonjour juste pour vérifier : quand je récupère des variables d'objets dans un même fichier python, les données sont bien récupérées même sans getters. Ceux ci servent donc uniquement lorsque l'on met le model dans un autre fichier ?
Merci pour ce tutoriel !
A 9:47, je n'ai pas trop compris cette histoire d'accessibilité. Je suis preneur de toute explication (je ne suis pas novice avec le monde de la programmation donc je suis preneur même des subtilités). Sinon, je me régale à suivre l'ensemble du tuto qui est super bien fait.
Alors c'est simple, par défaut tu as des attributs qui sont pseudo, health, etc
Seulement, il est mieux de definir une methode get pour recuperer la valeur, et une set pour la changer, car sinon tout est publique et c'est pas du tout bon pour le code
tu m'as vraiment aider pour un problème que j'avais liker si il vous a aider aussi,
Bien vu
hey salut !
Bonsoir, et merci pour tes vidéos, j'ai été bloquée à la toute fin de la vidéos avec une erreur d'attribut pour "attack_value" et pourtant j'ai recopier à la lettre prêt chaque ligne de code, serait-ce le logiciel qui est plus moderne,...
Bonjour Graven vos vidéos sont géniales mais j'aimerais avoir le traité de tous vos TP
1:45
2:35
4:40
5:10
6:10
8:40
10:30
12:15
Graven tu explique trop bien tu t'est jamais demander si tu pourrai être prof ?
franchement chapeau !
Hello,
Excellente vidéo merci !
Pourquoi faire une fonction get_pseudo ou get_attack alors qu’on peut faire joueur1.pseudo ou joueur1.attack ? (9:12)
Dans le cadre de cette vidéo je dirais : à rien. D'autant plus qu'il est possible _ensuite_ d'ajouter des get/set via des décorateurs en Python.
Mais de manière générale en programmation il est bon de ne pas utiliser directement les attributs (c'est une « bonne pratique »). Imagines que tu utilises ton objet (et ses attributs) dans plein de code ailleurs. Si jamais ton attribut doit finalement être modifié avant d'être utilisé, tu vas devoir changer tous les endroits où cet attribut est utilisé.
Si je prends l'exemple de « health », imagines que tu décides que la vie de ton personnage est maintenant pondérée par un handicap, en gros « vie = vie * handicap ». Tu vas devoir ajouter cette notion de handicap partout. Alors que si tu utilises une fonction pour y accéder, tu n'as qu'à modifier cette fonction seulement.
L'autre avantage est la protection. Si tu souhaites que seul ton objet actuel puisse _modifier_ ta vie, en mettant par exemple des contraintes. Ça évite que du code ailleurs face un truc idiot qui casserait le fonctionnement interne de ton objet.
Une petite référence pour la route : www.datacamp.com/community/tutorials/property-getters-setters
@@PapaMaker merci à toi de il y a 2 ans j’étais bloqué dessus depuis une heure je remercie aussi le mec qui a poser la question
Par contre je capte juste pas un truc quand tu dis la protection tu veux dire que dans la classe il faut utiliser get et en dehors self ou l’inverse ou rien à voir ?
@@wara1543 la protection c'est le fait que les autres objets ne puissent pas directement modifier les variables de l'objet courant (tout est relatif, en Python il n'y a pas véritablement d'attribut privé). Donc les autres objets vont utiliser get/set forcément. Après à l'intérieur de ton objet c'est bien aussi d'utiliser get/set le plus possible.
@@PapaMaker merci 🙏
Hello Graven! j'ai fait ton tp et j'ai essayé ensuite de faire attaqué mon player1 mais que faire il ne veut pas pourrais tu m'ai der s'il te plait !!!
T'es incroyable sache le
Voilà mon idée pour le tp :
def set_weapon(self) :
self.weapon = weapon
return self.weapon
def get_attack_value(self) :
return self.attack + self.weapon
Je vais maintenant regarder la correction.
petite erreur :
def get_attack_value(self) ne change pas.
def attack_player(self, target_player) :
target_player.damage(self.attack + self.weapon)
Il ne faut bien sûr pas oublier d'importer le module weapon.
je me demandais suite aux longues heures passées à regarder tes vidéos (^_^) : quelles études à tu fais et quelles études conseillerais tu à quelqu'un voulant faire de l'informatique ? merci, j'hésite actuellement entre prépa + école d'ingé et cursus universitaire. merci bien °_°
Effectivement jme demande pareil
BAC Stmg (option informatique de gestion) et BTS SIO (option developpement logiciel)
@@Gravenilvectuto pourquoi n'vez vous pas fait une école d'ingé ? quelles différences entre les débouchées ? merci bien ^_^
bonjour petit soucis avec la correction du TP. le code de la ligne 28 de la classeplayer(damage += self.weapon.get_damage_amount()) la fonction get_damage_amount( fait parti de la classe weapon) , mais comment elle peut etre appelé au niveau local de la fonction. de plus dans la classe player je ne comprend pas comment tu fais pour fabriquer une arme, j'ai l'impression que c'est une simple variable (dans la fonction set_wapon (self.weapon = weapon)). dans mon esprit je croyais que l'on devait faire appel a la classe weapon pour fabriquer l'arme par defaut
l'arme est passé en parametre ;,)
est ce que je peux visualiser les instructions appartenir a une fonction en python Example range() ou append()
❤ merci champion
Slt Graven! J'ai 1 pti problème avec l'enregistrement des fichiers texte. Je veux écrasé un fichier texte à plusieurs reprise et pouvoir l'enregistrer mais le "write(...)" ne donne pas et la méthode du module "pikcle" (dump) déforme mon fichier au fur et à mesure. Qu'est ce je peut faire pour me débloquer?
En passant, merci pour tes vidéos ça m'a super aidé et ça m'aide toujours d'ailleurs.
HEY BIEN SALUT GRAVEN . J'aimerais que tu m' explique quelque chose, parceque je rencontre une erreur. EN effet lorsque j'ai essayé de repeter ce que tu fait on me fait savoir q'entre les parametres il ne faut mettre d'argument.
player1 = Player("tortue", 20, 4)
player2 = Player("goku", 20, 5)
Hey inoussa, je pense que ton init est mal écrit.. écrit le __init__ au lieu de juste init. Si tu as rien modifié sur l'interface ton "init" devrait être rose et pas jaune ;)
Bonne chance pour la suite.