Aller à la page 1 2
kabu -
posté le 21/07/2017 à 21:58:21 (57 messages postés)
| | 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)
| Empereur des bons gros meuh | salut!
j'ai pas très bien compris le problème en fait...
|
"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)
| Youtubeur/Scenariste | Ouah, c'est un système casse couille que tu mijote dis moi.
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 mais je partirais déjà sur cette base là.
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.
|
Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube |
kabu -
posté le 22/07/2017 à 11:00:15 (57 messages postés)
| | 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)
| 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 (2292 messages postés)
- | | Bah un truc du genre :
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)
| | Je suis en train de tenter un truc, est ce que sa marcherais si je fessait ceci :
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)
| 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)
| | 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:
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)
| 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?
|
"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)
| 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
, 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)
| 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)
| 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) :
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)
| | 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)
| 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 :
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)
| | OK merci beaucoup, pour afficher des images j'avais penser à ceci:
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:
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:
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)
| 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)
| | 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)
| 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)
| 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)
| | J'ai creer un class, c'est la première fois que je fais sa, vous en pensez quoi ?
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)
| 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)
| | 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:
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)
| 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
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 (735 messages postés)
- | 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 :
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 2Index du forum > Entraide > [RPG MAKER XP] Mah-jong
|