Ir ao conteúdo
  • Cadastre-se

C Movimentação de personagem - Bitmap com Allegro


erique

Posts recomendados

Ao invés de usar Sleep() com o winalleg.h (windows.h do allegro), usa a função rest() do allegro, ai fica independente da plataforma (Linux/Windows)

 

Lembrando que se usar o windows.h direto da problema de conflito entre o Allegro e a Windows API, elas usam a mesma estrutura de nomes em muitas funções.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Entendi @Benjamin Breeg , tinha usado ali o Sleep por que tava muito rápido, ai também poderia ser usado o clear_keybuf() pra apagar as antigas entradas e dar tempo ao usuário ver a opção.

Essas imagens ai não são do jogo, é apenas para testar, se quiserem posso fazer um pixel art, e criar background, interface, etc. 

E ainda vocês precisam decidir se o mapa vai ficar no main.c, ou vamos começar a montar a estrutura para mapa em arquivos.

Também está faltando a lógica de items, mobs, hp, atributos, etc.

Só dando as sugestões para o jogo...

 

Também ta na hora de começar a separar em headers kkk dnv

Link para o comentário
Compartilhar em outros sites

@TYSQUARE89 Não consegui de forma alguma fazer o seu código rodar.

 

Não encontrei como posso transformar essa parte aqui para rodar no windows.

struct MenuObject{
	private:
		//Váriaveis principais
		mItem **items;     // itens do menu
		int count;    	  // contagem de itens

		//Selector de item
		BITMAP *sel_buffer; // buffer da imagem
		char *selector_img; // imagem do seletor
		int selector_id;    // para onde o seletor esta apontando
		int dist_sel_x;     // distancia da imagem do item, use 0 para ficar ao lado
	public:
	MenuObject() {
		count = 0;
		items = NULL;
		sel_buffer = NULL;
		selector_img = NULL;
		selector_id = 0;
		dist_sel_x = 0;
	}

Alguém conseguiu?, consegue mandar o código pra ver como fica.

 

 

Menu - error.zip

adicionado 4 minutos depois

@Benjamin Breeg @TYSQUARE89

Em 06/10/2017 às 18:30, TYSQUARE89 disse:

Entendi @Benjamin Breeg , tinha usado ali o Sleep por que tava muito rápido, ai também poderia ser usado o clear_keybuf() pra apagar as antigas entradas e dar tempo ao usuário ver a opção.

Essas imagens ai não são do jogo, é apenas para testar, se quiserem posso fazer um pixel art, e criar background, interface, etc. 

E ainda vocês precisam decidir se o mapa vai ficar no main.c, ou vamos começar a montar a estrutura para mapa em arquivos.

Também está faltando a lógica de items, mobs, hp, atributos, etc.

Só dando as sugestões para o jogo...

 

Também ta na hora de começar a separar em headers kkk dnv

 

Consegui limpar o código mais um pouco, porque a coisa tava ficando desorganizada já dnv kk.

 

O main está clear agora.

 

O mapa foi reduzido à somente o que ele vai mostrar.

Testando - Forum.zip

adicionado 5 minutos depois

Sobre separar em arquivos, acho interessante a ideia.

 

Seria um arquivo próprio pro mapa exemplo?, assim ele nem fica aparecendo no principal.

 

Sou iniciante em C, nunca mexi com arquivos próprios ainda.

adicionado 12 minutos depois

Agora explicando o vislumbre da versão final até agora pensado.

 

O personagem inicia exatamente onde ele está agora.

 

O objetivo dele é atravessar o mapa é chegar a saída, onde está indicando abaixo.

 

I1TBUjMmQ4_XvJKT3KUkyg.png

 

Porém terá alguns obstáculos, como outros digamos "monstros" andando no mapa aleatoriamente. 2 ou 3 (igual pacman se for para comparar).

 

Porém também terá um tempo para chegar nessa saída, sendo que terá também itens no mapa que servirão para aumentar o tempo restante para sair.

 

Sendo também imprecisável que pegue pelo menos uns 2 itens, pra sair, ele pode desbloquear a porta, ou algo do gênero.

 

é também ele não conseguirá chegar na saída com o tempo inicial que ainda não está definido, por isso a importância de pegar os itens.

 

Também terá 2 sistema de rankings, sendo um deles por menor tempo terminado a fase, é o outro pela quantidade de pontos feitos.

 

Na saída, dará uma opção para continuar em um novo mapa, com os pontos atuais, ou finalizar o game.

 

Isso é o que temos até agora, ideias são bem vindas, mas claro, um passo de cada vez.

adicionado 14 minutos depois

--------

Agora que temos um mapa construído, seria interessante focar na parte do menu, o fechar que ainda ta bugando (já eu falo mais pra baixo), dividir em arquivos o game (sugestão acho), usar a função time do allegro pra ser o sistema de tempo que descrevi a cima.

adicionado 15 minutos depois

--------------------------

2 bugs que notei.

 

O botão de fechar a jenela está acionando somente quando abre o menu jogar, e também não fecha, só habilita mesmo.

 

Outro bug que encontrei é que, o jogo não fecha mesmo com o esq, ele meio que esconde a janela, o processo dele ainda continua rodando em segundo plano, tanto com que no gerenciador de tarefas (windows), ele está aberto.

adicionado 16 minutos depois

@TYSQUARE89 @Benjamin Breeg Desculpa se ficou muito grande, gostaria de detalhar no máximo possível, sempre que posso.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

9 horas atrás, TYSQUARE89 disse:

Vou criar uma versão melhor, e no windows, quando estiver pronto posto aqui.

Naquele código lá que você quer mudar pra windows, não precisa muda-lo, ele já é igual ao windows.

 

ok, é porque no meu codeblocks ele não reconhece os comandos de "private:" e "public:". e como fazem parte do menu pelo que percebi, sem eles atualmente ele não reconhece os comandos posteriores.

Link para o comentário
Compartilhar em outros sites

@erique como assim não reconhece o private e public lol, tá atualizado ele? Segue a versão com arquivos de menu separado: lembrando que essa versão é livre pra editar, etc...

 

ANEXO: MENU.ZIP

 

p.s: ta pra windows, feito no codeblocks, com allegro 4

 

--------------

Para quem quiser criar/alterar um menu precisa de 4 etapas:

1 - Criar objeto          - class MenuObject x;

2 - Adicionar items   -  x.additem("nomedoarquivo_imagem", acao_char, x, y)

   - Adicionar seletor -  x.addeseletor('nomedoarquivo_imagem", item_inicial, espaco_do_item);

 

3 - Desenhar menu - enviar x para menu_draw:    menu_draw(&x);

4 - Enviar menu para função de loop/lógica:

     - essa eu criei personalizada, mas o padrão é alterar as seguinte's coisa's:

     a) na função menu_action, precisa coincidir com x.additem em acao_char, etapa 2.

---------------

 

 

BUGS ENCONTRADOS:

- No inicio ele vai para o 2 em vez do 1, ainda não encontrei o problema.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@TYSQUARE89 Tava sim, enfim.

 

No meu windows 7 pelo menos, ele trava, tentando executar normalmente.

arGqvz34SRmlsYJCUGxRhw.png

 

Porém, testei com o modo de compatibilidade, com o windows 7 ou windows xp, e deu certo :/

 

OyeqpFx3Q1KQMiFzzRn9tA.png

 

Já eu testo pegando o código do menu e tentando implementar no código que roda aqui, e posto o resultado.

adicionado 0 minutos depois

Executavel menu.zip

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!