µLua DS - Forum officiel | Official forum Forum Index

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Ghuntlet
Goto page: 1, 2, 3, 4, 5  >
 
Post new topic   Reply to topic    µLua DS - Forum officiel | Official forum Forum Index -> Section française -> Homebrews
Previous topic :: Next topic  
Author Message
Ghuntar


Offline

Joined: 03 Aug 2009
Posts: 140
Localisation: near Paris

PostPosted: Wed 26 Aug - 00:27    Post subject: Ghuntlet Reply with quote

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 Wink )
 - 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

PostPosted: Wed 26 Aug - 00:31    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 00:36    Post subject: Ghuntlet Reply with quote

Pas forcément, si tu n'es pas dans le while ca marche  Okay
Bonne chance pour la suite  Okay


EDIT : Sinon fais le avec for  Okay
_________________
Plus les erreurs de scripts sont compliquées, plus elles m'interessent...





Back to top
Visit poster’s website MSN
Ced-le-pingouin


Offline

Joined: 16 Jan 2009
Posts: 325
Localisation: Belgique

PostPosted: Wed 26 Aug - 07:41    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 07:43    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 09:49    Post subject: Ghuntlet Reply with quote

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à Okay En espérant t'avoir aidé Okay
_________________
Plus les erreurs de scripts sont compliquées, plus elles m'interessent...





Back to top
Visit poster’s website MSN
BALROG


Offline

Joined: 04 Aug 2009
Posts: 397
Localisation: VAR

PostPosted: Wed 26 Aug - 10:00    Post subject: Ghuntlet Reply with quote

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
Visit poster’s website
aurel2108
Modérateur

Offline

Joined: 14 May 2009
Posts: 495
Localisation: -> ICI <-

PostPosted: Wed 26 Aug - 11:58    Post subject: Ghuntlet Reply with quote

Bonne chance  Okay
_________________
Ayez la _G attitude !





Back to top
Visit poster’s website
Ghuntar


Offline

Joined: 03 Aug 2009
Posts: 140
Localisation: near Paris

PostPosted: Wed 26 Aug - 14:06    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 14:14    Post subject: Ghuntlet Reply with quote

C'était juste pour deux valeurs ? Fainéant Okay
_________________
Plus les erreurs de scripts sont compliquées, plus elles m'interessent...





Back to top
Visit poster’s website MSN
Grahack
Modérateur

Offline

Joined: 27 Jun 2009
Posts: 263

PostPosted: Wed 26 Aug - 14:35    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 14:48    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 16:27    Post subject: Ghuntlet Reply with quote

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

PostPosted: Wed 26 Aug - 17:40    Post subject: Ghuntlet Reply with quote

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

PostPosted: Fri 11 Sep - 11:04    Post subject: Ghuntlet Reply with quote

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 Wink

Ghunt@r !!!

 
_________________
http://code.google.com/p/ghuntlet/


Back to top
Display posts from previous:   
Post new topic   Reply to topic    µLua DS - Forum officiel | Official forum Forum Index -> Section française -> Homebrews All times are GMT + 1 Hour
Goto page: 1, 2, 3, 4, 5  >
Page 1 of 5

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group