Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Devsgen.com - Forums « PSP « Prog Lua/Python « Maps pour RPG
Pages: 1 [2]   Bas de page
  Imprimer  
Auteur Fil de discussion: Maps pour RPG  (Lu 140 fois)
0 Membres et 1 Invité sur ce fil de discussion.
pyroesp
Débutant
*
Hors ligne Hors ligne

Messages: 622


The Spanish Pyro


Voir le profil Courriel
« Répondre #15 le: Juillet 27, 2010, 17:49:22 »

lol, j'ai encore tout compris de travers  Roulement des yeux  Tire la langue
Journalisée

There are only 10 types of people in this world:
  • Those who understand binary.
  • And those who don't.
Yonaba
Modérateur
Modérateur
Débutant
****
Hors ligne Hors ligne

Messages: 1432

Feel Alright

seanpaul223@live.fr
Voir le profil WWW
« Répondre #16 le: Juillet 28, 2010, 16:35:49 »

Pas de problèmes!
En attendant, je récupères ton chipset pour te proposer une technique que je trouve plus simple...A toi de voir ensuite ce que tu désireras employer Clin d'oeil
Journalisée

Programming is binary.You're either 1 or 0
Yonaba
Modérateur
Modérateur
Débutant
****
Hors ligne Hors ligne

Messages: 1432

Feel Alright

seanpaul223@live.fr
Voir le profil WWW
« Répondre #17 le: Juillet 29, 2010, 18:21:00 »

Boilà, je détaille maintenant la solution que je te proposait.

Elle est vraiment très simple à mettre en place.J'ai cependant pris la liberté de modifier légèrement la numérotation des tiles.

Le chipset reste le même, et les tiles sont numérotés de 1 à 9 en partant de la gauche vers la droite sur le chipset.

Dans un fichier en apparté, nommé map.lua, je stocke une carte sous forme de tableau 2D.

Code de 'map.lua'

Code:
map = {
           {1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8},
           {5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7},
             }

Ensuite, dans le fichier principal index.lua, voici ce qu'il y a à faire.

D'abord, nous allons composer une fonction qui se charge de découper le chipset en tiles.Cette fonction retourne un tableau, qui contient des sous tableaux.Chaque sous tableau contient des coordonées x et y correspondant aux coordonnées sur le chipset de chaque tile.

Elle prend en argument le chipset, et la longueur de la tile.

Code:
function setTiles(chipset,tileWidth)
local tile = {}
local n_tile = math.floor(chipset:width()/tileWidth)
    for i=1,n_tile do
    table.insert(tile,{x = (i-1)*tileWidth,y=0})
    end
    return tile       
end


Ensuite, nous allons concevoir une fonction qui dessine la carte en accord avec la table map.

Code:
function drawMap(map,chipset,tileset,tileWidth,tileHeight)
    for y in ipairs(map) do
        for x in ipairs(map[y]) do
        local tileValue = map[y][x]
        screen:blit((x-1)*tileWidth,(y-1)*tileHeight,chipset,tileset[tileValue].x,tileset[tileValue].y,tileWidth,tileHeight)
        end
    end
end

Enfin, il ne reste plus qu'à:

- charger la carte,
- charger le chipset, et le découper,
- afficher la boucle principale

Code:
dofile "map.lua"
local chipset = Image.load("chipset.png")
local tileset = setTiles(Image.load("chipset.png"),30)

while true do
screen:clear()

drawMap(map,chipset,tileset,30,30)

screen.waitVblankStart()
screen.flip()
end



Telecharger
Journalisée

Programming is binary.You're either 1 or 0
Pages: 1 [2]   Haut de page
  Imprimer  
 
Aller à: