Aula 3 - Puzzle - Sokoban - Modo 1

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

Qualidade Aula 3 - Puzzle - Sokoban - Modo 1

Mensagem por Kevin em Sex 06 Ago 2010, 22:35

Puzzle - Sokoban - Modo 1

Olá Pessoal, Olha eu Aqui Denovo Happy... Voltando Minhas Aulas Quase Extintas OO... mais estou aqui Happy.
Bem... Chegou a Renovação que Havia Dito à Vocês... Mais qual é Kevin? é simples. Viu que o Modo de Nossa Nova Aula é Puzzle... OK.... e por inquanto Falaremos do Sokoban... certo... e ensinarei fazer de 1 Modo... certo...
Então, Essa Serã Umas Das Grandes Renovações Happy... Mais Como Assim Kevin?
Bem... Praticamente Todos os Estilos de Jogos Terão Outros Modos, Não Exactamente Sempre Número... EX:.
Modo 1
Modo 2

Mais Também com Especificações mais exactas... EX:.

Modo Tiro
Modo Tiro Limite Balas

e outra renovação é que a cada início de 1 Modo da Aula.. ex... aqui é aula 3... iniciarei com essa aula a aula 3 Very Happy... criarei um tópico paralelo da aula 3 para darem suas opniões, pedirem mais modos de jogos e darem sujestões, espero que gostem da novidade.

VALE LEMBRAR Q NEM TODOS OS JOGOS PEDIDOS SERÃO ATENDIDOS.. GRATO Happy



Mais Sobre a Aula:

Nível de dificuldade: iniciante.
Requerimentos:
Versão do GM: 6, 7 ou 8 - Pro ou Lite - testado inicialmente no GM 8 PRO



Inicializando a Aula

É Bom Você Ter Lido as Aulas Anteriores, Pois Inicialmente Usaremos Bastante esses Comandos Very Happy
Se Vc Quiser Criar uma Pasta Exclusiva para a Aula 3 é bom, pois poderá atualizações mais para frente
EX:. Quando Tiver na Aula 9 Poderei Adicionar uma aula na aula 3... é como se fosse um pack esses outros modos

Bem é isso... então vamos lá


SOKOBAN - MODO 1


Bem, Para Iniciarmos, Nós Usaremos bastante Recursos da 1ª Aula, Mais Iremos dar uma recaptulada aqui com os códigos
é EXPRESSAMENTE q em qualquer tutorial ou Aula que tenha um código pronto e tenha a explicação do código vc leia a explicação
para entender melhor o Código e assim manusear Melhor o GML mais Rápido

Vamos Para as Sprites

SPRITES:

Criaremos Inicialmente 8 Sprites

elas serão(na ordem):

spr_direita
spr_baixo
spr_esquerda
spr_cima
bloco
bloco_arrasta
bola_inativa
bola_ativa


Estes Terão que ser respectivamentes assim:

spr_direita - Player para a Direita
spr_baixo - Player para Baixo
spr_esquerda - Player para a Esquerda
spr_cima - Player para Cima
bloco - Bloco/Parede
bloco_arrasta - Bloco/Caixa de Arrastar Pela Fase
bola_inativa - Bola/Ponto q tem que por a caixa em cima
bola_ativa - Bola/Ponto q tem que por a caixa em cima de OUTRA COR


AS PROPRIEDADES/LIMITES/DEFINIÇÕES DELES SÃO:

EXPRESSAMENTE Recomendado que Seja "Todos" de 16X16 de TAMANHO

_________________________________________________________________________

OBJETOS:

OK Vamos Agora para os Objetos... Sim... chegamos Finalmente Nessa Parte cheers

Então Ditarei Como Fiz à Cima em Ordem os Objetos... para manter uma Ordem e para que agente se entenda melhor Happy

obj_player
obj_bloco
obj_ponto
obj_ponto2
obj_parede


Pronto Crie Todos Happy....

Agora Iremos de 1 em 1 E Faremos Todos os Códigos OO... UAU Kevin... mais ta sendo muito mal nessa aula XD... to mesmo Happy... apartir dessa aula acabou a mordomia Smile...Irei Explicar Bem Resumidamente... e se não intender é só postar aqui e depois explicarei melhor Happy

obj_player:

Coloque Qualquer Sprite do Player, Pra Cima, Pra Baixo, Tanto Faz

STEP:
Código:
if !instance_exists(obj_ponto){show_message("ACABOU OS PONTOS!! EBAAAA");room_goto_next();}
if keyboard_check_pressed(vk_right){x+=16;sprite_index=spr_direita}
if keyboard_check_pressed(vk_down){y+=16;sprite_index=spr_baixo}
if keyboard_check_pressed(vk_left){x-=16;sprite_index=spr_esquerda}
if keyboard_check_pressed(vk_up){y-=16;sprite_index=spr_cima}

EXPLICAÇÃO BÁSICA: Aqui Temos Uma Verificação se o obj_ponto; vemos se existe Nenhum na Fase, Se Isso Acontecer Acontece que Aparece Uma Mensagem e Muda de Fase

Mais qual é o Códgio?

if !instance_exists(obj_ponto){show_message("ACABOU OS PONTOS!! EBAAAA");room_goto_next();}

esse ae de cima Happy

mais como ele sabe de tudo isso?

bem como visto anteriormente o IF ele Verifica se Algo esta acontecendo, ou seja, ele faz o jogo se "questionar".

Já o ! antes do instance_exists(obj_ponto), ele Significa NOT ou Não em Português, então assim podemos ver que ele esta negando algo, então temos um questionador e um negador no código

o instance_exists(obj_ponto) ele "vê" se Existe na room o objeto indicado, ele só funciona com o IF, com o Questionador, o instance_exists(obj_ponto) ele verifica se há esse obj na fase... e para verificar se não há? SIMPLES para isso que temos o negador no códgio, ele inverterá o instance_exists(obj_ponto), ao invés dele ver se existe o objeto indicado, ele verificará se não existe, então até agora temos o questionador, e Negador e o Verificador.

o { Serve Para Espaçar um Código, para verificar até onde a ação será executada se caso o verificador ser ativo,e consequentemente tem o } para delimitar o final da ação.

show_message("ACABOU OS PONTOS!! EBAAAA") ele faz criar uma mensagem de "Janela" Parecida com aquela do Windows, Mais do Próprio GM, uma personalizada, o "ACABOU OS PONTOS!! EBAAAA" é o texto que irá aparecer.

; serve para espaçar os códigos, deixar mais organizado e até prevenir alguns Bugs :/...

room_goto_next() esse incrivelmente serve para passar de room Razz... sem precisar usar somas EX:. room_goto(room+1)... ele faz o trabalho todo sózinho, mas... ele apenas avança para a próxima room :/... mais é ótimo para jogos mais simples Very Happy


keyboard_check_pressed na aula 1 vemos o keyboard_check q me lembre Razz... não vimos esse, esse é basicamente a mesma coisa, quando comecei a usar o GM eu não via diferença... mais há e muita OO... o keyboard_check_pressed é ativado um evento ou ação quando for preciosada, sendo assim contado apenas no Impacto, não até quando vc segurar, darei o exemplo do teclado de vc digitando, EX:. quando vc aperta 1 vez e solta "rapidamente" ele escreve a letra apenas uma vez, mas segurando ele escreve várias vezes a mesma ação.... o mesmo é a diferença entre os dois... keyboard_check_pressed ele é apenas ativado uma vez, só pode ser ativo denovo de caso soltar o botão e apertar denovo, já o keyboard_check ele é ativo em quando vc tiver precionando o botão, e o keyboard_check_released (só para complementar) é o mesmo mais é ao soltar o botão, vc pode ficar segurando o botão mais nada acontece, mais quando vc solta a ação é ativada

vk_right, vk_down, vk_left, vk_up, como visto na aula 1, eles são representados pelas setas do Teclado Happy... cada um respectivamente com o seu nome. EX:. Left = Esquerda/Seta para a esquerda.

x, y São as Coordenadas do Objeto, ou seja, a posição x é a posição dele em horizontal e y em vertical, ver mais explicações sobre na aula 1 Happy...

sprite_index Muda a Sprite Indicada, No Caso Não há muito oq dizer, esse código apenas muda a figura do Objeto para a identificada na frente do =... EX:. sprite_index=spr_cima //TROCARIA A SPRITE PARA O CHAR PARA CIMA
__

Colisão com obj_bloco
Código:
if place_meeting(x+16,y,obj_parede){x=xprevious;}
if place_meeting(x,y+16,obj_parede){y=yprevious;}
if place_meeting(x-16,y,obj_parede){x=xprevious;}
if place_meeting(x,y-16,obj_parede){y=yprevious;}
if place_meeting(x+16,y,obj_bloco){x=xprevious;}
if place_meeting(x,y+16,obj_bloco){y=yprevious;}
if place_meeting(x-16,y,obj_bloco){x=xprevious;}
if place_meeting(x,y-16,obj_bloco){y=yprevious;}

EXPLICAÇÃO BÁSICA: Aqui Temos Verificação de que Lado estamos Colidindo com o obj_parede, dependendo da posição, uma ação... mais como?

place_meeting ele verifica em q "distância" ele ta colidindo, um exemplo: if place_meeting(x+16,y,obj_parede), aqui ele verifica se o player no caso tiver COLIDINDO 16 pixels antes do obj_parede ele ativa uma ação
xprevious é a posição do x anteriormente dessa posição (Creio que verificado por tempo Happy), mesmo com o yprevious

Colisão com obj_parede
Código:
x=xprevious
y=yprevious


EXPLICAÇÃO BÁSICA: esse códgio é simples, e não darei muita explicação por falar para que serve à cima, mais ele faz com que o player não passe da parede

__________________________________

obj_bloco:

Coloque a Sprite bloco_arrasta nele

Colisão com obj_player
Código:
x+=other.x-other.xprevious
y+=other.y-other.yprevious

EXPLICAÇÃO BÁSICA: é uma soma de Posições, para fazer com que o bloco se Mova... Incrivel neah? bem... só isso faz já o bloco se mover, se quiser dar uma olhada é só por o player e uns blocos desse na room Happy. mais como isso funciona? explicarei com números ficticios

pensamos que other.x fosse = a 32
other.xprevious fosse = a 16

se subtrairmos isso teremos o nº 16 Very Happy... então o bloco se moveria 16 pixels para a mesma posição que o player Happy
o mesmo com o y+=other.y-other.yprevious

darei exemplo com números maiores

other.x é igual a 216
e other.xprevious é igual a 200

o resultado subtraindo eles seria 16 OO... ta na cara neah? mais o bloco se moverá 16 pixel para o mesmo lado que o player Happy...


Colisão com obj_bloco e Colisão com obj_parede
Código:
x=xprevious
y=yprevious

__________________________________

obj_ponto:

Coloque a sprite do bola_inativa

Colisão com obj_bloco
Código:
instance_create(x,y,obj_ponto2)
instance_destroy()

EXPLICAÇÃO BÁSICA: esse códgio é simples, já devem saber oq é... mais explicarei àqueles que não sabem
instance_create(x,y,objeto) ele cria um novo objeto na fase, o objeto criado é o especificado no 3 argumento (3ª coluna) nas posições x e y ali... no caso do código ele criará o obj_ponto2 na posição x e y dele Happy.... ou seja no mesmo lugar Very Happy
instance_destroy() ele Destroy o Objeto, essa é a parte mais triste, ele criou um objeto mais ele se sacrificou... mais lembra do código do STEP do player? isso é importante acontecer :/
__________________________________

obj_ponto2:

Coloque a sprite do bola_ativa

CREATE

Código:
alarm[0]=1

EXPLICAÇÃO BÁSICA: aqui esse código ativa o alarme 0 com tempo 1 de STEP Happy... é o tempo mais curto q se pode colocar no alarm oO... isso é bom para ativar ações rápidas como por exemplo na situação à seguir, para que não ocorra Bugs é feito isso Happy

Alarm 0

Código:
if !place_meeting(x,y,obj_bloco){instance_create(x,y,obj_ponto)
instance_destroy()}
alarm[0]=1

EXPLICAÇÕES EM TODA AULA À CIMA Happy

________________________________________________________

PRONTO!!!!! Finalmente Acabou Happy

Cansativa a Aula? Sim XD.... mais aprendeu alguma coisa? espero que sim oO...
Coloque Todas as coisas na room do jeito que quiser e pronto.. seu sokoban personalizado já pode ser criado sem problemas Happy
Qualquer um pode fazer um agora Happy

Aqui Acaba Mais Uma Aula, Como Dito à Cima esse é apenas 1 Modo de Fazer o Sokoban, Poderá Ter Mais Como Poderá Não Ter... Tudo Depende da Minha Imaginação e do Apoio de Vocês Very Happy... Aulas 3 podem surgir mais à frente mesmo que tenha uma aul mais avançada já iniciada? SIM.. pois da aula 3 à aula 10 são modos de jogos, e não daria para falar de todos em 1 aula só Very Happy... e assim pode-se aprender mais cada vez mais Very Happy




EXERCÍCIOS formado


- Crie Fases Legais e Dificeis mais não impossiveis de passar

- faça suas sprites novamente se não achar que estão boas... e tente melhora-lás

- Adicione mais sistemas no Jogo, Dinheiro, Chaves Portas, VOCÊ PODE! pois foi vc q Criou!

(APENAS LEMBRANDO PARA DEIXAR UM BACKUP DO JOGO PARA PRÓXIMO MODO!!! SE TIVER UM NOVO MODO DO SOKOBAN, FATALMENTE SERÁ USADA ESSA ENGINE Happy)



COMENTE SOBRE A AULA E DEIXE SEU COMENTÁRIO SE GOSTOU OU NÃO
FALE OQ VC ACHA QUE DEVE MELHORAR
RECLAME, DE SUGESTÃO É SEU DIREITO surpreso2

Bem Essa Foi A Terceira Aula
Já Calculava que Ela Iria Ser Canssativa Assim Mesmo :/

Mas Mesmo Assim... Com Dedicação Você Aprenderá Mais

AGRADEÇO PELA COLABORAÇÃO DE TODOS

Té + Pessoal

Espero que Gostem Razz

(SEM ENGINE DA AULA - POR FALA DE TEMPO PARA HOSPEDAR) zangado


Última edição por Kevin em Qua 27 Out 2010, 14:53, editado 4 vez(es)

Kevin

Ranking : Nota C
Número de Mensagens : 1166
Idade : 22
Data de inscrição : 14/11/2008
Notas recebidas : C - C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://www.programaCODM.webs.com/

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 3 - Puzzle - Sokoban - Modo 1

Mensagem por Dancity em Sex 06 Ago 2010, 22:45

É isso ae kevin ;D Continue com as aulas. São muito boas para iniciantes.
Não é aquela aula que o cara só põe código e nem fala direito.
É do tipo que está já toda "exposta" com tudinho explicado

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 3 - Puzzle - Sokoban - Modo 1

Mensagem por Luan Maia em Sex 06 Ago 2010, 22:49

Ótimo aula, ajudará muitas pessoas aqui no fórum, está muito bem explicado. xD

flw

Luan Maia

Ranking : Sem avaliações
Número de Mensagens : 399
Idade : 20
Data de inscrição : 01/07/2010
Notas recebidas : D+C+C+D
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://blogluanmaia.blogspot.com.br/

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 3 - Puzzle - Sokoban - Modo 1

Mensagem por Super Games em Sab 07 Ago 2010, 10:23

Otimo tuto cara!
Ficou bem legal e fácil de entender. xD
Agurdo mais tutos de você.

Super Games

Ranking : Nota D
Número de Mensagens : 2704
Idade : 18
Data de inscrição : 10/06/2010
Notas recebidas : D
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 3 - Puzzle - Sokoban - Modo 1

Mensagem por Kevin em Sab 07 Ago 2010, 14:38

Dancity escreveu:É isso ae kevin ;D Continue com as aulas. São muito boas para iniciantes.
Não é aquela aula que o cara só põe código e nem fala direito.
É do tipo que está já toda "exposta" com tudinho explicado

é sim Razz... vo tentar explicar o máximo possivel... tentarei sempre explicar todo o código, todos os detalhes Razz... ta certo que no 1º código fico um texto enorme OO... mais darei um edit para ficar mais legal para ler Very Happy... mais só lembrando ao pessoal que eu explicarei mais poucas vezes, então é bom sempre ler as aulas continuamente (todas... pelo menos o modo 1 de casa aula) para que vc saiba oq vc esta a fazer Happy

FLWs e VLW Dancity Very Happy

Luan_Maia escreveu:Ótimo aula, ajudará muitas pessoas aqui no fórum, está muito bem explicado. xD

flw

rsrs... é Very Happy... VLW Luan Happy

Super Games escreveu:Otimo tuto cara!
Ficou bem legal e fácil de entender. xD
Agurdo mais tutos de você.

Happy... q bom que ficou fácil de entender Very Happy... logo postarei mais assim q possivel :/

bem é isso pessoal... FLWs.. té + ae Happy

flw

Kevin

Ranking : Nota C
Número de Mensagens : 1166
Idade : 22
Data de inscrição : 14/11/2008
Notas recebidas : C - C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://www.programaCODM.webs.com/

Voltar ao Topo Ir em baixo

Qualidade Re: Aula 3 - Puzzle - Sokoban - Modo 1

Mensagem por Conteúdo patrocinado Hoje à(s) 15:55


Conteúdo patrocinado


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