Partagez
Aller en bas
avatar
crackerwood
Membre

Nombre de messages : 343
Age : 33
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Blackjack RMVX ACE

le Mar 19 Aoû 2014 - 20:34
(roulement de tambour) Mesdemoiselles, mesdames et messieurs voici en exclusivitée et uniquement pour http://www.rpgmakervx-fr.com/

FAIRE UN BLACKJACK ENTIEREMENT EN EVENEMENT SUR RPG MAKER VX ACE

Bon ok je l'ai déjà fais sur RMXP mais il été tout pourri


1 - Euh... C'est quoi un Blackjack ?

Pour faire simple c'est un jeu ou il faut s'approcher de 21 voir même faire 21 tout rond ou, au mieux, faire mieux que la banque. Si vous voulez en savoir plus allez ici : http://www.guide-blackjack.com/Regles-du-black-jack.html


2 - Ouais c'est cool. Mais tu peux faire toutes les règles ?

Pas tout à fais non. Voici les règles pour ce tutoriel :
Le joueur gagne si :
- Fais un Blackjack lors du tirage des deux premières cartes (10 fois la mise),
- Il a un score supérieur à la banque ET si le score est inferieur à 21 (votre mise de départ),
- Il a un score de 21 ET supérieur à la banque (3 fois la mise de départ).

Le joueur perds si :
- La banque fais un meilleur score que le joueur (votre mise de départ),
- Le joueur dépasse 21 (votre mise de départ),
- Le joueur et la banque sont à égalité (3 fois la mise de départ).

Voilà les règles pour le jeu. Satisfait ? De toute façon vous n'avez pas le choix.


3 - Mais de quoi avons nous besoin ?

- 56 interrupteurs --> un pour lancer l'événement commun "Mises blackjack", un pour "Partie à 50", un pour "Partie à 100", un pour "Partie à 200" et un pour chaque carte,
- 9 variables --> une pour stocker les points cachées de la banque, une pour afficher les points visibles de la banque, une pour afficher les points du joueur, deux qui serviront à déterminer les cartes aléatoires du tirages, deux autres qui stokerons le premier choix de la banque, une pour connaitre l'argent possédé et une dernière qui servira de pseudo IA pour la banque
- maitriser les interrupteurs, variables, boucles, étiquettes, afficher/déplacer les images,
- du temps,
- et surtout de la patience.


4 - J'ai tout ça. On y va ?

Avant de commencer je tiens à préciser qu'à l'heure actuelle il y a 10756 membres donc 10756 personnes qui ont la possibilitée de lire ce tutoriel. Je me demande combien vous tenir jusqu'au bout.
Les événements du blackjack sont relativement long et donc je ne vais pas tous les détailler à 100%. En effet, vous verrez que, souvent, les mêmes conditions reviennent.
Je détaillerais donc un morceau de code et les passages particuliers également.
A titre d'information l'événement du balckjack pour chaque mises fais (d'après excel) 7904 lignes.
Ce tutoriel concerne surtout les personnes ayant une certaines expérience de RPG Maker et de ses événements.
Ma façon de procéder sera celle-çi : Je note une partie telle quelle apparaît dans l'événement et ensuite je mettrais une partie pour plus de détails. En spoiler je mettrais l'explication. Si c'est en spoiler c'est aussi pour que vous réflechissiez au code avant de le lire. Et pour finir les points de suspensions en plein milieu d'un code signifie qu'il y des choses entres mais que j'estime que ce n'est pas important pour les mettres pour éviter trop de bla bla inutile.
Pour ceux qui sont plus ou moins habitué à lire mes tutoriaux je ferais tout le temps cette méthode. Ce sera un peu ma marque de fabrique.
Voilà pour les grandes lignes. Maintenant commençons réellement.


5 - Enfin !!! Tu nous fais attendre là alors dépêche toi !!!

Calmez vous mes braves gens. Bon, qui dit blackjack dit casino. Qui dit casino dit argent. Et qui dit argent dit croupier. Voici donc une image du premier événement : le groupier.


Allez détaillons ça calmement. Bon ici rien de particulier à part peut-être les étiquettes. Je les détaillerais ici car dans les prochains événements se sera plus compliqué mais je ferais quand même un rappel pour les poissons rouges.

| > Opération : Interrupteur [0001..0056] Désactivé
| > Opération : Variable [0001..0008] = 0
| > Message : 'People4', 5, Normal, Haut
| > Message : Bonjour. Que veux tu faire ?
| > Étiquette : choix
| > Afficher Choix : Jouer, Règles, Voir mon argent, Ne pas jouer
| > Si [Jouer] - Faire
| >| > Ton de l'écran : (R:-255,V:-255,B:-255,G:0), 30 Frames, Attendre
| >| > Transparence du héros : Transparent
| >| > Téléporter l'équipe : [003:Ecran titre], (X:001, Y:012)
| >| > Opération : Interrupteur [0001:Mises blackjack] Activé
| >| > Ton de l'écran : (R:0,V:0,B:0,G:0), 30 Frames, Attendre
| >| > Étiquette : regle
| >| > Si [Comment on joue ?] - Faire
...
| >| >| > Aller à l'Étiquette : regle

| > Opération : Interrupteur [0001..0056] Désactivé
| > Opération : Variable [0001..0008] = 0
Spoiler:
Pour éviter les bugs on désactive tout les interrupteurs et les variables sont réinitialisées à zéro

| > Message : 'People4', 5, Normal, Haut
| > Message : Bonjour. Que veux tu faire ?
Spoiler:
Je pense que je ne rien à expliquer dans cette partie.

| > Étiquette : choix
| > Afficher Choix : Jouer, Règles, Voir mon argent, Ne pas jouer
| > Si [Jouer] - Faire
| >| > Ton de l'écran : (R:-255,V:-255,B:-255,G:0), 30 Frames, Attendre
| >| > Transparence du héros : Transparent
| >| > Téléporter l'équipe : [003:Ecran titre], (X:001, Y:012)
| >| > Opération : Interrupteur [0001:Mises blackjack] Activé
| >| > Ton de l'écran : (R:0,V:0,B:0,G:0), 30 Frames, Attendre
| >| > Étiquette : regle
| >| > Si [Comment on joue ?] - Faire
...
| >| >| > Aller à l'Étiquette : regle
...
| >| > Si [J'ai compris !] - Faire
| >| >| > Aller à l'Étiquette : choix
Spoiler:
J'ai mis une étiquette içi. Celle çi permettra de revenir à ce niveau de l'événement quand je ferais appel à elle. Par exemple si je lis les règles je vois que j'ai plusieurs choix. A la fin d'un choix plutôt que de tout recommencer je fais appel à une étiquette pour revenir à ce niveau. Si je clique sur j'ai compris dans mes choix je fais appel à l'étiquette "choix". Ce qui permet de revenir au choix de jouer ou faire autre chose.
Si je décide de jouer je mets l'écran en noir par une modification de ton ce qui évite de voir le héros devenir transparent pour revenir opaque pendant la transition puis revenir transparent.
Je le met justement en transparent juste après car on ne le vois plus.
Je me téléporte sur la table de blackjack.
J'active mon interrupteur "Mises blackjack" pour lancer le choix de mise en événement commun automatique (voir image suivante pour vous situer).
Je remet l'écran normal.

Après cette événement vous vous trouvez sur la table de Blackjack. Table qui ressemble à ceci :


D'ailleurs maintenant que le joueur est sur la table de Blackjack, il va falloir qu'il fasse un choix sur la mise de départ. Ce que nous allons voir.


6 - Allez je mise pour devenir riche.

Voici l'image de l'événement en complet :


| > Afficher une image : 1, '0000-Curseur', H.G. (416,52), (100%,100%), 255, Normale
| > Étiquette : 50
| > Boucle
| >| > Attendre : 1 Frames
| >| > Condition : la touche Bas est pressée
| >| >| > Déplacer une image : 1, '', H.G. (416,84), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| > Attendre : 10 Frames
| >| >| > Aller à l'Étiquette : 100
| >| > Fin - Condition

Spoiler:
On affiche une image d'un curseur aux bonnes coordonnées. Ce curseur va nous servir pour le déplacer sur les differentes mises.
La première étiquette "50" veut dire que le curseur est bien sur la mise à 50. Ensuite nous allons attaquer la boucle toujours avec son "attendre 1 frames" dedans (oui je sais RPG Maker mets un "s" pour une seule frame).
Ensuite on gère le déplacement du curseur en fonction de la touche appuyée (bas ou haut). Dans ce cas si on appuie sur la touche bas on déplace l'image du curseur vers le bas.
On en profite pour ajouter un petit son pour faire un peu plus classe.
On attends 10 frames (ça c'est surtout en fonction de vous), ce qui permet de ne pas avoir un curseur qui bouge trop vite et qui pourrez poser quelques bugs.
On va à l'étiquette "100" qui signifie que le curseur est sur le nombre 100.

La partie suivante de l'événement nous dira : si le joueur appuie sur la touche "haut", on déplace le curseur sur la mise à 200. Forcément on va devoir faire la même chose une fois que le curseur sera sur 100 et sur 200.
C'est tout simplement le même code que précédemment mais avec des changements comme les coordonnées d'image et les étiquettes. Voiçi pour vous un autre morceau mais je vous conseille d'essayé de le trouver vous-même avant.
Spoiler:
| >| > Condition : la touche Haut est pressée
| >| >| > Déplacer une image : 1, '', H.G. (416,116), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| > Attendre : 10 Frames
| >| >| > Aller à l'Étiquette : 200
| >| >| >
| >| > Fin - Condition

J'espère que vous avez trouvé. Bon, maintenant voyons une sélection et un abandons. Commencons par une selection :
| >| > Condition : la touche C est pressée
| >| >| > Jouer SE : 'Decision3', Volume : 80, Tempo : 100
| >| >| > Condition : l'argent possédé est de 150 ou plus
| >| >| >| > Attendre : 10 Frames
| >| >| >| > Opération : Interrupteur [0001:Mises blackjack] Désactivé
| >| >| >| > Opération : Interrupteur [0002:Partie à 50] Activé
| >| >| >| > Arrêter les évènements
| >| >| >| >
| >| >| > Sinon
| >| >| >| > Message : 'People4', 5, Normal, Haut
| >| >| >| > Message : Vous n'avez pas assez d'argent !
| >| >| >| > Ton de l'écran : (R:-255,V:-255,B:-255,G:0), 30 Frames, Attendre
| >| >| >| > Effacer Image : 1
| >| >| >| > Transparence du héros : Opaque
| >| >| >| > Téléporter l'équipe : [002:Ecran titre], (X:008, Y:007), le Haut
| >| >| >| > Ton de l'écran : (R:0,V:0,B:0,G:0), 30 Frames, Attendre
| >| >| >| > Opération : Interrupteur [0001:Mises blackjack] Désactivé
| >| >| >| > Arrêter les évènements
| >| >| >| >
| >| >| > Fin - Condition
Spoiler:
Si la touche "c" (espace du clavier) est pressée on valide la mise que se soit 50, 100 ou 200 suivant la boucle dans laquelle on est. Je rappel que c'est ce que fais le morceau de code prédédent.
On joue un petit son pour plus de réalité et on vérifie si l'argent possédé est trois fois supérieur à la mise (comme je les expliquer dans les règles au début du tutoriel).
Si on a la somme je désctive l'interrupteur "mises blackjack" car on a plus besoin de cet événement mais en échange j'active l'interrupteur "partie à 50" si on mise 50 et ainsi de suite.
J'ARRETE LES EVENEMENTS. Si je l'ai mis en majuscule c'est parce que sans cette commande il ne s'arrête pas. N'oubliez pas que nous sommes en automatique et à la différence d'un processus parallèle, le processus automatique bloque le reste du jeu (sauf les parallèles) et que si on ne stoppe pas l'événement le prochain ne tournera pas.
Si on a pas la somme necessaire je fais l'effet inverse de la commande jouer du croupier. Ecran noir, héros opaque, téléportation, effacer les images, interrupteur "mises blackjack" sur OFF, j'arrête les événements et je remet l'écran normal.

Je ne sont pas des codes difficiles vous voyez ? Une programmation en événement n'est que de la logique. Et ça sera la même chose pour 100 et 200. Pensez quand même à changer ce qu'il faut genre pour la mise à 100 :
| >| >| > Condition : l'argent possédé est de 150 ou plus
...
| >| >| >| > Opération : Interrupteur [0003:Partie à 100] Activé
...
avatar
crackerwood
Membre

Nombre de messages : 343
Age : 33
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mar 19 Aoû 2014 - 20:37
7 - Et maintenant que l'on à misé ? On fais quoi ?
Nous allons attaquer la grosse partie de l'événement qui fera en sorte de tirer deux cartes à la banque. Une cachée et une visible par le joueur (même si le programme connait déjà les deux). Après le joueur aura ses deux cartes aussi. Si le joueur à 21 points l'événement vérifiera si la banque à la même chose ou pas et si le joueur n'a pas 21 points une nouvelle fonction permettra de, soit, continuer, soit s'arrêter. Si on continue une tire une nouvelle carte et là le programme vérifie les points pour la vitoire ou la défaite et si on s'arrête on vérifiera quand même les points et fin de la partie.
Voici les images complètes de l'événement en précisant que je suis désolé de la qualité mais elles étaient lourdes alors j'ai du baisser leurs qualités :















8 - Aussi grand !!! On y arrivera jamais !!!! J'abandonne.
Mais non voyons. L'événement est très long c'est vrai mais il est également très répétitif. Faisons les deux première partie de la première carte de la banque plus une au hasard.
La première :

| > Étiquette : carte 1 banque
| > Boucle
| >| > Attendre : 1 Frames
| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| > Opération : Variable [0006:Couleur 1] = (la valeur de la variable [0004:Couleur carte])
| >| > Opération : Variable [0007:Carte 1] = (la valeur de la variable [0005:Quelle carte ?])
| >| > Condition : Variable [0004:Couleur carte] == 1
| >| >| > Condition : Variable [0005:Quelle carte ?] == 1
| >| >| >| > Condition : Interrupteur [0005:As de coeur] == Désactivé
| >| >| >| >| > Afficher une image : 2, '02-Dos de carte', H.G. (-200,32), (100%,100%), 255, Normale
| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| > Afficher une image : 2, '', H.G. (128,32), (100%,100%), 255, Normale, 20 Frames, Attendre
| >| >| >| >| > Opération : Interrupteur [0005:As de coeur] Activé
| >| >| >| >| > Opération : Variable [0008:IA ordinateur] = (valeur aléatoire entre 1 et 100)
| >| >| >| >| > Condition : Variable [0008:IA ordinateur] >= 50
| >| >| >| >| >| > Opération : Variable [0001:Pts caché banque] += 11
| >| >| >| >| >| >
| >| >| >| >| > Sinon
| >| >| >| >| >| > Opération : Variable [0001:Pts caché banque] += 1
| >| >| >| >| >| >
| >| >| >| >| > Fin - Condition
| >| >| >| >| > Aller à l'Étiquette : carte 2 banque
| >| >| >| >| >
| >| >| >| > Sinon
| >| >| >| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| >| >| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| >| >| >| >
| >| >| >| > Fin - Condition

| > Étiquette : carte 1 banque
| > Boucle
| >| > Attendre : 1 Frames
| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| > Opération : Variable [0006:Couleur 1] = (la valeur de la variable [0004:Couleur carte])
| >| > Opération : Variable [0007:Carte 1] = (la valeur de la variable [0005:Quelle carte ?])
| >| > Condition : Variable [0004:Couleur carte] == 1
| >| >| > Condition : Variable [0005:Quelle carte ?] == 1
Spoiler:
Comme chaque carte à sa propre boucle je commence par une étiquette "carte 1 banque" qui correspond à l'affichage de la première carte de la banque. Pour la deuxième se sera "carte 2 banque".
Le attendre "1 frames" habituel.
La cette partie va choisir quelle sera la carte choisie grâce aux variables "couleur carte" et "quelle carte ?". La première qui choisis entre 1 et 4 correspond au coeur, carreau, pique et trèfle. La deuxième, elle, aux différentes carte sachant que 11 c'est la valet, 12 la dame et 13 le roi.
Les deux variables "couleur 1" et "carte 1" stockerons en mémoire la première carte car n'oubliez pas que cette carte reste cachée jusqu'au décompte des points mais elle sera déjà connue du logiciel.

| >| >| >| > Condition : Interrupteur [0005:As de coeur] == Désactivé
| >| >| >| >| > Afficher une image : 2, '02-Dos de carte', H.G. (-200,32), (100%,100%), 255, Normale
| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| > Afficher une image : 2, '', H.G. (128,32), (100%,100%), 255, Normale, 20 Frames, Attendre
| >| >| >| >| > Opération : Interrupteur [0005:As de coeur] Activé
| >| >| >| >| > Opération : Variable [0008:IA ordinateur] = (valeur aléatoire entre 1 et 100)
| >| >| >| >| > Condition : Variable [0008:IA ordinateur] >= 50
| >| >| >| >| >| > Opération : Variable [0001:Pts caché banque] += 11
| >| >| >| >| >| >
| >| >| >| >| > Sinon
| >| >| >| >| >| > Opération : Variable [0001:Pts caché banque] += 1
| >| >| >| >| >| >
| >| >| >| >| > Fin - Condition
| >| >| >| >| > Aller à l'Étiquette : carte 2 banque
| >| >| >| >| >
| >| >| >| > Sinon
| >| >| >| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| >| >| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| >| >| >| >
| >| >| >| > Fin - Condition
Spoiler:
Cette partie à une fonction facultative. En effet, vous n'êtes pas obligé de jouer avec les interrupteurs si vous vous moquez qu'il y est deux cartes identique en jeu. Moi j'ai décidé qu'il n'y aurait qu'une seule carte d'ou la condition si interrupteur "as de coeur" désactivé.
On pense à afficher un dos de carte pour montrer que la banque a sa première carte.
Comme c'est un As on peut choisir sa valeur : soit 1 point, soit 11 points. La banque fais de même mais en aléatoire. J'ai fais quelque chose de simple mais à vous de voir pour changer ça.
Donc la variable "IA ordinateur" aura une valeur et ensuite une condition pour savoir si la banque choisis 1 ou 11 points (tout ça dans le dos du joueur bien sur).
Ensuite on active l'interrupteur "As de coeur".
On pense aussi à stocké la valeur des points dans la variable "points cachés banque".
Si les deux variables qui choissisent la carte avaient déjà sélectionné l'as de coeur (dans le cas de la deuxième carte surtout) le sinon de la condition lui dis de refaire une demande aléatoire.
Quand tout est fais on passe à l'étiquette "carte 2 banque".

| >| > Condition : Variable [0004:Couleur carte] == 1
| >| >| > Condition : Variable [0005:Quelle carte ?] == 2
| >| >| >| > Condition : Interrupteur [0006:Deux de coeur] == Désactivé
| >| >| >| >| > Afficher une image : 2, '02-Dos de carte', H.G. (-200,32), (100%,100%), 255, Normale
| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| > Afficher une image : 2, '', H.G. (128,32), (100%,100%), 255, Normale, 20 Frames, Attendre
| >| >| >| >| > Opération : Interrupteur [0006:Deux de coeur] Activé
| >| >| >| >| > Opération : Variable [0001:Pts caché banque] += 2
| >| >| >| >| > Aller à l'Étiquette : carte 2 banque
| >| >| >| >| >
| >| >| >| > Sinon
| >| >| >| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| >| >| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| >| >| >| >
| >| >| >| > Fin - Condition
Spoiler:
On a ici l'exemple pour le deux de coeur. A vous de voir la différence par rapport à l'as

Une dernier pour vous mais cette fois à vous de chercher. Pour le valet de pique.

Spoiler:
| >| > Condition : Variable [0004:Couleur carte] == 3
| >| >| > Condition : Variable [0005:Quelle carte ?] == 11
| >| >| >| > Condition : Interrupteur [0041:Valet de pique] == Désactivé
| >| >| >| >| > Afficher une image : 2, '02-Dos de carte', H.G. (-200,32), (100%,100%), 255, Normale
| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| > Afficher une image : 2, '', H.G. (128,32), (100%,100%), 255, Normale, 20 Frames, Attendre
| >| >| >| >| > Opération : Interrupteur [0041:Valet de pique] Activé
| >| >| >| >| > Opération : Variable [0001:Pts caché banque] += 10
| >| >| >| >| > Aller à l'Étiquette : carte 2 banque
| >| >| >| >| >
| >| >| >| > Sinon
| >| >| >| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| >| >| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| >| >| >| >
| >| >| >| > Fin - Condition
| >| >| >| >
| >| >| > Fin - Condition

Vous aviez trouvé ? Si oui c'est que je m'explique bien.

Une fois que la première carte est choisis on passe à la deuxième. Celle ci sera vu par le joueur ainsi que les points quelle représente. Voici un exemple :

| >| > Condition : Variable [0004:Couleur carte] == 1
| >| >| > Condition : Variable [0005:Quelle carte ?] == 2
| >| >| >| > Condition : Interrupteur [0006:Deux de coeur] == Désactivé
| >| >| >| >| > Afficher une image : 4, '03-Deux de coeur', H.G. (-200,288), (100%,100%), 255, Normale
| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| > Afficher une image : 4, '', H.G. (92,288), (100%,100%), 255, Normale, 20 Frames, Attendre
| >| >| >| >| > Opération : Interrupteur [0006:Deux de coeur] Activé
| >| >| >| >| > Opération : Variable [0003:Pts joueur] += 2
| >| >| >| >| > Aller à l'Étiquette : carte 2 joueur
| >| >| >| >| >
| >| >| >| > Sinon
| >| >| >| >| > Opération : Variable [0004:Couleur carte] = (valeur aléatoire entre 1 et 4)
| >| >| >| >| > Opération : Variable [0005:Quelle carte ?] = (valeur aléatoire entre 1 et 13)
| >| >| >| >| >
| >| >| >| > Fin - Condition
Spoiler:
La par exemple on a le deux de coeur.
Comme c'est la deuxième carte celle ci sera visible par le joueur. Rien de bien sorcier car c'est le même que les premiers mais avec toujours les mêmes choses qui changent.
On affiche l'image du deux de coeur hors de l'écran puis je la déplace aux bonnes coordonnées avec un petit son.
J'active l'interrupteur qui va bien et j'ajoute les points à la banque.
Comme c'est la dernière carte de la banque je demande d'aller à l'étiquette "carte 1 joueur" pour votre première carte.
Sinon je relance une demande de carte dans le cas ou le deux de coeur aurait déjà été choisis pour la première carte.

Je ne détaillerais pas plus pour la première carte du joueur. D'ailleurs je vais également zapper la deuxième carte du joueur sauf une particularité. Si le joueur tombe sur un as. Voici l'exemple pour l'as de trèfle :
| >| >| > Condition : Variable [0004:Couleur carte] == 4
| >| >| >| > Condition : Variable [0005:Quelle carte ?] == 1
| >| >| >| >| > Condition : Interrupteur [0044:As de trèfle] == Désactivé
| >| >| >| >| >| > Afficher une image : 4, '54-As de trèfle', H.G. (-200,288), (100%,100%), 255, Normale
| >| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| >| > Afficher une image : 4, '', H.G. (92,288), (100%,100%), 255, Normale, 20 Frames, Attendre
| >| >| >| >| >| > Opération : Interrupteur [0044:As de trèfle] Activé
| >| >| >| >| >| > Afficher une image : 10, 'Choix valeur', H.G. (0,0), (100%,100%), 255, Normale
| >| >| >| >| >| > Afficher une image : 11, '0000-Curseur', H.G. (171,211), (100%,100%), 255, Normale
| >| >| >| >| >| > Étiquette : choix carte 1_1
| >| >| >| >| >| > Boucle
| >| >| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| >| >| > Condition : la touche Bas est pressée
| >| >| >| >| >| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| >| >| >| >| >| > Afficher une image : 11, '', H.G. (171,242), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| >| >| >| >| >| > Attendre : 10 Frames
| >| >| >| >| >| >| >| > Aller à l'Étiquette : choix carte 1_2
| >| >| >| >| >| >| >| >
| >| >| >| >| >| >| > Fin - Condition
| >| >| >| >| >| >| > Condition : la touche Haut est pressée
| >| >| >| >| >| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| >| >| >| >| >| > Afficher une image : 11, '', H.G. (171,242), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| >| >| >| >| >| > Attendre : 10 Frames
| >| >| >| >| >| >| >| > Aller à l'Étiquette : choix carte 1_2
| >| >| >| >| >| >| >| >
| >| >| >| >| >| >| > Fin - Condition
| >| >| >| >| >| >| > Condition : la touche C est pressée
| >| >| >| >| >| >| >| > Jouer SE : 'Decision3', Volume : 80, Tempo : 100
| >| >| >| >| >| >| >| > Opération : Variable [0003:Pts joueur] += 1
| >| >| >| >| >| >| >| > Effacer Image : 10
| >| >| >| >| >| >| >| > Effacer Image : 11
| >| >| >| >| >| >| >| > Attendre : 10 Frames
| >| >| >| >| >| >| >| > Aller à l'Étiquette : carte 2 joueur
| >| >| >| >| >| >| >| >
| >| >| >| >| >| >| > Fin - Condition
Spoiler:
Si le joueur tombe sur un as il va lui aussi avoir le choix entre 1 ou 11 points.
On fais ce que l'on doit faire. Ensuite on rajoute une boucle dans la boucle (rien de compliqué ne vous en faites pas).
J'ai mis une étiquette "choix 1_1" (pour la deuxième carte se serait "choix 2_2").
Ensuite comme tout événement de curseur se trouve dans la boucle si on appuie sur haut ou bas on déplace le curseur.
Quand on selectionne cela donne soit 1 point, soit 11 points.

On fera la même chose pour toutes les possibilitées de la deuxième carte. Quand la deuxième carte du joueur aura été tirée, la partie se finira si il a 21 points ou continuera. Dans le cas ou il a ses 21 points on vérifiera combien à la banque.
| > Étiquette : blackjack ?
| > Boucle
| >| > Attendre : 1 Frames
| >| > Condition : Variable [0003:Pts joueur] == 21
| >| >| > Condition : Variable [0006:Couleur 1] == 1
| >| >| >| > Condition : Variable [0007:Carte 1] == 1
| >| >| >| >| > Afficher une image : 2, '15-As de coeur', H.G. (128,32), (100%,100%), 255, Normale
| >| >| >| >| > Attendre : 1 Frames
| >| >| >| >| > Jouer SE : 'Carte', Volume : 80, Tempo : 100
| >| >| >| >| > Opération : Variable [0002:Pts total banque] += (la valeur de la variable [0001:Pts caché banque])
| >| >| >| >| > Aller à l'Étiquette : vérif point blackjack
| >| >| >| >| >
| >| >| >| > Fin - Condition
Spoiler:
Dans le cas ou le joueur a eu ses 21 points, on va vérifier quelle été la carte stockée dans les deux variables de la première carte de la banque.
Je pense que vous comprenez parfaitement l'événement donc je ne vais pas m'attarder dessus. On fera pour chaque possibilitée de carte dans oblier d'ajouter les points cachés de la banque aux points visibles.

Sachez que l'on a fais la plus grosse partie. En effet maintenant soit le joueur a eu ses 21 points et l'événement est fini après vérification des points ou alors le joueur n'a pas au ses 21 points et on lui laisse le choix de piocher une nouvelle ou d'arrêter si il estime qu'il a assez de points. Nous allons voir la vérification des points. Et pour finir nous verrons la boucle pour la troisième carte du joueur. Bien sur le programme, lui, vérifie également les points après la dernière carte mais se sera la même chose que maintenant.
Je ne vais pas tout montrer des événements mais uniquement chaque conditions de victoire ou de perte.

| >| > Condition : Variable [0003:Pts joueur] == 21
| >| >| > Condition : Variable [0002:Pts total banque] < 21
...
| >| >| >| > Modifier Argent : + 500
Spoiler:
Si le joueur a 21 et la banque moins, le joueur gagne 100 fois la mise de départ.

| >| > Condition : Variable [0003:Pts joueur] == 21
| >| >| > Condition : Variable [0002:Pts total banque] == 21
...
| >| >| >| > Modifier Argent : - 150
Spoiler:
Si le joueur et la banque ont 21 points il y a égalité. Le joueur perds donc trois fois sa mise.

Il ne reste plus qu'une seule grosse boucle pour la troisième carte si le joueur veut continuer. Nous allons voir la boucle qui permet de choisir entre continuer ou s'arrêter. Pour faire apparaître la carte je pense que vous en êtes maintenant capable car on ne vois quasiment que ça depuis le début.

| > Étiquette : carte
| > Boucle
| >| > Attendre : 1 Frames
| >| > Condition : la touche Bas est pressée
| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| > Déplacer une image : 9, '', H.G. (416,372), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| > Attendre : 10 Frames
| >| >| > Aller à l'Étiquette : stop
| >| >| >
| >| > Fin - Condition
| >| > Condition : la touche Haut est pressée
| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| > Déplacer une image : 9, '', H.G. (416,372), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| > Attendre : 10 Frames
| >| >| > Aller à l'Étiquette : stop
| >| >| >
| >| > Fin - Condition
| >| > Condition : la touche C est pressée
| >| >| > Jouer SE : 'Decision3', Volume : 80, Tempo : 100
| >| >| > Aller à l'Étiquette : carte 3 joueur
| >| >| >
| >| > Fin - Condition
| >| >
| > Fin - Boucle
| > Étiquette : stop
| > Boucle
| >| > Attendre : 1 Frames
| >| > Condition : la touche Bas est pressée
| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| > Déplacer une image : 9, '', H.G. (416,340), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| > Attendre : 10 Frames
| >| >| > Aller à l'Étiquette : carte
| >| >| >
| >| > Fin - Condition
| >| > Condition : la touche Haut est pressée
| >| >| > Jouer SE : 'Cursor2', Volume : 80, Tempo : 100
| >| >| > Déplacer une image : 9, '', H.G. (416,340), (100%,100%), 255, Normale, 5 Frames, Attendre
| >| >| > Attendre : 10 Frames
| >| >| > Aller à l'Étiquette : carte
| >| >| >
| >| > Fin - Condition
| >| > Condition : la touche C est pressée
| >| >| > Jouer SE : 'Decision3', Volume : 80, Tempo : 100
| >| >| > Aller à l'Étiquette : vérif final
| >| >| >
| >| > Fin - Condition
| >| >
| > Fin - Boucle
Spoiler:
On mets notre étiquette "carte".
Toujours notre boucle avec son attendre dedans.
On affiche encore un curseur et on déplace notre image en fonction des appuies touche haut ou bas.
Quand on valide le choix de continuer on va à l'étiquette "carte 3 joueur" ou sinon on va à "vérif final" pour savoir qui gagne.

Pour afficher la troisième carte du joueur on va encore faire une boucle avec les deux variables qui choisiront la carte. On l'affichera sur ses bonnes coordonnées et on ajoutera les points gagnés au joueur. Après ça c'est (enfin) la dernière partie de la programmation.
avatar
crackerwood
Membre

Nombre de messages : 343
Age : 33
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mar 19 Aoû 2014 - 20:37
9 - La fin. Enfin !!!

Eh oui. On touche à la fin de deux jours d'écriture de tutoriel. Comme le calcul blackjack je ne vais vous montrer que les conditions. Bien sur on aura affiché la deuxième carte de la banque de la même manière qu'avant car comme le joueur n'a pas eu ses 21 points et qu'il a décidé de continuer la carte cachée de la banque est restée cachée.

| >| > Condition : Variable [0003:Pts joueur] <= 21
| >| >| > Condition : Variable [0002:Pts total banque] > Variable [0002:Pts total banque]
...
| >| >| >| > Modifier Argent : - 50
Spoiler:
Si le joueur à moins de 21 points et si il a moins de point que la banque il perds sa mise (50, 100 ou 200).

| >| > Condition : Variable [0003:Pts joueur] <= 21
| >| >| > Condition : Variable [0002:Pts total banque] < Variable [0002:Pts total banque]
...
| >| >| >| > Modifier Argent : + 50
Spoiler:
Si le joueur a moins de 21 points et que la banque a moins que le joueur, il gagne sa mise de départ (50, 100 ou 200).

| >| >| > Condition : Variable [0002:Pts total banque] != 21
| >| >| >| > Condition : Variable [0003:Pts joueur] == 21
...
| >| >| >| >| > Modifier Argent : + 150
Spoiler:
Si la banque a un total différent de 21 et que le joueur a 21, il gagne trois fois sa mise (150, 300 ou 600).

| >| > Condition : Variable [0003:Pts joueur] == Variable [0002:Pts total banque]
| >| >| > Condition : Variable [0002:Pts total banque] <= 21
| >| >| >| > Condition : Variable [0003:Pts joueur] <= 21
Spoiler:
Si le joueur a égalité avec la banque et qu'il ont moins de 21 (à cause de la condition précédente) personne ne gagne.

Voilà pour l'événement commun "mise à 50". Pour le 100 et le 200 c'est EXACTEMENT le même. Penser juste à modifier les gains gagnés ou perdus. Le reste est identique.
Il nous reste donc qu'à faire en sorte que le joueur voit ses points et ceux de la banque. Trois images suffiront sans explications à mon avis.

Pour zéro point.


Pour un point.


Pour 21 points.

Je suis monté jusqu'à trente mais je ne pense pas que plus soit necessaire. Imaginons que les deux premières cartes sont valet de coeur et dame de trèfle, le joueur a 20 points.
Si il décide de continuer (ce qui serait stupide) et tombe imaginons sur un roi de carreau. Le joueur à donc 30 points mais de toute façon il a perdu.


10 - C'est fini.

Voilà ce tutoriel est terminé. Je sais qu'il est très long et c'est justement pour ça que j'ai coupé certaines explications. Surtout que l'on voit souvent les mêmes. J'espère qu'il vous a plu et qu'il vous servira et/ou que vous vous amuserez bien avec.
Il ne me reste qu'à vous donner le lien pour la démo ainsi que ma première version sur XP pour celles ou ceux qui veulent tester et voir la différence et les améliorations. Je vous mets quand même en garde que la version XP est buggé et que vous pouvez gagner si vous avez par exemple 25 points et la banque 18 alors que normalement si le joueur à plus de 21 il perds.

Version VX Ace : https://mega.nz/#F!2AIgnaoI!eHzpHK2-JkCulHIIGKxSoQ


11 - Petites informations

Je profite de ce tutoriel (et pour éviter d'ouvrir un autre sujet inutile) pour vous tenir au courant des prochaines prévisions.

Pour commencer, comme vous pouvez le voir sur ma signature, je compte refaire le tutoriel sur le CMS. Pour ceux qui avaient déjà vu la première partie savent de quoi je parle. Si j'ai décidé de le refaire c'est que de Septembre à Janvier j'aurais beaucoup plus de temps pour faire ça mais je n'aurais pas internet. Donc les tutoriaux en ligne n'apparaîtrons pas avant Février si tout se passe bien.

J'en profite aussi pour vous signaler que j'avais eu l'idée de reprendre tout mes tutoriaux personnelles et de me faire un site ou blog pour les remettres. Disons que pour ce genre de chose je ne pense pas coder quelque chose de A à Z mais de me servir soit d'un logiciel de création de site ou directement en ligne. Un truc de base quoi !

Enfin voilà quelques projets mais ma priorité est le CMS qui m'a été demandé plusieurs fois.

Sinon bonne soirée à toutes et à tous.


Dernière édition par crackerwood le Sam 2 Juin 2018 - 10:33, édité 1 fois (Raison : Mise à jour lien)
avatar
Heaven
Staffeux retraité

Nombre de messages : 2451
Age : 17
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 9:20
Waouh, merci pour ce tutoriel hyper-complet. Je compte pas faire un système de blackjack dans mon projet mais c'est bon à savoir.

Je t'ajoute des points et merci encore =)


Heav'n
avatar
Ayfoth
Membre

Nombre de messages : 49
Distinction : aucune
Date d'inscription : 11/04/2010

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 9:22
Joli tutoriel, cependant voici une petite amélioration, pour les cartes tu pouvais utiliser aussi une variable par tirage ^^
avatar
crackerwood
Membre

Nombre de messages : 343
Age : 33
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 11:22
Dark Raviel a écrit:Joli tutoriel, cependant voici une petite amélioration, pour les cartes tu pouvais utiliser aussi une variable par tirage ^^
C'est vrai mais j'ai voulu économiser des variables. Après c'est vrai qu'avec 999 variables il y a de quoi faire.
avatar
Ayfoth
Membre

Nombre de messages : 49
Distinction : aucune
Date d'inscription : 11/04/2010

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 13:05
Ben surtout que tu utilise un interrupteur par carte donc plus de 40 scwitch alors que 6 variables suffisent pour les cartes ^^
avatar
crackerwood
Membre

Nombre de messages : 343
Age : 33
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 13:09
Les interrupteurs sont facultatif c'est juste pour éviter d'avoir les mêmes cartes
avatar
Alex RoiEsper
Membre

Nombre de messages : 18
Age : 31
Distinction : aucune
Date d'inscription : 23/04/2010
http://www.guelnika.net

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 20:45
Impressionnant !

J'ai l'impression qu'il y a beaucoup de redite dans ton code, qui serait bien facilité en utilisant un langage de programmation (Ruby ?) ; mais comme tu dis c'est en event.
avatar
crackerwood
Membre

Nombre de messages : 343
Age : 33
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Re: Blackjack RMVX ACE

le Mer 20 Aoû 2014 - 20:48
Merci. C'est vrai qu'en ruby ça devrait aller plus vite et je pense même qu'en événement il a moyen d'améliorer le code.
Contenu sponsorisé

RPG Maker VX Ace Re: Blackjack RMVX ACE

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum