Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: "Dread Mac Farlane", (...) / Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

610 connectés actuellement

29435021 visiteurs
depuis l'ouverture

1102 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Kingdom Ultimate

Offgame

ConsoleFun

Lunae - le bazar d'Emz0

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RPG MAKER XP] Mah-jong

Aller à la page 1 2


kabu - posté le 21/07/2017 à 21:58:21 (57 messages postés)

❤ 0

Domaine concerné: Script
Logiciel utilisé: RPG MAKER XP
Bonjours, je cherche à faire un jeu mah-jong avec rmxp, j'ai donc créer toutes les images qu'il fallait(je les ait numérotés de 1 à 42) et j'ai commencer par créer ce système mais je n'y parvient pas, je veut faire en sorte que:
- Le jeu génère 14 fois un nombre entre 1 et 42,
- Ces nombres apparaissent 4 fois au maximum (il peuvent apparaître une fois, deux, trois ou quatre voir pas du tout,
- Les nombres qui peuvent apparaître 4 fois doivent être entre 9 et 42),
- Ces nombres soit attribués à une de mes images,
- Et que sa refasse le tout 3 fois mais qu'à chaque fois les nombres précédents(exemple si le joueur1 à 4;4;4 alors le joueur 2 peut avoir que un seul 4),

J'arrive à générer 14 fois un nombre entre 1 et 42:
for i in (1..14)
rand(1..42)
end

Mais c'est tout ce que j'arrive à faire. Je croie que je demande un truc presque impossible mais merci d'avoir prit le temps de lire ce post et merci de votre aide.


winterskill - posté le 21/07/2017 à 23:24:47 (927 messages postés)

❤ 0

Empereur des bons gros meuh

salut!
j'ai pas très bien compris le problème en fait... :F

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


kingdommangas - posté le 21/07/2017 à 23:51:45 (409 messages postés)

❤ 0

Youtubeur/Scenariste

Ouah, c'est un système casse couille que tu mijote dis moi. :surpris2
Alors, à vu de nez ferais un truc du style:

Label:boucle
Variable[Aléa] = aléa entre 1 et 42
ex: Lorsque la Variable[Aléa] = 5
Autant de variable que de tuile

Condition: Si Variable[1...42] >4
Revenir Label:boucle
sinon
Variable[5] += 1

Mon cerveau s'est mis en pause la donc j'ai pas trop d'idée pour la suite :dort mais je partirais déjà sur cette base là. :clindoeil3
Par contre ca représente un taf monstre déjà et je pense que tu auras besoin de 42 interrupteurs pour la validation des tuiles sélectionner, à moins que tu utilise les variables au choix. :sourire2

Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube


kabu - posté le 22/07/2017 à 11:00:15 (57 messages postés)

❤ 0

Salut, merci d'avoir lu mon post. Je connais la fonction pour générer 14 fois un nombre aléatoire entre 1 et 42, ce que je cherche à faire c'est trouver un moyen de stocker ces résultats (peut être sous forme de tableau si c'est possible: tuilesPiocherJoueurUn = [1, 4, 36, 14, 22, 8, 7, 12, 21, 10, 41, 42, 33, 4] ). Si cette fonction existe faudrait tenter de récupérer le nombre de fois d'apparition de chaque nombre et vérifier si c'est inférieur ou égale à 4 et que la fonction random ne génère ensuite que des nombres entre 9 et 42(puisque si les nombres entre 1 et 8 sont déja apparu sa servirait à rien de les générer. Mais le souci la dedans c'est que je sais pas comment faire. Merci du coup de main.


kingdommangas - posté le 22/07/2017 à 11:41:20 (409 messages postés)

❤ 0

Youtubeur/Scenariste

A ma connaissance, il n'y a pas de moyen de stocké des valeurs d'une façon aussi pratique.

Il faut que tu créer 42 variables que tu nomme tuile1, tuile2, etc...
Et que tu augmente la valeurs de ces variables lorsque la variable aléatoire les désignent. En somme 42 conditions qui diront:
Si la variable aléas est égale à 1
la variable tuile1 augmente de 1
******************
Si la variable aléas est égale à 2
la variable tuile2 augmente de 1
******************
Si la variable aléas est égale à 3
la variable tuile3 augmente de 1
******************
******************
Apres c'est un jeu de condition, lorsque la variable tuile3 est égale à 4, on ne peut plus l'augmenter.

Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube


Mack - posté le 22/07/2017 à 12:09:54 (2290 messages postés) - staff

❤ 0

Bah un truc du genre :


Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
nbr_occurence = []
# J'ai un doute sur la création du tableau, donc la ligne du dessus sera peut être pas exacte.
 
for i in 1..14
        j = rand(42)+1
        while (nbr_occurence[j]<4) # Tu vérifies que t'es pas déjà 4 fois sortie cette valeur.
                j = rand(42)+1
        end
        
        # Y a moyen de faire mieux pour le while, mais j'me souviens plus du tout comment faire en ruby
        # A 
        if j<10
                nbr_occurence[j] = 4 # Si t'as entre 1 et 9 tu mets à 4, comme ça tu peux plus en avoir
        else
                nbr_occurence[j]++ # Sinon, tu augmentes juste le nombre de 1
        end
end
 



Ça devrait marcher je pense.

( Je prend note de tout les commentaires, même si je n'y répond pas )


kabu - posté le 22/07/2017 à 12:43:47 (57 messages postés)

❤ 0

Je suis en train de tenter un truc, est ce que sa marcherais si je fessait ceci :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
def start
  for i in (1..14)
    value = (rand(143)).to_i + 1
    tuile = [
        1, 2, 3, 4,   
        5, 6, 7, 8,
        9, 9, 9, 9,
        10, 10, 10, 10,
        11, 11, 11, 11,
        12, 12, 12, 12, 
        13, 13, 13, 13,
        14, 14, 14, 14,
        15, 15, 15, 15,
        16, 16, 16, 16,
        17, 17, 17, 17,
        18, 18, 18, 18, 
        19, 19, 19, 19,
        20, 20, 20, 20,
        21, 21, 21, 21,
        22, 22, 22, 22,
        23, 23, 23, 23,
        24, 24, 24, 24,
        25, 25, 25, 25,
        26, 26, 26, 26,
        27, 27, 27, 27,
        28, 28, 28, 28,
        29, 29, 29, 29,
        30, 30, 30, 30, 
        31, 31, 31, 31,
        32, 32, 32, 32,
        33, 33, 33, 33,
        34, 34, 34, 34,
        35, 35, 35, 35,
        36, 36, 36, 36,
        37, 37, 37, 37,
        38, 38, 38, 38,
        39, 39, 39, 39,
        40, 40, 40, 40,
        41, 41, 41, 41,
        42, 42, 42, 42]
print tuile[value]
tuile.delete(value)
end
end
 




winterskill - posté le 22/07/2017 à 15:41:51 (927 messages postés)

❤ 0

Empereur des bons gros meuh

je pense que oui...
mais pourquoi avoir fait 4 fois chaque nombre?

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


kabu - posté le 22/07/2017 à 21:28:48 (57 messages postés)

❤ 0

Parce qu'il y a 4 exemplaire de chaque tuile (entre 9 et 42). On ne peut tirer que une seul fois les tuiles de 1 à 8 mais le reste on peut le tirer au maximum 4 fois parce qu'il existe 4 fois la même tuile. Sinon, je crois que j'y suis presque ! mais j'ai un souci, je n'arrive pas à supprimer des valeurs dans mon tableau et c'est très embétant. Voici le srcipt:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
def start
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Tableau de tuile et main joueur et ia
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  main_joueur = []
  main_ia1    = []
  main_ia2    = []
  main_ia3    = []
  tuile       = [ 1, 2, 3, 4,     #Saisons
                  5, 6, 7, 8,     #Fleurs
                  9, 9, 9, 9,     #Dragon rouge
                  10, 10, 10, 10, #Dragon vert
                  11, 11, 11, 11, #Dragon blanc
                  12, 12, 12, 12, #Vent est
                  13, 13, 13, 13, #Vent nord
                  14, 14, 14, 14, #Vent ouest
                  15, 15, 15, 15, #Vent sud
                  16, 16, 16, 16, # 1 cercle
                  17, 17, 17, 17, # 2 cercle
                  18, 18, 18, 18, # 3 cercle
                  19, 19, 19, 19, # 4 cercle
                  20, 20, 20, 20, # 5 cercle
                  21, 21, 21, 21, # 6 cercle
                  22, 22, 22, 22, # 7 cercle
                  23, 23, 23, 23, # 8 cercle
                  24, 24, 24, 24, # 9 cercle
                  25, 25, 25, 25, # 1 bambous
                  26, 26, 26, 26, # 2 bambous
                  27, 27, 27, 27, # 3 bambous
                  28, 28, 28, 28, # 4 bambous
                  29, 29, 29, 29, # 5 bambous
                  30, 30, 30, 30, # 6 bambous
                  31, 31, 31, 31, # 7 bambous
                  32, 32, 32, 32, # 8 bambous
                  33, 33, 33, 33, # 9 bambous
                  34, 34, 34, 34, # 1 caractère
                  35, 35, 35, 35, # 2 caractère
                  36, 36, 36, 36, # 3 caractère
                  37, 37, 37, 37, # 4 caractère
                  38, 38, 38, 38, # 5 caractère
                  39, 39, 39, 39, # 6 caractère
                  40, 40, 40, 40, # 7 caractère
                  41, 41, 41, 41, # 8 caractère
                  42, 42, 42, 42] # 9 caractère
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#pioche pour le joueur 1
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  for i in (1..14)
    value = (rand(10)).to_i + 1
    if tuile[value] != nil #pour éviter les érreurs
       main_joueur.push(value)
       tuile.delete(value)
    end
    print "Tuiles en main: " + main_joueur[0..13].to_s + "\n" +
    "Nombre de tuiles en main: " + main_joueur.length.to_s
  end
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
end
 


j'ai l’impression que ma fonction "tuile.delete(value)" ne fais rien et sais pas pourquoi.


winterskill - posté le 22/07/2017 à 22:55:32 (927 messages postés)

❤ 0

Empereur des bons gros meuh

dis, tu sais que là, tu supprime toutes les tuiles qui ont une valeur différente de nil. c'est normal? :oO

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


Mister Ocelot - posté le 23/07/2017 à 12:13:11 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

Pour les tableau en ruby ya ce site qui est super complet : http://www.geckogeek.fr/les-tableaux-ruby-array-en-details.html

Après la fonction delete dans les tableau elle suprime l'objet que tu lui donne. genre si tu fait

Portion de code : Tout sélectionner

1
tableau.delete(2)

, tu supprime le premier 2 qu'il trouve dans le tableau. Pour supprimer un objet a un index doné, il faut utiliser la fonction delete_at(index)

EDIT : J'ai mal lu le script tu n'utilise pas les index non ?

EDIT 2 : les joueurs doivent avoir combien de tuile entre 1 et 8 ?

Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


winterskill - posté le 23/07/2017 à 15:17:05 (927 messages postés)

❤ 0

Empereur des bons gros meuh

@mister ocelot : si si, d'après le tableau, je crois bien qu'il utilise les index.

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


Mister Ocelot - posté le 23/07/2017 à 17:41:49 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

bon j'ai fait une petite fonction qui marche à peu près (il faudrait la tester plein de fois pour voir si ça marche bien mais ça a l'air de marcher) :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
def Majhong()
  
  capital_tuile = [1, 2, 3, 4,     #Saisons
                  5, 6, 7, 8,     #Fleurs
                  9, 9, 9, 9,     #Dragon rouge
                  10, 10, 10, 10, #Dragon vert
                  11, 11, 11, 11, #Dragon blanc
                  12, 12, 12, 12, #Vent est
                  13, 13, 13, 13, #Vent nord
                  14, 14, 14, 14, #Vent ouest
                  15, 15, 15, 15, #Vent sud
                  16, 16, 16, 16, # 1 cercle
                  17, 17, 17, 17, # 2 cercle
                  18, 18, 18, 18, # 3 cercle
                  19, 19, 19, 19, # 4 cercle
                  20, 20, 20, 20, # 5 cercle
                  21, 21, 21, 21, # 6 cercle
                  22, 22, 22, 22, # 7 cercle
                  23, 23, 23, 23, # 8 cercle
                  24, 24, 24, 24, # 9 cercle
                  25, 25, 25, 25, # 1 bambous
                  26, 26, 26, 26, # 2 bambous
                  27, 27, 27, 27, # 3 bambous
                  28, 28, 28, 28, # 4 bambous
                  29, 29, 29, 29, # 5 bambous
                  30, 30, 30, 30, # 6 bambous
                  31, 31, 31, 31, # 7 bambous
                  32, 32, 32, 32, # 8 bambous
                  33, 33, 33, 33, # 9 bambous
                  34, 34, 34, 34, # 1 caractère
                  35, 35, 35, 35, # 2 caractère
                  36, 36, 36, 36, # 3 caractère
                  37, 37, 37, 37, # 4 caractère
                  38, 38, 38, 38, # 5 caractère
                  39, 39, 39, 39, # 6 caractère
                  40, 40, 40, 40, # 7 caractère
                  41, 41, 41, 41, # 8 caractère
                  42, 42, 42, 42] # 9 caractère
                  
  main_joueur = []
  
  for i in 0...13
    tuile = rand(41) + 1
    
    while capital_tuile.any? {|obj| obj == tuile} == false do
        tuile = rand(41) + 1
    end
    
    if tuile < 9 == true && main_joueur.any? {|obj| obj == tuile} == false
      capital_tuile.delete(tuile)
      main_joueur.push(tuile)
    elsif tuile > 8 == true
      capital_tuile.delete_at(capital_tuile.index(tuile))
      main_joueur.push(tuile)
    end
    
    print(main_joueur)
    print(capital_tuile.length)
    
  end
  
end
 



Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


kabu - posté le 23/07/2017 à 19:31:03 (57 messages postés)

❤ 0

Merci beaucoup sa fonctionne nikel !
J'ai juste une dernière question, si je voudrait par exemple faire d'autres tableau (par exmple main_joueur2 = [] et main_joueur3 = []) comme faudrait faire pour y parvenir rapidement sans bessoin de repeter le code à chaque fois ?


Mister Ocelot - posté le 23/07/2017 à 21:35:36 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

Pour ça tu fait un tableau dans lequel tu stoker chaque main sous forme de tableau. Genre un truc comme ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
 main_des_joueurs = [[],[],[],[]]
  
  for joueur in 0...3
   for i in 0...13
    tuile = rand(41) + 1
    
    while capital_tuile.any? {|obj| obj == tuile} == false do
        tuile = rand(41) + 1
    end
    
    if tuile < 9 == true && main_des_joueurs[joueur].any? {|obj| obj == tuile} == false
      capital_tuile.delete(tuile)
      main_des_joueurs[joueur].push(tuile)
    elsif tuile > 8 == true
      capital_tuile.delete_at(capital_tuile.index(tuile))
      main_des_joueurs[joueur].push(tuile)
    end
    
    print(main_des_joueurs[joueur])
    print(capital_tuile.length)
    
   end
 
  end
 
 



Et pour acceder a chaque main de chaque joueurs, tu fait main_des_joueurs[Index de ton joueur]. N'oublie pas que cet index sera entre 0 et 3 pour 4 joueurs. ( Après si tu veut faire un réglage du nombre des joueurs, je pense qu'il faudra faire gaffe a la première ligne, après j'ai des doutes)

PS : hésite pas a modifier les prints, parce ce code génère plein de popup (près ils sont les uns a la suite des autres, pas tous en même temps ... mais ça reste long)

Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


kabu - posté le 23/07/2017 à 22:11:04 (57 messages postés)

❤ 0

OK merci beaucoup, pour afficher des images j'avais penser à ceci:

Portion de code : Tout sélectionner

1
2
3
4
for i in 0..mon_tableau.length
   @image + i.to_s = Sprite.new
   @image + i.to_s.bitmap=Bitmap.new("Graphics/Mon_dossier/"+main_des_joueurs[0].to_s+".png")
end



Sa ne marche pas, enfaite ce que je cherche à faire c'est trouver un moyen d'afficher plusieurs images à l'aide d'une boucle pour éviter d'écrire à chaque fois:

Portion de code : Tout sélectionner

1
2
@image1 = Sprite.new
@image1.bitmap=Bitmap.new("Graphics/Mon_dossier/"+main_des_joueurs[0[0]].to_s+".png").


Parce que je cherche à affichier une image selon ma tuile(nombre) en main. Comme par exemple si mon tableau
main_des_joueurs[0] contient 1, 2, 3, 7, 77 etc... alors j'affiche l'image coresspondante.
Et aussi comment enlever un objet du tableau selon le choix du joueur:

Portion de code : Tout sélectionner

1
print "Quel tuile voulez vous défaussez ?"


Si le joueur choisi la tuile 7 (qu'il verra uniquement en image) alors la tuile en question est supprimer.


Mister Ocelot - posté le 24/07/2017 à 20:58:28 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

Créer un objet carte serai le mieux a faire je pense. Cet objet gérerai toute la partie affichage, et tu n'airait plus qu'a faire un tableau rempli de ces objets

Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


kabu - posté le 24/07/2017 à 21:06:06 (57 messages postés)

❤ 0

C'est quoi sa un objet "carte" ? et comment le créer ?


Mister Ocelot - posté le 24/07/2017 à 21:51:37 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

Ok, On va attaquer un gros morceau. Et comme je suis un très très très mauvais pédagogue, je vais mettre des liens de tuto.

Pour le principe d'objet et la Programation Orienté Objet en général : https://openclassrooms.com/courses/programmez-en-oriente-objet-avec-c/introduction-a-la-programmation-orientee-objet-1 (Ça vient d'un tuto sur le C# mais c'est les mêmes principes que dans les autres languages orientée objet. Le ruby est un language orienté objet)

Pour créer des sortes d'objet, on utilise en ruby des classes. Voici un tuto qui explique les classes bien mieux que moi : https://ruby-doc.org/docs/beginner-fr/xhtml/ch04.html (c'est un tuto pour le ruby en général, mais c'est exactement pareil dans les scripts (tu peut même les mettre dans une page et créer des instances de celle-ci dans une autre))

EDIT : Aussi le guide pour le RGSS du fofo, ça peut toujours servir : http://www.rpg-maker.fr/guides-329-guide-rgss.html

En espérant que cela t'aide

Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


winterskill - posté le 25/07/2017 à 00:33:58 (927 messages postés)

❤ 0

Empereur des bons gros meuh

Mais si il commence a utiliser des classes, il faudra qu'il refactorise son code...

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


kabu - posté le 26/07/2017 à 13:14:38 (57 messages postés)

❤ 0

J'ai creer un class, c'est la première fois que je fais sa, vous en pensez quoi ?

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Majhong
  $capital_tuile = [1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11,
11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 
16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21,
21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26,
27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 
32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 
37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 
42, 42, 42, 42]
  $main_des_joueurs = [[],[],[],[]]
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#Pioche de chaque joueurs
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   def pioche
      for joueur in 0...3
        for i in 0...13
          tuile = rand(41) + 1
          while $capital_tuile.any? {|obj| obj == tuile} == false do
             tuile = rand(41) + 1
          end
          if tuile < 9 == true && $main_des_joueurs[joueur].any? {|obj| obj == tuile} == false
             $capital_tuile.delete(tuile)
             $main_des_joueurs[joueur].push(tuile)
          elsif tuile > 8 == true
             $capital_tuile.delete_at($capital_tuile.index(tuile))
             $main_des_joueurs[joueur].push(tuile)
          end
        end
      end
       print "main du joueur 1: " + $main_des_joueurs[0].join("-").to_s
    end
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
end
a = Majhong.new
a.pioche
 




Mister Ocelot - posté le 27/07/2017 à 14:39:17 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

Bah ça à l'air bien! Après est ce que tu a besoin d’accéder à capital_tuile dans d'autres classes / fonctions hors de ta classe ? Parce que sinon tu peut remplacer le $ par un @, comme ça cette variable sera accessible uniquement a l'interieur de ta classe

Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


kabu - posté le 27/07/2017 à 20:39:25 (57 messages postés)

❤ 0

Merci, maintenant j'essaie d'afficher plusieurs images en une seul méthode, mais je n'y parvient pas. Je suis en train de faire une interface. Voici le code:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Majhong
  def initialize
    @test  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
    @sel   = 4
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("background.PNG") 
  end
  def main
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
  end
 def update
   #Test d'affichage de plusieurs éléments
   @test.each do |elmts|
     @tuiles + elmts.to_s = Sprite.new
     @tuiles + elmts.to_s.bitmap = RPG::Cache.picture(elmts.to_s + ".PNG")
     @tuiles + elmts.to_s.x += 10
   end
   #xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   if Input.trigger?(Input::LEFT) 
     @sel += 1
     print @test[@sel].to_s
   elsif Input.trigger?(Input::RIGHT) 
     @sel -= 1
     print @test[@sel].to_s
  end 
end
end




Mister Ocelot - posté le 28/07/2017 à 11:29:58 (136 messages postés)

❤ 0

Doit arrêter de glander. Glande au lieu d'arrêter

les noms de variables ne peuvent pas etre composée d'un texte plus une autre variable (@tuiles + elmts.to_s ça ça matrche pas). Remplace ça par un tableau ou sinon tu peut faire une classe qui symboliserait l'objet carte. Dans cette classe, tu gérerai la partie affichage individuellement, et tu créerai un objet carte à chaque fois que tu pioche.

EDIT: Une classe carte qui ressemblerait a ça par exemple

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Carte
  def initialize(idCarte) #lorsque tu crée ta carte
    @tuile_sprite = Sprite.new
    @tuile_sprite.bitmap = RPG::Cache.picture(idCarte.to_s) #dans RPG:Cache.picture tu n'a pas besoin de l'extention du fichier il me semble
    @id = idCarte
  end
  
  def display(x,y) #tu appele cette fonction lorsque tu veut afficher ta carte
    @tuile_sprite.x = x
    @tuile_sprite.y = y
  end
  
  def dispose() #cette fonction doit être appelé AVANT que tu supprime l'objet pour éffacer le sprite sur l'écran
    @tuile_sprite.dispose
  end
end



Projet en cours, veuillez patientez 525 mois avant maturation. Taper Echap pour quitter


xvw - posté le 28/07/2017 à 12:12:59 (733 messages postés) -

❤ 0

yo

Le code est donné plus haut est un peu triste :'(
if x == true, ça ne sert à rien, pareil pour if x == false. On préfèrera
if x et unless x (ou if !x).

Pour générer la grille de tuile initiale, on peut simplement faire :

Portion de code : Tout sélectionner

1
2
3
4
5
  def tuiles
    base = (1..8).to_a
    rest = (9..42).to_a
    (base + (rest.map { |x| [x] * 4 })).flatten
  end



https://xvw.lol

Aller à la page 1 2

Index du forum > Entraide > [RPG MAKER XP] Mah-jong

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers