GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Servidor de Discord do fórum?
por Super Games Ontem à(s) 01:27

» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42


Engine de Texto com sprites para GM LITE

2 participantes

Ir para baixo

Engine de Texto com sprites para GM LITE Empty Engine de Texto com sprites para GM LITE

Mensagem por FishyHatGuy 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:

Engine de Texto com sprites para GM LITE Font_Sprite_Example

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/
FishyHatGuy
FishyHatGuy

Data de inscrição : 30/04/2011
Reputação : 1
Número de Mensagens : 18
Prêmios : Engine de Texto com sprites para GM LITE Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Engine de Texto com sprites para GM LITE Empty Re: Engine de Texto com sprites para GM LITE

Mensagem por game over 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.
game over
game over

Data de inscrição : 13/09/2011
Reputação : 0
Número de Mensagens : 10
Prêmios : Engine de Texto com sprites para GM LITE Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos