| Défi #1 : Le Puzzle Swap. | |
|
Auteur | Message |
---|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Défi #1 : Le Puzzle Swap. Mar 28 Oct 2008 - 19:11 | |
| J'ai envie de lancer un défi. Celui-ci n'est pas noté, mais les scripts soumis feront peut-être gagné des points de scripts à leur auteur. Postez directement vos solutions dans ce topic avec le bouton répondre. Ce n'est pas une demande de script, donc même si personne n'y répond, ce n'est pas dramatique. Vous avez le droit de travailler en équipe. Vous n'avez qu'à mettre le pseudo des co-auteurs dans le reply. Voilà. Pour m'amuser avec certains concepts, j'avais commencé ce petit jeu lors de la rédaction des cours. Il s'agit en fait des casse-têtes où l'on doit déplacer une pièce dans l'espace vide. La valeur 0 est cet espace vide. Game_Character, Sprite_Character, Game_Picture et Sprite_Picture sont la réponse à l'énigme. Ce que je cherche à faire, c'est de modifier le show_grid afin qu'il n'affiche plus l'index de la case, mais plutôt afficher l'image. Voilà les règles. Premièrement, on ne doit pas avoir plusieurs images dans le répertoire picture. Nous décomposeront l'image résultante du casse-tête. Ensuite, nous devrons créer des nouvelles classes : Game_Puzzle et Sprite_Puzzle. C'est classe permettront l'affichage de notre casse tête et seront appelés par show_grid ou par l'event (car il se peut que selon votre implémentation, il soit plus facile d'appeler à partir de l'event). Disons que pour les besoins de la cause, voici l'image à utiliser et ce à quoi elle peut ressembler durant une partie. => Mais en fait, n'importe quelle image peut être utilisée. Cela doit être un des paramètres de l'initialize de votre classe d'affichage du puzzle. Le numéro donné par l'index de la grille est l'indexe d'affichage de l'image. Le 0 fait en sorte que ce segment est invisible. Vous pouvez également ajouter l'effet de déplacement lorsqu'une tuile de l'image prends la place du 0, mais c'est optionnel. C'est uniquement pour un effet visuel plus attrayant. L'image doit être décomposé selon sa dimention (height et width) et non en carrés de tailles fixes. Voici le module du jeu. - Code:
-
#auteur: MirainoHikari, 20 octobre 2008 module Jeu_Hikari class Swap_Square def my_rand(val,check) val1 = (rand(val)+1).modulo(val) while check.flatten.include?(val1) val1 = (rand(val)+1).modulo(val) end return val1 end def initialize(mysize) $validation = Array.new(mysize) $grille = Array.new(mysize) for i in 0 ... mysize $validation[i] = Array.new(mysize) $grille[i] = Array.new(mysize) for j in 0 ... mysize val1 = i * mysize + j +1 val2 = my_rand((mysize*mysize),$grille) $validation[i][j] = val1 == (mysize*mysize) ? 0 : val1 $grille[i][j] = val2 == (mysize*mysize) ? 0 : val2 end end end def find_index(val) for i in 0 ... $grille.size for j in 0 ... $grille[i].size if $grille[i][j] == val return [i,j] end end end return nil end def show_grid(mygrid) grid_format = "" for i in 0 ... mygrid.size for j in 0 ... mygrid[i].size grid_format += mygrid[i][j].to_s(32) + " " end grid_format += "\n" end return grid_format end def swap(dir) #1 up 2 down 3 left 4 right pos = find_index(0) case dir when 1 if pos[0] > 0 $grille[pos[0]][pos[1]], $grille[pos[0]-1][pos[1]] = $grille[pos[0]-1][pos[1]], $grille[pos[0]][pos[1]] end when 2 if pos[0] < $grille.size - 1 $grille[pos[0]][pos[1]], $grille[pos[0]+1][pos[1]] = $grille[pos[0]+1][pos[1]], $grille[pos[0]][pos[1]] end when 3 if pos[1] > 0 $grille[pos[0]][pos[1]], $grille[pos[0]][pos[1]-1] = $grille[pos[0]][pos[1]-1], $grille[pos[0]][pos[1]] end when 4 if pos[1] < $grille[pos[0]].size - 1 $grille[pos[0]][pos[1]], $grille[pos[0]][pos[1]+1] = $grille[pos[0]][pos[1]+1], $grille[pos[0]][pos[1]] end end end def game_win return ($grille == $validation) end end end
Et voici l'événement qui appelle le jeu. Notez que dans l'event présenté, on divise le puzzle en 3x3, mais le code permet de décomposer le puzzle en 2x2 jusqu'en 8x8. Le paramètre présent dans le new détermine le nombre de divisions. Donc à vos claviers et bonne chances. Si vous voulez des précisions, n'hésitez pas à posez des questions. Bonne chance.
Dernière édition par MirainoHikari le Mar 28 Oct 2008 - 19:23, édité 2 fois |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mar 28 Oct 2008 - 19:21 | |
| |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mar 28 Oct 2008 - 19:27 | |
| En effet. Je sais que je n'ai pas encore commencé les cours sur VX, mais quelqu'un de moyennement débrouillard peut y arriver. J'ai déjà indiqué les scripts à regarder. Ce devrait dont être assez simple. Voyons voir ceux qui y arriveront les premiers. |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mar 28 Oct 2008 - 20:23 | |
| C'est interessant parce que bien que j'ai travaillé sur plusieurs scripts, je n'ai pas encore touché aux classes d'affichage de sprite. Je vais peut-être m'essayer, mais ca sera pas pour maintenant. |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mer 29 Oct 2008 - 9:14 | |
| :flaftufcofpren Sa donne quoi en français Oo J'ai pas tout très bien compris >< Mais je vais essayait ^^ On verra bien la tonne d'erreur que je ferais :depression: |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mer 29 Oct 2008 - 16:33 | |
| C'est vrai, j'ai pas pensé à nos pauvres cousins Européens qui sont légèrement handicapés en anglais.
Loop = Boucle
Conditionnal Branch =? Branchement
Show Choices = Choix (Les when se font automatiquement, pour le when Cancel, coché branchement séparer lorsque annuler...)
Control Self Switch = Interrupteur Local de Control (ou quelque chose du genre) Si tu ne sais pas encore comment mettre un selfswitch dans un event, je crois que tu devrais attendre le prochain cours... |
|
| |
Flibustier Lv.21
Age : 30 Inscrit le : 24/05/2008 Messages : 3234
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mer 29 Oct 2008 - 16:54 | |
| Enfaite je sais pas si je vais le faire >< Je sais pas encore trop bien me débrouiller pour le faire ! |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Défi #1 : Le Puzzle Swap. Mer 29 Oct 2008 - 18:35 | |
| Comme j'ai écrit, ce n'est pas obligatoire. Mais ça peut en stimuler quelques uns. |
|
| |
Corsaire Lv.19
Age : 30 Inscrit le : 20/08/2008 Messages : 2555
| Sujet: Re: Défi #1 : Le Puzzle Swap. Sam 1 Nov 2008 - 14:53 | |
| Sympa ^^. C'est vraiment une bonne idée.
Mais faute de temps je ne pense pas le faire. |
|
| |
Voyageur Lv.10
Age : 42 Inscrit le : 04/12/2008 Messages : 383
| Sujet: Re: Défi #1 : Le Puzzle Swap. Lun 15 Déc 2008 - 19:38 | |
| Bon, je sais que ça date un peu, mais ça me semble marrant !!
Démo !!
Je suis resté tres basique. Et j'ai fait un effort pour commenter deux/trois lignes ...
ASHKA |
|
| |
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: Défi #1 : Le Puzzle Swap. Ven 19 Déc 2008 - 14:44 | |
| Pour les concours de scripts, il n'est jamais trop tard Félicitation. Très fonctionnel. Légèrement personnalisable en plus. Pour ce script fait proprement, je donnerais 3 pts, mais tu es déjà au max. Merci de la soumission. (Je sens que certain membres vont sauté dessus.) Je vais rendre ce script plus personnalisable à mon retour en janvier pour ceux qui voudrait l'utiliser un peu plus n'importe comment et je ferai un tuto pour l'utiliser convenablement. Merci ASHKA |
|
| |
| Sujet: Re: Défi #1 : Le Puzzle Swap. | |
| |
|
| |
| Défi #1 : Le Puzzle Swap. | |
|