| Previous topic :: Next topic |
| Author |
Message |
Ghuntar
 Offline
Joined: 03 Aug 2009 Posts: 140
Localisation: near Paris
|
Posted: Wed 26 Aug - 00:27 Post subject: Ghuntlet |
|
|
Juste un petit poste de présentation de mon projet de Gauntlet-like
le lien google.code : http://code.google.com/p/ghuntlet/
TO DO :
- Gestion plus poussée des mobs (listes/spawn, canvas, armes, etc ...) - IA des mobs (en cours, parceque là c'est rudimentaire) - Créer les sprites et tilesets (ou en trouver des libres) - Gestion des power up. - Créer différents types de héros (d'abord au niveau graphique puis au niveau des caracs/skills) - Designer différentes maps. - Gestion des sauvegardes.
#################################################################################### ####################################################################################
Bon on va appeler ça une alpha 011 (mais bon, en fait c'est la r47 sur googlecode) :
http://ghuntlet.googlecode.com/files/Ghuntlet_r47.zip
- Ajout des escaliers qui permettent de monter (à moins que ça ne soit descendre...) de niveau en niveau. - Ajout de l'éditeur de map http://ghuntlet.googlecode.com/files/microluamapeditor_r47.zip ==> Envoyez moi vos créations ! (Bon, ok, j'ai pas écrit de doc, mais ça va venir) - travail sur la partie POO pour améliorer et optimiser tout ça?
Ghunt@r !!!
#################################################################################### ####################################################################################
Et oualà l'Alpha 010 (me demandez pas où est la 009). http://ghuntlet.googlecode.com/files/Ghuntlet_alpha_010.zip Les niouz : - Ajout des "portal" qui sont des générateurs de monstres (comme dans Gauntlet) - Ajout des portes et de clefs (les premières s'ouvrant si vous avez les deuxièmes ) - La fonction skirt qui permet de ne pas rester coincé contre les murs. - un peu d'optimisation Ghuntar !!! #################################################################################### ####################################################################################
Ainsi arrive l'Alpha 008 avec son lot de nouveautés : http://ghuntlet.googlecode.com/files/Ghuntlet_alpha_008.zip
- Implémentations d'objets (qui ne servent à rien pour le moment, mais ça fait plaisir). - Gestion des drops (tous les mobs drop la même chose pour l'instant) - Gestion de l'inventaire (enfin, il est affiché en HUD) - Les armes des différents héros est différente (sprite seulement) Ghunt@r !!!
#################################################################################### ####################################################################################
Et voila l'Alpha 007 ==> Une voiture d'agent secret... oui, oui, je connais le chemin ==>[]
http://ghuntlet.googlecode.com/files/Ghuntlet_alpha_007.zip Sinon, bah pas grand chose de tape à l'oeil non plus :
- Implémentation du choix du personnage (sprite, points de vie différents, mais pas encore l'arme) - Réécriture en mode POO pour pas mal de chose, mais il reste du boulot à ce sujet (gestion des armes, à la fois du héros et des mobs)
#################################################################################### ####################################################################################
Version alpha 6
http://ghuntlet.googlecode.com/files/Ghuntlet_alpha_006.zip Pas grand chose de visuellement neuf : - Mise en place d'une IA rudimentaire pour le mob - Passage progressif en POO (enfin bof pour l'instant : c'est le cas que pour la gestion des monstres et j'ai des problèmes avec l'opérateur ":" et la variable self...) - Mise en place d'un constructeur de monstre et gestion d'une liste des monstres.
#################################################################################### ####################################################################################
Version alpha_003 http://ghuntlet.googlecode.com/files/Ghuntlet_alpha_003.zip - Implémentation de menus pas tout à fait fonctionnels mais presque.
#################################################################################### ####################################################################################
Version alpha_002
Bon c'est réparé : une erreur stupide de "|" en fin de ligne sur mon fichier map qui n'est pas détecté par MLS (il se contente d'un LF). Donc voici une version corrigée et améliorée :
- On peut "contrôler le mob avec le bouton A. - On déclenche le sort avec le bouton L.
#################################################################################### ####################################################################################
Version alpha_001
Et voilà une première version alpha, dont voici ce qui fonctionne (sur MLS en tous cas, j'ai pas revérifié les dernières modifs sur ma DS) :
- Un sprite de héros au centre de l'écran - Une map qui scroll autour (avec 2 niveau : Background & Foreground) - Une gestion des tuile passables ou non (à affiner). - Un mob (monstre) pas si mobile que ça. - Le status du héros et du mob qui "flotte" au dessus de lui ("OK" par défaut). - Un arme (press A) qui ne fait pas grand chose (elle se déplace) - Un système de collision (le status passe à "HIT" quand l'objet est touché)
#################################################################################### ####################################################################################
Version pre alpha :
Pas grand chose à dire pour l'instant. Voilà ce que j'ai :
- Un sprite de héro au centre de l'écran - Une map qui scroll autour (enfin là je l'ai virée temporairement pour des tests) - Une gestion des tuile passables ou non (viré comme au dessus) - Un mob pas si mobile que ça - Un arme qui ne fait pas grand chose
Sinon, je me servirai de ce poste pour raconter mes aventures de codage ^^
Ghuntar.
_________________ http://code.google.com/p/ghuntlet/
Last edited by Ghuntar on Tue 27 Oct - 23:29; edited 16 times in total
|
|
| Back to top |
|
 |
Ghuntar
 Offline
Joined: 03 Aug 2009 Posts: 140
Localisation: near Paris
|
Posted: Wed 26 Aug - 00:31 Post subject: Ghuntlet |
|
|
Premiers malheurs de prog : On ne peut pas remplacer
| Code: |
wpn.realpos[1] = hero.realpos[1] wpn.realpos[2] = hero.realpos[2]
|
par
| Code: |
wpn.realpos = hero.realpos
|
Sinon, dès qu'on modifie " hero.realpos", "wpn.realpos" est modifié aussi -_-. Ca me fera les pieds, j'avais qu'à mieux écouter...
Ghuntar.
_________________ http://code.google.com/p/ghuntlet/
|
|
| Back to top |
|
 |
Quent42340 Modérateur
 Offline
Joined: 03 Jun 2009 Posts: 777
Localisation: Veauche
|
Posted: Wed 26 Aug - 00:36 Post subject: Ghuntlet |
|
|
Pas forcément, si tu n'es pas dans le while ca marche Bonne chance pour la suite
EDIT : Sinon fais le avec for  _________________ Plus les erreurs de scripts sont compliquées, plus elles m'interessent...



|
|
| Back to top |
|
 |
Ced-le-pingouin
 Offline
Joined: 16 Jan 2009 Posts: 325
Localisation: Belgique
|
Posted: Wed 26 Aug - 07:41 Post subject: Ghuntlet |
|
|
Oui, c'est vrai que ça peut paraître embêtant, mais dans beaucoup de langages, c'est voulu. Ca permet de référencer à plein d'endroits le même objet en mémoire. Depuis que les langages ont évolué et que beaucoup n'ont pas de pointeurs (gestion mémoire de très bas niveau donc), ce concept de "références" les a remplacés. En Java et PHP 5, c'est pareil.
Après, dans certains langages la solution est toute trouvée, car si "objetB = objetA" va faire que 2 variables représentent un même objet en mémoire, le langage supporte généralement "objetB = clone objetA", ce qui a l'effet que tu attends.
Je ne pense pas que Lua possède une fonction clone() de base, et je n'ai pas encore implémenté cette fonction moi-même, mais sur un commentaire à une question de programmation, quelqu'un en propose une: http://stackoverflow.com/questions/1092832/how-to-create-a-class-subclass-a…
J'ai pas testé, et c'est écrit pour Lua 5.0 (le 5.1 permet un code parfois plus court pour certaines choses), mais c'est une piste.
|
|
| Back to top |
|
 |
Ghuntar
 Offline
Joined: 03 Aug 2009 Posts: 140
Localisation: near Paris
|
Posted: Wed 26 Aug - 07:43 Post subject: Ghuntlet |
|
|
Je suis effectivement dans la grande boucle while, mais dans un if. Ce n'est pas un pb de condition, sinon, les 2 écritures donneraient la même chose.
EDIT : Merci de confirmer Ced. Et c'est bien ce que je me disais, encore une histoire de ref (Ca me rappelle le perl)... Va falloir que je me mette à la POO... _________________ http://code.google.com/p/ghuntlet/
|
|
| Back to top |
|
 |
Quent42340 Modérateur
 Offline
Joined: 03 Jun 2009 Posts: 777
Localisation: Veauche
|
Posted: Wed 26 Aug - 09:49 Post subject: Ghuntlet |
|
|
J'ai appris les boucles for il y a peu et je pense que ça peut résoudre ton problème :
| Code: | for i=a, b [, c] do wpn.realpos[i] = hero.realpos[i] end |
Explications : 1) On crée une variable i qui est fixée à a dans la première boucle et qui augmente de 1 (ou de c (facultatif)) tant que a <= b. Si a = 1, alors b indique le nombre de fois que la boucle sera répétée. 2) On fixe toutes les valeurs du tableau hero.realpos de a à b aux valeurs de wpn.realpos de a à b.
Exemple : Si je veux les 45 premières valeurs de wpn.realpos dans hero.realpos je fais ça :
| Code: | for i=1,45 do wpn.realpos[i] = hero.realpos[i] end |
Voilà En espérant t'avoir aidé  _________________ Plus les erreurs de scripts sont compliquées, plus elles m'interessent...



|
|
| Back to top |
|
 |
BALROG
 Offline
Joined: 04 Aug 2009 Posts: 397
Localisation: VAR
|
Posted: Wed 26 Aug - 10:00 Post subject: Ghuntlet |
|
|
Ouais, c'est vrai que c'est pratique les boucles for en lua. Bonne chance pour ton jeu Ghuntar ! _________________ "Telle la fleur pure du Lotus qui s'épanouit dans la boue, il faut savoir garder un esprit vertueux même au coeur d'un monde inhumain!" (Free Fight: Seïko Miyazawa, T1)
|
|
| Back to top |
|
 |
aurel2108 Modérateur
 Offline
Joined: 14 May 2009 Posts: 495
Localisation: -> ICI <-
|
Posted: Wed 26 Aug - 11:58 Post subject: Ghuntlet |
|
|
Bonne chance  _________________ Ayez la _G attitude !


|
|
| Back to top |
|
 |
Ghuntar
 Offline
Joined: 03 Aug 2009 Posts: 140
Localisation: near Paris
|
Posted: Wed 26 Aug - 14:06 Post subject: Ghuntlet |
|
|
Merci c'est sympa de m'expliquer la boucle for, mais ça va, ça je maitrise : J'en ai déjà fait plein lors de mes précédents dev (surtout en perl). Et ici, pour 2 pauvres valeurs c'est pas très pertinent. C'est juste que j'avais la flemme d'écrire 2 lignes de code au lieu d'une ^^. Sinon, y'a pas en lua un truc pour demander la valeur plutôt que la ref comme on trouve en perl (\$ et $$) ? Je suis obligé de cloner ?
Ghuntar.
_________________ http://code.google.com/p/ghuntlet/
|
|
| Back to top |
|
 |
Quent42340 Modérateur
 Offline
Joined: 03 Jun 2009 Posts: 777
Localisation: Veauche
|
Posted: Wed 26 Aug - 14:14 Post subject: Ghuntlet |
|
|
C'était juste pour deux valeurs ? Fainéant  _________________ Plus les erreurs de scripts sont compliquées, plus elles m'interessent...



|
|
| Back to top |
|
 |
Grahack Modérateur
Offline
Joined: 27 Jun 2009 Posts: 263
|
Posted: Wed 26 Aug - 14:35 Post subject: Ghuntlet |
|
|
unpack fait une copie:
| Code: | > t1 = {1, 2} > t2 = {unpack(t1)} > =t2 table: 0x8c15498 > =t1 table: 0x8c0f810 > t2[1]=0 > =t1[1] 1 > t2 = t1 > =t1 table: 0x8c0f810 > =t2 table: 0x8c0f810 >
|
|
|
| Back to top |
|
 |
Ghuntar
 Offline
Joined: 03 Aug 2009 Posts: 140
Localisation: near Paris
|
Posted: Wed 26 Aug - 14:48 Post subject: Ghuntlet |
|
|
YES ! C'est exactement ce qu'il me fallait ! Merci Grahack !
Ghuntar.
_________________ http://code.google.com/p/ghuntlet/
|
|
| Back to top |
|
 |
Ced-le-pingouin
 Offline
Joined: 16 Jan 2009 Posts: 325
Localisation: Belgique
|
Posted: Wed 26 Aug - 16:27 Post subject: Ghuntlet |
|
|
Sympa, j'avais pas pensé à cette syntaxe très concise pour copier les éléments dans une nouvelle table.
Maintenant, pour être tout à fait précis, c'est pas unpack() qui fait une copie, c'est le fait que les éléments envoyés par unpack sous forme de liste soient encadrés de "{}" (qui en fait crée une nouvelle table... donc une "copie").
Si je fais la précision, c'est parce qu'au cas où on aurait besoin d'une "deep copy" comme on dit dans le jargon, ça ne fonctionnera pas et il faudra quand même se coltiner la création d'une fonction perso (clone, copy, deepcopy, whatever). Je m'explique... Ici, les éléments de la table sont des nombres. En Lua comme dans quasi tous les langages où les références existent, les nombres sont réellement copiés quand on les assigne (à quoi bon faire une référence à qq chose de si petit?), par contre si l'un des éléments contenu dans la table est lui-même une table, ce sera également lui qui sera référencé dans la copie de la table (ici t2). Tout dépend si c'est ce qu'on veut ou pas. Si les éléments de la table doivent également toujours être des copies des originaux, on ne peut pas utiliser unpack().
A part ça, dans les cas où c'est ce qu'on veut, c'est certainement plus court que d'écrire "t2 = {}; for k, v in pairs(t1) do t2[k] = v end". C'est comme ça que j'aurais écrit ma fonction clone() simple sans penser au truc du unpack. Mais sur cette base, si on a besoin d'une deep copy, il "suffit" de rajouter dans la boucle un "if type(v) == 'table' then t2[k] == clone(v) else ...<code précédent>... end" (je sais pas s'il faut prendre d'autres précautions, mais l'idée est là). Avec ça, chaque élément étant une table sera lui aussi une vraie copie, et ainsi de suite.
Last edited by Ced-le-pingouin on Wed 26 Aug - 18:21; edited 2 times in total
|
|
| Back to top |
|
 |
Grahack Modérateur
Offline
Joined: 27 Jun 2009 Posts: 263
|
Posted: Wed 26 Aug - 17:40 Post subject: Ghuntlet |
|
|
Oui, merci pour la précision, on peut même vérifier qu'unpack renvoit des références des cases du tableau:
| Code: | > t1={{11,12},{21,22}} > t2={unpack(t1)} > return t2[1][1] 11 > t2[1][1]='tavu' > =t1[1][1] tavu
|
|
|
| Back to top |
|
 |
Ghuntar
 Offline
Joined: 03 Aug 2009 Posts: 140
Localisation: near Paris
|
Posted: Fri 11 Sep - 11:04 Post subject: Ghuntlet |
|
|
Et voilà une première version alpha, dont voici ce qui fonctionne (sur MLS en tous cas, j'ai pas revérifié les dernières modifs sur ma DS) :
- Un sprite de héros au centre de l'écran - Une map qui scroll autour (avec 2 niveau : Background & Foreground) - Une gestion des tuile passables ou non (à affiner). - Un mob (monstre) pas si mobile que ça. - Le status du héros et du mob qui "flotte" au dessus de lui ("OK" par défaut). - Un arme (press A) qui ne fait pas grand chose (elle se déplace) - Un système de collision (le status passe à "HIT" quand l'objet est touché)
Voici la source : http://ghuntar.waldmeister.free.fr/LUA/Ghuntlet_alpha_001.zip
Dites-moi ce que vous en pensez
Ghunt@r !!!
_________________ http://code.google.com/p/ghuntlet/
|
|
| Back to top |
|
 |
|