Les services de jeux Google Play offrent la possibilité d'ajouter des fonctionnalités sociales à vos jeux via les comptes Google+ des utilisateurs. Dans ce didacticiel, nous allons montrer comment vous pouvez ajouter des classements à une application Android, soumettre des scores d'utilisateurs et présenter le classement actuel du classement dans le jeu..
L'utilisation de classements implique de préparer votre IDE, de configurer le classement dans la console développeur de Google Play et d'ajouter des fonctionnalités à votre application..
Si vous avez terminé le didacticiel récent sur l'ajout de réalisations aux applications Android, vous pourrez ignorer certaines des étapes de celle-ci. Le code source ci-joint inclut l'application que nous avons utilisée pour le didacticiel sur les réalisations, avec les fonctionnalités de réalisation et de classement ajoutées..
Pour utiliser les services Google Play, certains utilitaires doivent être installés dans votre environnement de développement. De plus, puisque nous utilisons les services de jeux, nous allons installer le BaseGameUtils bibliothèque, ce qui réduit la quantité de codage nécessaire pour implémenter des fonctionnalités telles que la connexion à Google+.
Pour commencer, créez une nouvelle application ou utilisez une existante. Si vous avez suivi le didacticiel sur les réalisations, vous pouvez utiliser l'application que vous avez créée pour ce didacticiel. Si vous créez votre propre jeu, décidez de ce que vous voulez utiliser les classements et du moment où vous prévoyez de soumettre un score utilisateur. Chaque score du classement sera un nombre. Vous pouvez configurer le classement pour qu'il considère les valeurs numériques les plus faibles ou les plus élevées comme meilleures en termes de position dans le classement, mais cela dépend naturellement de l'objectif de votre jeu..
Le code dans le dossier de téléchargement comprend un jeu simple dans lequel l'utilisateur devine un numéro. Nous utiliserons le nombre de suppositions nécessaires pour obtenir la bonne réponse en tant que score au classement. Dans ce cas, moins de suppositions sont meilleures, ainsi le classement présentera en premier les scores les plus bas. Pour simplifier, nous limiterons le nombre de suppositions qu'un utilisateur peut prendre. Ceci est un exemple trivial pour illustrer le concept et la fonctionnalité du classement. Vos propres jeux impliqueront probablement plus de complexité.
Préparons Eclipse au développement avec Google Play Game Services. Ouvrez le Gestionnaire de SDK Android et faites défiler jusqu'au Extras dossier. Développez le dossier et sélectionnez Services Google Play plus le Google Repository. Installez le Plateforme Google APIs à partir de l’une des versions récentes d’Android si vous souhaitez tester l’émulateur. Installer les packages choisis.
Eclipse devra également faire référence à des ressources supplémentaires dans l’espace de travail. Sur votre ordinateur, accédez à l’emplacement de la Bibliothèque de services Google Play, qui devrait être dans le dossier Android SDK, à extras / google / google_play_services / libproject / google-play-services_lib /. Copiez et collez la bibliothèque quelque part sur votre ordinateur.
Nous avons maintenant besoin d'une référence à cette copie dans Eclipse. Choisir Importer> Android> Importer le code Android existant dans l'espace de travail du Fichier menu. Sélectionnez l'emplacement de la copie que vous avez faite. La bibliothèque importée devrait maintenant apparaître en tant que nouveau projet dans Eclipse. Faites un clic droit dessus et choisissez Propriétés. dans le Android section, choisissez une cible de construction des API Google et cochez la case Est la bibliothèque case à cocher.
Importer le BaseGameUtils la ressource est légèrement différente. La bibliothèque est hébergée sur GitHub. Vous pouvez le trouver dans la section Téléchargements, sous Exemples de jeux. Téléchargez la bibliothèque et enregistrez-la sur votre ordinateur.
Comme vous l'avez fait pour la bibliothèque de services Google Play, choisissez Importer> Android> Importer un code Android existant dans Espace de travail du Fichier menu pour amener la bibliothèque BaseGameUtils dans Eclipse. Cliquez avec le bouton droit de la souris pour accéder aux nouvelles propriétés du projet et assurez-vous que le projet est marqué en tant que bibliothèque en cochant Est la bibliothèque.
Nous pouvons maintenant faire en sorte que l'application fasse référence à ces deux ressources au sein de l'espace de travail. Cliquez avec le bouton droit de la souris sur votre application dans l'explorateur de packages et choisissez Propriétés. Accédez au Android section et sélectionnez Ajouter dans le Bibliothèque section. Choisissez les deux Services Google Play bibliothèque et BaseGameUtils, et les ajouter à votre application.
Avant de pouvoir créer un classement, l'application doit être répertoriée dans la liste Console de développement Google Play. Connectez-vous et cliquez sur le Services de jeux bouton à gauche. Si vous avez déjà fait cela pour votre application dans le didacticiel des réalisations, vous n'avez pas besoin de le refaire. Vous pouvez passer à la section 3 sur la création d'un classement.
Cliquez sur Configurer les services de jeu Google Play.
Cliquez pour ajouter un nouveau jeu, sélectionnez Je n'utilise pas encore d'API Google dans mon jeu., et choisissez un nom et une catégorie pour votre jeu. Cliquez sur Continuerpasser à l'étape suivante.
Ajoutez le titre de votre jeu. Vous pouvez ajouter d'autres détails plus tard.
Lions maintenant l'application afin que nous puissions faire référence à cette liste de la console pour développeur dans l'application elle-même. Clique le Apps liées entrée dans la liste de gauche et choisissez Android.
Entrez les informations de votre application, y compris le nom du package, en vous assurant qu'elles sont identiques à celles que vous utilisez dans votre projet..
Enregistrez et cliquez Autorisez votre application maintenant. Pour le moment, vous pouvez simplement ajouter le nom de l'application, mais vous pouvez entrer plus de détails ultérieurement. Choisir Application installée dans la zone ID client, avec Android en tant que type et entrez le nom de votre paquet. Vous devez maintenant utiliser l'utilitaire keytool pour générer un certificat de signature. Vous pouvez utiliser la commande suivante dans un terminal ou une invite de commande en combinaison avec le certificat de débogage:
keytool -exportcert -alias androiddebugkey -keystore ~ / .android / debug.keystore -list -v
Le terminal ou l'invite de commande écrira l'empreinte digitale du certificat. Copiez ce que vous voyez après SHA1 et collez-le dans la console développeur dans le dossier Signature d'empreinte digitale de certificat zone de texte.
Sélectionner Créer un client et copiez l'ID de l'application, qui est répertorié à côté du nom de l'application dans la console du développeur. Vous allez ajouter l'ID à votre application ainsi que l'ID du classement que nous sommes sur le point de créer..
Toujours dans la console développeur, créons maintenant un nouveau classement. Sélectionnez le Classements section dans votre liste d'applications et cliquez sur Ajouter un classement.
Assurez-vous de bien comprendre le concept des classements sur Android et dans Google Play Game Services en général. Vous pouvez lire un aperçu sur le site Web de Google Play Game Services. Vous pouvez réellement faire beaucoup de choses différentes avec les classements, alors considérez ce que nous faisons dans ce tutoriel comme un point de départ..
Entrez les détails de votre nouveau classement. Pour notre exemple de code, nous utilisons le nom Moins de conjectures et sélectionnez Plus petit est mieux dans le Commande section.
Ajoutez une icône si vous aimez. Si vous ne l'utilisez pas, une image standard sera utilisée. Enregistrez votre nouveau classement et copiez son identifiant.
dans le Essai section pour votre application dans la Console du développeur, vous pouvez ajouter des comptes auxquels l'accès sera accordé pour tester le jeu. Par défaut, l'adresse e-mail de votre compte Google y est répertoriée. Vous devriez donc pouvoir l'utiliser pour tester votre application..
Il est temps de préparer l'application pour l'accès au classement dans Eclipse. Si vous avez terminé le didacticiel sur les réalisations, vous pouvez sauter une partie de cette section. Ajoutons d'abord les identifiants de l'application et du classement. Ouvrir ou créer un res / values / ids.xml fichier de ressources. Utilisez la syntaxe suivante pour entrer les ID que vous avez copiés pour l'application et le nouveau classement lorsque vous les avez créés dans la console du développeur:
1234567890 abcdefg1234567
Enregistrez le fichier et ouvrez le projet Manifeste. Ajouter ce qui suit à l'intérieur du application
élément:
L'application est maintenant configurée pour créer un lien vers les listes que nous avons ajoutées dans la console du développeur..
Lorsque vous utilisez les services Google dans vos applications Android, vos utilisateurs doivent se connecter à leurs comptes Google. Vous pouvez utiliser plusieurs approches pour mettre cela en œuvre, mais nous allons automatiser certaines parties de ce processus en utilisant le BaseGameActivity
classe avec des boutons standard pour la connexion et la déconnexion. De plus, lorsque l'activité commence, l'application tente de connecter immédiatement l'utilisateur à.
Ouvrez le fichier de présentation principal de votre application et ajoutez des boutons pour vous connecter / déconnecter:
Ajouter ces importations à votre principale Activité
classe:
importer com.google.android.gms.games.Games; import com.google.example.games.basegameutils.BaseGameActivity;
Faire le Activité
classe étendre la BaseGameActivity
classe et écoute pour les clics:
Classe publique MainActivity étend BaseGameActivity implémente View.OnClickListener
Préparez-vous à répondre aux clics sur les boutons de connexion onCreate
:
findViewById (R.id.sign_in_button) .setOnClickListener (this); findViewById (R.id.sign_out_button) .setOnClickListener (this);
Ajoutez maintenant les méthodes standard suivantes à un sur clic
méthode dans la classe:
@Override public void onClick (Vue View) if (view.getId () == R.id.sign_in_button) beginUserInitiatedSignIn (); else if (view.getId () == R.id.sign_out_button) signOut (); findViewById (R.id.sign_in_button) .setVisibility (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE);
Les méthodes que nous appelons ici sont fournies par le BaseGameActivity
classe notre Activité
La classe hérite de, nous n’avons donc pas besoin de gérer les détails manuellement. Enfin, nous ajoutons quelques rappels standard:
public void onSignInSucceeded () findViewById (R.id.sign_in_button) .setVisibility (View.GONE); findViewById (R.id.sign_out_button) .setVisibility (View.VISIBLE); @Override public void onSignInFailed () findViewById (R.id.sign_in_button) .setVisibility (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE);
Lorsque nous ferons appel à la fonctionnalité de classement, nous vérifierons d’abord que l’application est connectée à Google Services. Vous pouvez également ajouter du code à ces méthodes pour gérer la connaissance de votre application sur le fait de savoir si Play Services peut être appelé ou non..
Maintenant, nous pouvons laisser l'application utiliser le classement. Le code de l'exemple d'application utilise la disposition suivante. Je n'entrerai pas dans les détails pour expliquer la mise en page car vos propres applications auront une mise en page différente..
Nous ajoutons des boutons pour accéder aux réalisations et aux classements de l'application. Si vous n'avez pas terminé le didacticiel des réalisations, vous pouvez supprimer le bouton des réalisations..
Retour dans votre application Activité
classe, nous allons utiliser ces variables d'instance:
bouton privé, bouton0, bouton1, bouton2, bouton3, bouton4, bouton5, bouton6, bouton7, bouton8, bouton9, boutonAgain; numéro int privé; Random Rand privé; informations TextView privées; private int numGuesses = 0;
Si vous avez terminé le didacticiel sur les réalisations, vous remarquerez peut-être une variable supplémentaire., numGuesses
, pour garder une trace du nombre de suppositions de l'utilisateur à chaque fois qu'il joue au jeu.
Vous aurez besoin du code supplémentaire suivant dans la onCreate
méthode du Activité
classe. Si vous n'utilisez pas le bouton de réalisations, supprimez la ligne qui la référence.
findViewById (R.id.show_achievements) .setOnClickListener (this); findViewById (R.id.show_leaderboard) .setOnClickListener (this); button0 = (Button) findViewById (R.id.btn0); button1 = (Button) findViewById (R.id.btn1); button2 = (Button) findViewById (R.id.btn2); button3 = (Button) findViewById (R.id.btn3); button4 = (Button) findViewById (R.id.btn4); button5 = (Button) findViewById (R.id.btn5); button6 = (Button) findViewById (R.id.btn6); button7 = (Button) findViewById (R.id.btn7); button8 = (Button) findViewById (R.id.btn8); button9 = (Button) findViewById (R.id.btn9); buttonAgain = (Button) findViewById (R.id.btnAgain); info = (TextView) findViewById (R.id.guess_text); rand = new Random (); nombre = rand.nextInt (10);
Nous utilisons également les méthodes suivantes pour désactiver et activer les boutons pendant le jeu:
void privé disableNumbers () button0.setEnabled (false); button0.setTextColor (Color.parseColor ("# ff000033")); button1.setEnabled (false); button1.setTextColor (Color.parseColor ("# ff000033")); button2.setEnabled (false); button2.setTextColor (Color.parseColor ("# ff000033")); button3.setEnabled (false); button3.setTextColor (Color.parseColor ("# ff000033")); button4.setEnabled (false); button4.setTextColor (Color.parseColor ("# ff000033")); button5.setEnabled (false); button5.setTextColor (Color.parseColor ("# ff000033")); button6.setEnabled (false); button6.setTextColor (Color.parseColor ("# ff000033")); button7.setEnabled (false); button7.setTextColor (Color.parseColor ("# ff000033")); button8.setEnabled (false); button8.setTextColor (Color.parseColor ("# ff000033")); button9.setEnabled (false); button9.setTextColor (Color.parseColor ("# ff000033")); buttonAgain.setEnabled (true); buttonAgain.setTextColor (Color.parseColor ("# ff000033")); private void enableNumbers () button0.setEnabled (true); button0.setTextColor (Color.WHITE); button1.setEnabled (true); button1.setTextColor (Color.WHITE); button2.setEnabled (true); button2.setTextColor (Color.WHITE); button3.setEnabled (true); button3.setTextColor (Color.WHITE); button4.setEnabled (true); button4.setTextColor (Color.WHITE); button5.setEnabled (true); button5.setTextColor (Color.WHITE); button6.setEnabled (true); button6.setTextColor (Color.WHITE); button7.setEnabled (true); button7.setTextColor (Color.WHITE); button8.setEnabled (true); button8.setTextColor (Color.WHITE); button9.setEnabled (true); button9.setTextColor (Color.WHITE); buttonAgain.setEnabled (false); buttonAgain.setTextColor (Color.parseColor ("# ffffff00"));
Nous avons également besoin de la méthode suivante, spécifiée par sur clic
attribut pour les boutons numériques dans la mise en page. Le joueur appuie sur l'un d'eux pour deviner:
public void btnPressed (Vue v) int btn = Integer.parseInt (v.getTag (). toString ()); si (btn<0) //again btn numGuesses=0; number=rand.nextInt(10); enableNumbers(); info.setText("Set the number!"); else //number button numGuesses++; if(btn==number) info.setText("Yes! It was "+number); if(getApiClient().isConnected()) Games.Achievements.unlock(getApiClient(), getString(R.string.correct_guess_achievement)); Games.Leaderboards.submitScore(getApiClient(), getString(R.string.number_guesses_leaderboard), numGuesses); disableNumbers(); else if(numGuesses==5) info.setText("No! It was "+number); disableNumbers(); else info.setText("Try again!");
Prenez un moment pour regarder le code. Même si vous avez terminé l'application dans le didacticiel sur les réalisations, la logique a été modifiée en plus du code de classement supplémentaire. Si le joueur tape le Encore bouton, on réinitialise le numGuesses
variable à 0
. Si l'utilisateur appuie sur un bouton numérique, nous incrémentons numGuesses
. Si vous n'utilisez pas de réalisations, vous pouvez supprimer tout code faisant référence à des réalisations..
Nous soumettons le score au classement lorsque l'utilisateur a deviné correctement. L'utilisateur peut faire jusqu'à cinq suppositions.
La ligne clé ici est Soumettre Score
. Nous passons le nombre de suppositions que le joueur a pris pour obtenir le nombre correct. Si le nombre de suppositions est inférieur à une entrée existante pour l'utilisateur dans le classement, leur entrée sera remplacée par cette nouvelle valeur. Notez que nous utilisons la valeur de ressource de chaîne que nous avons définie pour le classement.
Avant de terminer, permettons à l’utilisateur de voir le classement du jeu en appuyant sur le bouton Classement bouton nous avons ajouté. Nous avons utilisé le code suivant dans sur clic
pour les réalisations:
else if (view.getId () == R.id.show_achievements) startActivityForResult (Games.Achievements.getAchievementsIntent (getApiClient ()), 1);
Présenter le classement est similaire:
else if (view.getId () == R.id.show_leaderboard) startActivityForResult (Games.Leaderboards.getLeaderboardIntent (getApiClient (), getString (R.string.number_guesses_leaderboard))), 2);
Cela permettra à l'utilisateur de voir le classement actuel dans le classement. Le paramètre entier est arbitraire.
Lorsque vous exécutez l'application, elle tente de connecter l'utilisateur, de vérifier les autorisations et de confirmer la connexion en cas de succès:
L'utilisateur est libre de choisir de se déconnecter et de se reconnecter quand il le souhaite, mais s'il quitte l'application, il tentera de se reconnecter automatiquement lorsqu'il l'ouvrira à nouveau. Lorsque l'utilisateur devine correctement, son score sera soumis au classement. En appuyant sur Classement Le bouton présentera le classement actuel:
À partir de là, l'utilisateur peut accéder aux fonctionnalités sociales des services Google via son compte Google. Vous pouvez configurer vos applications pour qu'elles utilisent des classements publics et sociaux. Les classements sociaux présentent des listes de personnes dans les cercles d'utilisateurs pouvant être gérées pour le jeu lui-même. Pour un classement public, l'utilisateur doit avoir choisi de partager ses scores publiquement..
Dans ce didacticiel, nous avons implémenté la fonctionnalité de classement de base avec Google Play Game Services. Notez que vous pouvez faire beaucoup plus avec les classements dans vos applications. Par exemple, vous pouvez demander des données de classement pour des échelles de temps particulières telles que quotidienne, hebdomadaire et permanente. Si un classement contient beaucoup de scores, il est possible que votre application ne récupère que les meilleurs scores ou les scores les plus proches du joueur actuel. Essayez d’expérimenter certaines de ces améliorations dans vos propres applications..