Apprendre à faire un jeu simple avec Python!
Ceci est un article publié par Julian Meyer, un développeur python âgé de 13 ans. Vous pouvez le trouver sur Google + et Twitter.
Vous êtes-vous déjà demandé comment les jeux vidéo sont créés? Ce n’est pas aussi compliqué que vous pourriez le penser!
dans ce tutoriel, vous allez créer un jeu simple appelé lapins et blaireaux, où le héros, le lapin, doit défendre un château contre une horde attaquante de blaireaux., :O
Pour écrire ce jeu, vous allez utiliser Python. Non, je ne parle pas d’un gros serpent! :]
Python est un langage de programmation informatique. Nous avons choisi Python pour ce tutoriel parce que c’est un langage simple pour commencer, amusant et facile à apprendre.
Si vous êtes nouveau sur Python, avant de commencer, consultez ce livre: Think Python: How To Think Like a Computer Scientist. Qui devrait vous obtenir jusqu’à la vitesse.
alors replongez ici et préparez – vous-il y a une guerre à venir entre les lapins et les blaireaux. Continuez à lire pour sauter dans la mêlée!,
mise en route: l’Installation de Python
Si vous voulez essayer ce tutoriel sur un PC Windows, vous devez installer Python. Assurez-vous de saisir la version 2.7.3 et non la version 3.3.0! Après avoir exécuté le programme d’installation, vous devriez avoir inactif dans votre dossier Tous les programmes dans votre menu Démarrer. Lancez IDLE pour commencer.
Si vous êtes sur Mac, vous avez déjà installé Python! Ouvrez simplement Terminal (/Applications/Utilitaires / Terminal.app), tapez python et appuyez sur Entrée.
Remarque: Si vous installez Python à partir de python.,org (et pourrait devoir si vous voulez faire fonctionner PyGame), alors vous aurez également accès à IDLE sur le Mac. Il devrait être dans le dossier” /Applications/Python 2.7″.
Si vous avez fait correctement, vous devriez voir quelque chose comme ceci:
Note: Si vous souhaitez quitter l’invite Python (le triple angle crochets, >>>), vous pouvez soit taper exit() à l’invite Python et appuyez sur la touche Retour ou vous pouvez appuyer sur ctrl+D.,
Une fois que vous êtes à L’invite Python, pour tester si Python fonctionne correctement, tapez print 1+1 et appuyez sur Entrée / Retour. Il devrait imprimer 2. Vous venez d’écrire votre premier programme Python!
Maintenant que vous connaissez Python fonctionne correctement, vous devez installer PyGame pour écrire un jeu à l’aide de Python.
PyGame est une bibliothèque Python qui rend l’écriture de jeux beaucoup plus facile! Il fournit des fonctionnalités telles que la gestion des images et la lecture du son que vous pouvez facilement intégrer dans votre jeu.,
allez ici et téléchargez le programme d’installation pygame adapté à votre système. Assurez-vous de télécharger une version Python 2.7.
Remarque: Le programme d’installation de PyGame à partir du lien ci-dessus ne fonctionnera pas avec le Python par défaut D’Apple installé sur un Mac. Vous devrez télécharger Python à partir de python.org et installez-le afin d’utiliser PyGame. Ou, vous pouvez installer Python et PyGame via MacPorts.
pour vérifier que PyGame est correctement installé, ouvrez IDLE ou exécutez Python via le Terminal et tapez import pygame à L’invite Python., Si cela n’entraîne aucune sortie, alors vous êtes bon.
Si, en revanche, il génère une erreur comme ce qui est montré ci-dessous, alors PyGame n’est pas installé.
Si vous obtenez une erreur comme celle-ci, postez sur les forums et je vous aiderai à la faire fonctionner.
exécution du Code Python à partir du fichier
bien que vous puissiez exécuter de courts bits de code Python à l’invite Python, Si vous voulez travailler sur un programme plus gros (comme un jeu), vous voulez probablement enregistrer votre code dans un fichier afin de ne pas avoir à le taper encore et encore.
Il existe plusieurs façons d’exécuter un programme Python en tant que Fichier., Une façon est d’utiliser un éditeur de texte brut comme Notepad (Windows), ou TextEdit (Mac). Ouvrez un nouveau fichier texte, tapez votre code Python (comme l’impression 1+1). Ensuite, enregistrez-le sous XXX.py (le XXX peut être n’importe quel nom de fichier descriptif).
Ensuite, sur Windows, double-cliquez sur ce fichier pour l’exécuter. Sur Mac, ouvrez Terminal et tapez python, puis faites glisser le fichier que vous avez enregistré dans la fenêtre Terminal et appuyez sur Entrée.
l’autre façon est de taper votre code en utilisant L’éditeur inactif, ce que vous allez faire dans ce tutoriel. Pour exécuter idle, tapez simplement idle à partir du Terminal., Ensuite, choisissez Fichier \ nouvelle fenêtre dans le menu inactif et vous devriez avoir une fenêtre d’éditeur de texte où vous pouvez taper du code Python. Vous pouvez enregistrer vos modifications de code via File \ Save et même exécuter le code via Run\Run Module (F5).
notez que le menu Exécuter n’est disponible que si vous avez un fichier ouvert dans une fenêtre de l’éditeur.
ajout des ressources du jeu
Vous êtes presque prêt à créer votre jeu. Mais qu’est-ce qu’un jeu sans de superbes graphismes et effets sonores? J’ai rassemblé tous les graphismes et les effets sonores dont vous aurez besoin pour votre jeu dans une archive ZIP. Vous pouvez le télécharger ici.,
Une fois que vous avez téléchargé le fichier, créez un dossier pour votre jeu sur votre disque dur et extrayez le dossier resources dans ce dossier afin que votre dossier de jeu ait un sous-dossier nommé resources, avec les différentes ressources regroupées dans des dossiers supplémentaires, comme ceci:
Vous êtes maintenant prêt à commencer à créer des lapins et des blaireaux. :]
Étape 1: Hello Bunny
exécutez IDLE et ouvrez une nouvelle fenêtre d’éditeur de texte, comme mentionné dans la section précédente., Tapez le code suivant dans la fenêtre de l’éditeur:
Enregistrez le fichier dans votre dossier de jeu (celui où se trouve le sous-dossier resources) et nommez-le game.py.
parcourons le code section par section:
- importez la bibliothèque PyGame. Cela vous permet d’utiliser les fonctions de la bibliothèque dans votre programme.
- initialisez PyGame et configurez la fenêtre d’affichage.
- chargez l’image que vous utiliserez pour le lapin.
- continuez à faire une boucle sur le code en retrait suivant.,
Remarque: Lorsque d’autres langages comme Objective-C, Java ou PHP utilisent des accolades pour afficher un bloc de code à exécuter dans une boucle while ou une instruction if, Python utilise l’indentation pour identifier les blocs de code. Une indentation correcte est donc très importante en Python-gardez cela à l’esprit. :]
- remplissez l’écran de noir avant de dessiner quoi que ce soit.
- ajoutez l’image de lapin que vous avez chargée à l’écran à x=100 et y=100.
- mise à Jour de l’écran.
- vérifiez les nouveaux événements et s’il y en a un, et qu’il s’agit d’une commande quit, quittez le programme.,
Remarque: Selon la documentation de PyGame, vous ne devriez pas avoir besoin d’appeler pygame.quit() puisque l’interpréteur l’appellera automatiquement lorsque l’interpréteur s’arrêtera. Cependant, au moins sur Mac OS, le jeu serait suspendu à la sortie à moins que pygame.quit() a été appelé.
Si vous exécutez le code maintenant (via Exécuter\Module d’Exécution dans le vide menu), vous devriez voir un écran similaire à celui ci-dessous:
w00t le lapin est dans la scène, et prêt pour l’action!
Mais le jeu semble effrayant et solitaire avec le lapin juste debout là sur un fond noir., Il est temps de embellir un peu les choses. :]
Étape 2: Ajouter un décor
commençons par ajouter un arrière-plan à la scène du jeu. Cela peut être fait avec un couple plus d’écran.blit() appelle.
à la fin de la section #3, Après avoir chargé l’image du lecteur, ajoutez le code suivant:
grass = pygame.image.load("resources/images/grass.png")castle = pygame.image.load("resources/images/castle.png")
cela charge les images et les place dans des variables spécifiques. Maintenant, ils doivent être dessinés à l’écran. Mais si vous vérifiez l’image grass, vous remarquerez qu’elle ne couvrira pas toute la zone de l’écran, qui est de 640 x 480., Cela signifie que vous devez carreler l’herbe sur la zone de l’écran pour la couvrir complètement.
ajoutez le code suivant à game.py au début de la section # 6 (avant que le joueur ne soit dessiné à l’écran):
comme vous pouvez le voir, l’instruction for passe d’abord par X. Ensuite, dans cette boucle for, il boucle à travers y et dessine l’herbe aux valeurs x et y générées par les boucles for. Les deux lignes suivantes dessinent simplement les Châteaux à l’écran.
Si vous exécutez le programme maintenant, vous devriez obtenir quelque chose comme ceci:
Beaucoup mieux c’est de commencer à l’air bien!, :]
Étape 3: Faire bouger le lapin
ensuite, vous devez ajouter des éléments de gameplay Réels, Comme faire en sorte que le lapin réponde aux pressions sur les touches.
pour ce faire, vous implémenterez d’abord une bonne méthode pour garder une trace des touches pressées à un moment donné. Vous pouvez le faire simplement en créant un tableau d’États clés contenant l’état de chaque clé que vous souhaitez utiliser pour le jeu.
ajoutez le code suivant à game.py à la fin de la section #2 (Après avoir défini la hauteur et la largeur de l’écran):
keys = playerpos=
ce code est assez explicite., Le tableau keys garde une trace des touches pressées dans l’ordre suivant: WASD. Chaque élément du tableau correspond à une clé – la première à l’ouest, la seconde et ainsi de suite.
la variable playerpos est l’endroit où le programme dessine le lecteur. Étant donné que le jeu va déplacer le joueur à différentes positions, il est plus facile d’avoir une variable qui contient la position du joueur, puis simplement dessiner le joueur à cette position.
Vous devez maintenant modifier le code existant pour dessiner le lecteur afin d’utiliser la nouvelle variable playerpos., Changez la ligne suivante dans la section # 6:
screen.blit(player, (100,100))
en:
screen.blit(player, playerpos)
Ensuite, mettez à jour le tableau de clés en fonction des touches pressées. PyGame facilite la détection des pressions sur les touches en ajoutant un événement.les fonctions des touches.
à la fin de la section #8, juste après le bloc vérification de l’événement.type= = pygame.Quittez, mettez ce code (au même niveau d’indentation que le pygame.Si vous ne pouvez pas bloquer):
Wow! Ce sont beaucoup de lignes de code. Si vous le décomposez en Instructions if, ce n’est pas si compliqué.,
Vérifiez D’abord si une touche est enfoncée ou relâchée. Ensuite, vous vérifiez quelle touche est enfoncée ou relâchée, et si la touche enfoncée ou relâchée est l’une des touches que vous utilisez, vous mettez à jour la variable keys en conséquence.
enfin, vous devez mettre à jour la variable playerpos en réponse aux pressions sur les touches. C’est en fait très simple.
Ajoutez le code suivant à la fin du jeu.,py (avec un niveau d’indentation, le mettant au même niveau que la boucle for):
# 9 - Move player if keys: playerpos-=5 elif keys: playerpos+=5 if keys: playerpos-=5 elif keys: playerpos+=5
ce code vérifie simplement laquelle des touches est enfoncée et ajoute ou soustrait de la position x ou y du Joueur (selon la touche enfoncée) pour déplacer le joueur.
lancez le jeu et vous devriez obtenir un joueur comme avant. Essayez D’appuyer sur WASD. Yay!!! Elle fonctionne.,
Étape 4: tourner le lapin
Oui, votre lapin se déplace maintenant lorsque vous appuyez sur les touches, mais ne serait-il pas encore plus cool si vous pouviez utiliser votre souris pour faire pivoter le lapin pour faire face à une direction de votre choix, donc il C’est assez simple à implémenter en utilisant la trigonométrie.,
jetez un oeil à l’illustration suivante:
Dans l’image ci-dessus, si (5,3) est la position du lapin et (2,4) est la position actuelle de la souris, vous pouvez trouver l’angle de rotation (z) par l’application de la atan2 fonction trigonométrique à la différence de distance entre les deux points. Bien sûr, une fois que vous connaissez l’angle de rotation, vous pouvez simplement faire pivoter le lapin en conséquence. :]
Si vous êtes un peu confus au sujet de cette partie, ne vous inquiétez pas – vous pouvez continuer quand même. Mais c’est pourquoi vous devriez faire attention en classe de mathématiques!, :] Vous utiliserez ce genre de choses tout le temps dans la programmation de jeux.
maintenant, vous devez appliquer ce concept à votre jeu. Pour ce faire, vous pouvez utiliser la Surface PyGame.rotation (degrés) Fonction. Incidemment, gardez à l’esprit que la valeur Z est en radians. : Que diriez-vous de laisser le lapin tirer sur les ennemis en utilisant des flèches? Ce n’est pas doux-mannered lapin!
Cette étape est un peu plus compliquée car vous devez garder une trace de toutes les flèches, les mettre à jour, les faire pivoter et les supprimer lorsqu’elles disparaissent de l’écran.,
tout d’abord, ajoutez les variables nécessaires à la fin de la section d’initialisation, section #2:
acc=arrows=
La première variable garde une trace de la précision du lecteur et le second tableau suit toutes les flèches. La variable de précision est essentiellement une liste du nombre de coups de feu tirés et du nombre de blaireaux touchés. Plus tard, nous utiliserons ces informations pour calculer un pourcentage de précision.
Ensuite, chargez l’image de flèche à la fin de l’article #3:
arrow = pygame.image.load("resources/images/bullet.png")
Désormais, lorsqu’un utilisateur clique sur la souris, une flèche besoins de feu., Ajoutez ce qui suit à la fin de la section #8 en tant que nouveau gestionnaire d’événements:
ce code vérifie si la souris a été cliquée et si c’était le cas, il obtient la position de la souris et calcule la rotation de la flèche en fonction de la position du Joueur pivoté et de la position du curseur. Cette valeur de rotation est stockée dans le tableau arrows.
Ensuite, vous devez réellement dessiner les flèches sur l’écran. Ajoutez le code suivant juste après la section # 6.1:
les valeurs vely et velx sont calculées en utilisant la trigonométrie de base. 10 est la vitesse des flèches., L’instruction if vérifie simplement si la balle est hors limites et si c’est le cas, elle supprime la flèche. La seconde pour l’instruction boucle à travers les flèches et les dessine avec la rotation correcte.
Essayez et exécuter le programme. Vous devriez avoir un lapin qui tire des flèches lorsque vous cliquez sur la souris! 😀
Etape 6: Prenez les Armes! Les blaireaux!
OK, vous disposez d’un château, et vous avez un héros qui peut se déplacer et tirer. Donc, ce qu’il manque? Ennemis qui attaquent le château que le héros peut tirer sur!,
dans cette étape, vous allez créer des blaireaux générés aléatoirement qui courent au château. Il y aura de plus en plus de blaireaux que le jeu progresse. Alors, faisons une liste de ce que vous en aurez besoin pour faire.
- Ajouter des méchants à une liste dans un tableau.
- mettez à jour le tableau bad guy chaque image et vérifiez si elles sont hors écran.
- Afficher les méchants.
Facile, droit?, :]
tout d’abord, ajoutez le code suivant à la fin de la section #2:
badtimer=100badtimer1=0badguys=]healthvalue=194
ce qui précède met en place une minuterie (ainsi que quelques autres valeurs) afin que le jeu ajoute un nouveau blaireau après un certain temps. Vous diminuez le badtimer à chaque image jusqu’à ce qu’il soit nul, puis vous engendrez un nouveau blaireau.
ajoutez maintenant ce qui suit à la fin de la section #3:
badguyimg1 = pygame.image.load("resources/images/badguy.png")badguyimg=badguyimg1
la première ligne ci-dessus est similaire à tout le code de chargement d’image précédent. La deuxième ligne met en place une copie de l’image afin que vous puissiez animer le méchant beaucoup plus facilement.,
Ensuite, vous devez mettre à jour et afficher les méchants. Ajoutez ce code juste après la section # 6.2:
beaucoup de code à parcourir. :] La première ligne vérifie si badtimer est nul et si c’est le cas, crée un badger et remet badtimer en place en fonction du nombre de fois que badtimer a fonctionné jusqu’à présent. La première boucle for met à jour la position x du blaireau, vérifie si le blaireau est hors de l’écran et supprime le blaireau s’il est hors écran. La seconde boucle attire tous les blaireaux.
Pour utiliser la fonction aléatoire dans le code ci-dessus, vous devez également importer la bibliothèque aléatoire., Ajoutez donc ce qui suit à la fin de la section #1:
import random
enfin, ajoutez cette ligne juste après l’instruction while (section #4) pour décrémenter la valeur de badtimer pour chaque image:
badtimer-=1
essayez tout ce code en exécutant le jeu. Maintenant, vous devriez commencer à voir un gameplay réel-vous pouvez tirer, déplacer, tourner, et blaireaux essayer de courir à vous.
Mais attendez! Pourquoi les blaireaux ne font pas sauter le château? Nous allons ajouter rapidement que dans…
ajoutez ce code juste avant l’index+=1 sur la première boucle for dans la section #6.,3:
Ce code est assez simple. Si la valeur x du blaireau est inférieure à 64 à droite, supprimez ce méchant et diminuez la valeur de santé du jeu d’une valeur aléatoire comprise entre 5 et 20. (Plus tard, vous afficherez la valeur de santé actuelle à l’écran.)
Si vous construisez et exécutez le programme, vous devriez obtenir un groupe de blaireaux attaquants qui disparaissent quand ils frappent le château. Bien que vous ne puissiez pas le voir, les blaireaux diminuent en fait votre santé.,
Etape 7: Collisions avec des Blaireaux et des Flèches
Les blaireaux sont attaquer votre château, mais vos flèches n’ont aucun effet sur eux! Comment un lapin est censé défendre sa maison?
Il est temps de définir les flèches pour tuer les blaireaux afin que vous puissiez protéger votre château et gagner la partie! Fondamentalement, vous devez parcourir tous les méchants et à l’intérieur de chacune de ces boucles, vous devez parcourir toutes les flèches et vérifier si elles entrent en collision. Si c’est le cas, supprimez le blaireau, supprimez la flèche et ajoutez-en une à votre rapport de précision.
juste après la section #6.3.,1, ajoutez ceci:
Il n’y a qu’une seule chose importante à noter dans ce code. L’instruction if est une fonction pygame intégrée qui vérifie si deux rectangles se croisent. Les deux autres lignes font juste ce que j’ai expliqué ci-dessus.
Si vous exécutez le programme, vous devriez enfin pouvoir tirer et tuer les blaireaux.
Étape 8: Ajouter un HUD avec compteur de santé et horloge
Le jeu progresse plutôt bien. Vous avez vos attaquants, et vous avez votre défenseur. Maintenant, tout ce dont vous avez besoin est un moyen de garder le score et de montrer à quel point le lapin se porte bien.,
la façon la plus simple de le faire est d’ajouter un HUD (Affichage tête haute) qui montre le niveau de santé actuel du château. Vous pouvez également ajouter une horloge pour montrer combien de temps le château a survécu.
tout d’Abord ajouter de l’horloge. Ajoutez le code suivant juste avant le début de la section #7:
le code ci-dessus crée simplement une nouvelle police en utilisant la police PyGame par défaut définie à la taille 24. Alors que la police est utilisée pour rendre le texte de l’heure sur une surface. Après cela, le texte est positionné et dessiné à l’écran.
Ensuite, ajoutez la barre de santé., Mais avant de dessiner la barre de santé, vous devez charger les images de la barre. Ajoutez le code suivant à la fin de la section #3:
healthbar = pygame.image.load("resources/images/healthbar.png")health = pygame.image.load("resources/images/health.png")
La première est l’image rouge utilisé pour la pleine barre de santé. La seconde est l’image verte utilisée pour montrer le niveau de santé actuel.
ajoutez maintenant le code suivant juste après la section #6.4 (que vous venez d’Ajouter) pour dessiner la barre de santé à l’écran:
# 6.5 - Draw health bar screen.blit(healthbar, (5,5)) for health1 in range(healthvalue): screen.blit(health, (health1+8,8))
le code dessine d’abord la barre de santé entièrement rouge. Ensuite, il dessine une certaine quantité de vert sur la barre, en fonction de la durée de vie du château.,
Si vous créez et exécutez le programme, vous devriez avoir une minuterie et d’une barre de santé.
Etape 9: Gagner ou Perdre de l’
Mais qu’est-ce? Si vous jouez assez longtemps, même si votre santé descend à zéro, le jeu continue! Non seulement cela, vous pouvez continuer à tirer sur les blaireaux, aussi. Ça ne va pas marcher, maintenant n’est-ce pas? Vous avez besoin d’une sorte de scénario gagnant/perdant pour que le jeu en vaille la peine.
ajoutons donc la condition win et lose ainsi que l’écran win ou lose. :] Vous le faites en sortant de la boucle principale et en entrant dans une boucle win/lose., Dans la boucle win / lose, vous devez déterminer si l’Utilisateur a gagné ou perdu et afficher l’écran en conséquence.
Voici un schéma de base de la gagner/perdre des scénarios:
Si le temps est (90000 ms ou 90 secondes), puis:
- Arrêter l’exécution du jeu
- Définir le résultat du jeu à 1 ou gagner
Si le château est détruit alors:
- Arrêter l’exécution de jeu
- Définir le résultat du jeu à 1 ou gagner
Calculer l’exactitude de toute façon.
Remarque: l’acc * 1.0 convertit simplement acc en float., Si vous ne le faites pas, l’opérande de division retournera un entier comme 1 ou 2 au lieu d’un flottant comme 1.5
ajoutez ces lignes à la fin de game.py:
c’est le bit de code le plus long à ce jour! Mais ce n’est pas compliqué.
La première instruction if vérifie si le temps est écoulé. Le second vérifie si le château est détruit. Le troisième calcule votre taux de précision. Après cela, une instruction rapide if vérifie si vous avez gagné ou perdu et affiche l’image correcte.
bien sûr, si vous voulez afficher des images pour les écrans win et lose, alors ces images doivent être chargées en premier., Ajoutez le code suivant à la fin de la section #3:
gameover = pygame.image.load("resources/images/gameover.png")youwin = pygame.image.load("resources/images/youwin.png")
encore Une petite chose. Changer la section # 4 de:
# 4 - keep looping throughwhile 1: badtimer-=1
à:
# 4 - keep looping throughrunning = 1exitcode = 0while running: badtimer-=1
la variable en cours d’exécution garde une trace de si le jeu est terminé et la variable de code de sortie garde une trace de si le joueur a gagné ou perdu.
lancer le jeu à nouveau, et maintenant vous pouvez triompher ou mourir en essayant! Cool. :]
Étape 10: Musique gratuite et effets sonores!
Le jeu a l’air plutôt bien mais comment ça sonne? C’est un peu calme, n’est-ce pas?, L’ajout d’effets sonores peut changer la sensation d’un jeu.
PyGame rend le chargement et la lecture des sons super simples. Tout d’abord, vous devez initialiser le mélangeur en ajoutant ceci à la fin de la section #2:
pygame.mixer.init()
puis chargez les sons et définissez le niveau de volume à la fin de la section #3:
La plupart du code ci-dessus charge simplement les fichiers audio et configure les niveaux de volume audio. Mais faites attention au pygame.mélangeur.musical.load line-cette ligne charge la musique de fond pour le jeu et la ligne suivante définit la musique de fond à répéter pour toujours.,
qui s’occupe de la configuration audio. :] Maintenant, tout ce que vous devez faire est de jouer les différents effets sonores au besoin. Faites cela selon les instructions dans les commentaires pour le code ci-dessous:
exécutez le jeu une fois de plus et vous remarquerez que vous avez maintenant de la musique de fond et des effets sonores pour les collisions et les prises de vue. Le jeu se sent que beaucoup plus vivant! :]
Où Aller À Partir d’Ici?
Vous devriez être fier de vous: vous venez de terminer la création d’un jeu amusant rempli de musique, d’effets sonores, d’un lapin tueur, de blaireaux kamikazes et plus encore. Je vous ai dit que vous pouviez le faire!, :]
Vous pouvez télécharger le code source final du jeu ici.
à ce stade, n’hésitez pas à étendre ce jeu dans votre propre création! Peut-être essayer de remplacer l’art avec vos propres dessins, ou en ajoutant différentes armes ou types de monstres dans le jeu!
avez-vous des questions ou des commentaires sur ce que vous avez fait dans ce tutoriel? Si oui, rejoignez la discussion dans les forums! J’aimerais vous entendre.
Ceci est un article de Julian Meyer, un développeur python âgé de 13 ans.
raywenderlich.,com hebdomadaire
Le raywenderlich.com newsletter est le moyen le plus simple de rester à jour sur tout ce que vous devez savoir en tant que développeur mobile.
obtenez un résumé hebdomadaire de nos tutoriels et cours, et recevez un cours par e-mail approfondi gratuit en prime!
note Moyenne
4.1/5
Ajouter une note pour ce contenu
connecter pour ajouter une note