Conectar-se

Esqueci minha senha

Últimos assuntos
» colisão de queda após outra colisão dando problema
Ontem à(s) 18:08 por Lighter

» [Duvida] O que aprender
Ontem à(s) 15:32 por Markituh

» BUILD FAILED: Cannot find BUILD.xml
Ontem à(s) 14:50 por ReisBlender

» Nota de esclarecimento - GMBR voltou!
Sex 23 Jun 2017, 20:33 por Willy

» Regras do Fórum
Sex 23 Jun 2017, 19:02 por GMBR

» Retorno da GMBR!!!
Ter 24 Jan 2017, 15:43 por GMBR

» Jogo Dengue HTML
Seg 30 Nov 2015, 16:17 por guga

» Criando IA Simples para inimigos
Qua 25 Nov 2015, 19:22 por DJDAVYD

» Ordenar variavel em ordem decrescente
Sex 28 Ago 2015, 21:09 por Kodained

» Crio Trilha Sonora para Games!
Qui 27 Ago 2015, 13:50 por Isaias Malafaia

» Problema com Colisão
Qui 27 Ago 2015, 12:30 por The_Game

» Quem quer Uma Engine, e de Quê?
Qui 27 Ago 2015, 09:22 por theguitarmester

» [RESOLV]Como adicionar 2 objetos na mesma posição?
Qua 26 Ago 2015, 11:38 por Bhryenno Kelvyn Carlson

» Sistema de porta!!!
Ter 25 Ago 2015, 21:29 por theguitarmester

» Venda de objetos em Inventário - Multiplicado
Seg 24 Ago 2015, 18:33 por AG Hydra

» Atirar na direção certa
Seg 24 Ago 2015, 09:03 por theguitarmester

» Western Duels
Seg 24 Ago 2015, 07:47 por theguitarmester

» Problemas na compilação android
Dom 23 Ago 2015, 23:43 por Zero.

» Dúvida sobre strings, lendo txt
Sab 22 Ago 2015, 20:31 por Pai véi

» Como estabilizar um som
Sab 22 Ago 2015, 19:03 por Isquilo_Roedor

» Janela Modal
Sab 22 Ago 2015, 09:23 por Pai véi

» Sobre instance Creation Code
Sab 22 Ago 2015, 08:39 por Pai véi

» LudumDare #33
Sex 21 Ago 2015, 21:17 por WellingtonBecker

» Como fazer um temporizador
Sex 21 Ago 2015, 19:02 por Isquilo_Roedor

» GMS sempre salva projeto ao compilar?
Sex 21 Ago 2015, 12:32 por Pai véi

Quem está conectado
26 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 25 Visitantes

ReisBlender

[ Ver toda a lista ]


O recorde de usuários online foi de 324 em Ter 05 Out 2010, 13:36

Engine de Texto com sprites para GM LITE

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Engine de Texto com sprites para GM LITE

Mensagem por FishyHatGuy em Qua 27 Jul 2011, 20:27

Decidi postar esta Engine que estou desenvolvendo para o meu jogo afim de otimizá-la e ajudar um pouco aqueles que não tem GM8 PRO, e que, portanto, não podem criar uma fonte personalizada utilizando sprites com a função font_add_sprite.

Foi necessário o seguinte:

1 sample de fonte de KoF (retirada de um add-on de MUGEN), em que todos os char. tem tamanhos iguais (nxn ou nxm, sendo n & m tamanhos fixos em pixels);
1 sprite com uma subimagem pra cada caractere do sample da fonte a ser utilizada;
Tabela ASCII.

*Desenvolvimento e codificação da engine:

~ Create:

Código:
global.Text = "";      // Text to be drawn
global.Draw = false;    // Determines if the text will be draw or not
global.Pos_x = 0;      // Position X of the text
global.Pos_y = 0;      // Position Y of the Text

Todas as variáveis são globais pois você pode precisar delas em qualquer parte do jogo, isso torna tudo mais conveniente, mas pode ser um pouco mais trabalhoso de mexer.

Text = Texto que será escrito.
Draw = Se o texto será desenhado na tela.
Pos_x = Posição inicial X em que o texto será desenhado.
Pos_y = Posição inicial Y em que o texto será desenhado.

~ Draw:

Código:
if global.Draw == true{

    Initial_x = global.Pos_x;

    for (i=0; i<string_length(global.Text); i+=1){
   
        if ord(string_char_at(global.Text,i+1)) == ord("#"){
            global.Pos_y += 8;
            global.Pos_x = Initial_x;
        }
       
        else {
            draw_sprite(Game_Font, ord(string_char_at(global.Text,i+1))-32, global.Pos_x, global.Pos_y);
            global.Pos_x += 8;
        }
   
    }

}

Se Draw == true (Se for desenhado), uma variável (initial_x) pega a posição inicial de X (Pos_x), para todos os caracteres da string (texto) a ser desenhada, verifica se é '#' (No GM, # é quebra de linha), se for, Pos_x = seu valor inicial e Pos_y é acrescido de m. Do contrário, a sprite com o caractere é desenhado e Pos_x é acrescido de n.

Game_Fonte é a sprite com os caracteres.
Os sprites foram organizados do seguinte modo:



Organizando deste modo, a fonte obedece a ordem estabelecida pela tabela ASCII (clique aqui), o que facilita, e muito a programação do código. Pois usa-se muito a função ord que pega um char ou uma string com um único char e retorna seu valor numérico.

*Uso desta engine:

Para usar desta engine é só ter um objeto que declare os dados (Text, Draw, Pos_x e Pos_y), o resto é feito pelo objeto que contém a engine (Eu o nomeei de "Texter").

*Outros detalhes e mais:

Esta engine funciona bem para mostrar textos, entretanto, ainda não codifiquei como destruir um texto caso ele não seja mais desejado (tenho tido problemas com isso). A engine está aberta a qualquer outra modificação.

Quem quiser testar/modificar, aqui tem um link para um exemplinho que eu fiz.

Peço apenas o favor de notificarem qualquer melhoria que puderem fazer na minha engine, ficaria grato! cheers Apenas lembrem-se de que esta engine foi feita para aqueles que não possuem GM PRO, e portanto deve ser modificada pensando nestes e em mim também ;_;

o/
avatar
FishyHatGuy

Data de inscrição : 30/04/2011
Número de Mensagens : 18
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Engine de Texto com sprites para GM LITE

Mensagem por game over em Qui 06 Out 2011, 14:51

muito obrigado por postar vai ser muito útil Cool

Não ressussite tópicos antigos a não ser que seja para tirar uma dúvida.
Trancado.
avatar
game over

Data de inscrição : 13/09/2011
Número de Mensagens : 10
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum