Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Delphi] Criando um Jogo - Parte 3 - Criando um Mapa.


xxXGaleginXxx
 Compartilhar

Posts Recomendados

Eeah, ninguem vai ler nenhum dos tutoriais por que é muito chato e todo mundo ja sabe os comandos, de qualquer jeito, aqui ta a terceira parte, a quarta parte provavelmente nem vai ser postada ;/

 

completar o segundo tutorial ja deixa seu jogo legal, terminar o ultimo tutorial é que vai ajudar muito a sua criação

 

Aqui está como o meu jogo ficou:

 

jogokm.png

 

obs: é claro que, o seu pode estar diferente, isto não importa, só estou mostrando para se você quiser organizar os Timers ,etc...

 

Próximo Tutorial: Colisão.

 

1. Conhecimentos

2. Entendendo o Mapa

3. A função "CriarMapa(etc);"

4. TStringList

5. Como Personalizar

 

❶. Conhecimentos

 

 

Ahá! se achando fodão então hein? não? não importa, se você quer só ler todos os tutoriais, e sim criar os seus jogos, você terá que fazer mais do que apenas ler e completar estes tuturiais, afinal, é um tutorial, e só um monte de texto e não um professor, você tem que estudar, comer beterraba/cenoura... para conseguir fazer seus proprios jogos! o delphi não utiliza a orientação de objetos tão 'INCRIVELMENTE' como Actionscript ou Lua (são linguagens de programação), ou seja, aprender a fazer jogos não vai ser facil, você terá que saber que Shape1.Top := Shape1.Top+1 faz o Shape ir para baixo, enquanto no flash, tudo isto é utilizado projectalmente (Diariamente = a cada dia / Projectalmente = a cada projeto), você lembra-se de fazer algun 'programa' no delphi que utiliza-se este tipo de orientação de objetos? não, né?

 

Bem, de qualquer jeito, você terá que saber o que você quer.

 

Fazer programas

Sempre que for fazer um programa, você terá que ter um MOTIVO, e pior, motivos são mais complicados de serem encontrados do que criatividade, só isto? As pessoas terão medo de baixar e medo de executar, afinal, da para deletar arquivos usando coringas e coisas mais chatas, afinal, um programa acaba deixando o rastro de ser um manipulador do windows, mas, as pessoas só vão baixar por causa disto, além de tudo isto, as pessoas vão ver seu 'codenome' e a primeira coisa que vão pensar é que você é Sério,Nerd,etc...

 

Fazer jogos

Sempre que for fazer um jogo, você terá que ter Criatiidade, coisa que, você pode retirar de Insetos/Animais/Chuva ou até de

 

outros jogos, todo dia que você quiser fazer um jogo so precisara digitar

"Online Games" no google e *Tadam*, aproximadamente 252.000.000 resultados, jogue 3 jogos e poderá criar um jogo sem ter que copiar, as pessoas terão confiança em você, elas não pensaram que, seus Executaveis são inofensivos, porem, não será um profissional, será uma pessoa que diverte as outras, vender jogos é complicado, mas se você for um bom 'criador de jogos', The Sims 3,Final Fantasy 12, será rico, enquanto não tiver 18 anos, as pessoas irão ver seu 'codenome' e a primeira coisa que vão pensar é que você agrada, é genial e, dependendo dos seus jogos, poderão saber mais sobre você...

 

Estou dizendo isto agora por que, os tutoriais anteriores te ensinavam a orientação de objetos e a ter uma certa informação, "Lógica de Programação" e "Orientação de Objetos" devem ser ensinados, você usará para todas as linguagens, todas elas.

 

Falando nisto, Uma linguagen "APENAS" para criar jogos é aceitavel, mas uma linguagem que não dê para fazer jogos, não tem qualidade, primeiro: Não tem condições (If,Then,etc) nem consegue mudar a posição dos objetos em RunTime(SE tiver objetos e não for apenas um arquivo .bat ^^), bem, de qualquer jeito, continue se quiser...

❷. Entendendo o mapa

 

 

Bem, não fui eu que desenvolvi esta técnica, ela foi usada em outra linguagen que eu aprendi, então eu ja usei ela em 3 linguagens, Actionscript,Lua 5.1 e agora, Delphi.

'1111111111';

'1000000001';

'1000000001';

'1000000001';

'1000000001';

'1000000001';

'1000000001';

'1000000001';

'1000000001';

'1111111111';

Usar esta técnica e sempre uma boa idéia se for fazer um TileGame, é possivel colocar até 10 tipos diferentes de tile (quadradinho) com diferentes funções, veja este exemplo:

 

01,01,01,01,01,01

01,00,00,00,00,01

01,00,00,00,00,01

01,00,00,00,00,01

01,00,00,00,00,01

01,00,00,00,00,01

01,01,01,01,01,01

 

Este codigo acima armazena 99 Tiles diferentes com diferentes funções para cada espacinho, tudo que isto precisa e de um executavel/algo que consiga TRADUZIR o código, e isto, é uma coisa muito facil em várias linguagens.

 

Bem, vamos utilizar o primeiro método, afinal, é mais simples e, ao mesmo tempo, nosso jogo não terá mais do que 9 tipos de quadros diferentes (Area Livre,Area Bloquiada,Area Assassina,Area Rápida e Area lenta).

 

De qualquer jeito, vamos continuar, abra o nosso projeto e continue.

 

❸. A função "CriarMapa(etc);"

 

 

Declare esta função:

 

 

{

01}function CriarMapa(am:TStringList):Boolean;

{02}var

{03} l1,l2:Integer; tot:Boolean;

{04}begin

{05}for l1 := 0 to am.Count-1 do

{06} begin

{07} try for l2 := 0 to Length(am[l1]) do

{08} begin

{09} //l1 = Linha - l2 = Coluna.

{10} if am[l1][l2] = '1' then

{11} begin

{12} with TShape.Create(Form1) do

{13} begin

{14} Name := 'shp_block'+inttostr(l1)+'_'+inttostr(l2);

{15} Parent := Form1;

{16} Height := 25;

{17} Width := 25;

{18} Top := l1*25;

{19} Left := l2*25;

{20} Show;

{21} Brush.Color := clBlack;

{22} end;

{23} end else if am[l1][l2] = '2' then begin

{24} with TShape.Create(Form1) do

{25} begin

{26} Name := 'shp_blkill'+inttostr(l1)+'_'+inttostr(l2);

{27} Parent := Form1;

{28} Height := 25;

{29} Width := 25;

{30} Top := l1*25;

{31} Left := l2*25;

{32} Show;

{33} Brush.Color := clRed;

{34} end;

{35} end;

{39} end;

{36} tot := true;

{37} except

{38} tot := false

{40} end;

{41} end;

{42} result := tot;

{43}end;

 

 

agora, vamos até a Explicação, que saco -.-

 

Linha 1: Cria a função CriarMapa, na verdade, declara ela pro delphi.

Linha 2: Declara que as proximas coisas serão as variaveis.

Linha 3: Declara l1 e l2 como numeros e Tot como boolean.

Linha 4: Começo do 1o begin

Linha 5: Cria um loop para cada string na lista de strings "am"

Linha 6: Começa o 2o begin, separando o que esta sobre o efeito do loop da lista

Linha 7: Primeiro o Try, significa que o delphi vai "tentar" fazer as proximas coisas.

Linha 7: Segundo, o loop, cria um loop para as letras das linhas, isto totaliza um loop bidimensional.

Linha 8: Começa o 3o begin, separando o que esta sobre o segundo loop das letras.

Linha 9: Comentário, uma coisa extremamente avançada, desista, você nunca vai intender esta linha XD

Linha 10: Declara uma condição para continuar, se a letra atual for = a "1" então continua...

Linha 11: Diz ao delphi que, tudo que estiver entre este begin e o end, só executara se a condição for verdadeira.

Linha 12: Cria um novo TShape sem variavel para ser usado no Form1.

Linha 13: Você ja sabe.

Linha 14: Coloca um nome ao bloco.

Linha 15: Diz que, o tshape criado será especificamente para o Form1, não para algum Panel ou coisa assim...

Linha 16: Especifica a altura do TShape.

Linha 17: Especifica a largura do TShape.

Linha 18: Especifica a posição Y do TShape, usando uma matematica basica para separar corretamente outros TShapes.

Linha 19: Especifica a posição X do TShape, e etc...

Linha 20: Sei la, coloquei isto para evitar problemas, isto faz com que o TShape seja visivel ;/

Linha 21: Muda a cor do TShape para Black/Preto.

Linha 22: Diz para o delphi parar de falar sobre o novo tshape, ou seja, esquece-lo.

Linha 23: é a mesma coisa da condição da linha 10, so que com o 2.

Linha 33: Muda a cor do TShape para Red/Vermelho.

Linha 37: Lembra do Try? Try=Tentar, except é quando da algum erro, o codigo começa a usar o que esta sobre o except, que é só uma linha.

Linha 38: e akela variavel para definir o valor do resultado, fiz isso por que eu me do melhor com funções...

Linha 43: End, fim, define o fim da função ;/

 

Ufa, depois desta função, só precisa aprender sobre TStringList para criar mapas.

 

❹. TStringList

 

Agora que você tem a função 100% foda que eu mesmo fiz, tdo que precisa é manipular um stringlist e enviar e tadam!

 

Vamos, va até o evento Oncreate, que esta assim:

procedure TForm1.FormCreate(Sender: TObject);

begin

imgs := 1;

gravf := 1;

sgame := true;

end;

 

 

e mude para:

 

procedure TForm1.FormCreate(Sender: TObject);

var map:TStringList;

begin

map := TStringList.Create;

map.Add('1111111111111');

map.Add('1000000000001');

map.Add('1000000000021');

map.Add('1000000000221');

map.Add('1111111111111');

CriarMapa(map);

imgs := 1;

gravf := 1;

sgame := true;

end;

 

 

 

Apos declar que map é um novo TStringList (após o primeiro begin), você pode personaliza-lo bastante para adicionar em seu glorioso mapa.

 

fez tudo isto? aperte F9, OPA! estes blocos pretos e blocos vermelhos não estavam aqui! xD

 

no comments...

 

❺. Como personalizar o

 

 

Você tem que saber personalizar se quiser que seu jogo tenha sentido.

sabe na linha 21 da minha função? mude para clWhite,clRed,clGreen, cores, você aprende sozinho a manipulares coisas basicas...

 

olha um exemplo de mapa:

 

map := TStringList.Create;

map.Add('1111111111111');

map.Add('1000000000001');

map.Add('1000000000001');

map.Add('1000000000001');

map.Add('1111111111111');

 

outro exemplo:

 

map := TStringList.Create;

map.Add('111111111111111');

map.Add('10000000000000111');

map.Add('10002200000000001');

map.Add('10022000000000001');

map.Add('10220000100010111');

map.Add('100000101001101');

map.Add('111111111111111');

 

Você pode aumentar a Largura em algumas partes, adicionar linhas, fazer o que você quiser!

claro, se você adicionar letras e outros numeros alem de 1 e 2, ele será interpretado como o numero 0.

 

Antes do fim (lol), se tiver o SHP_CHAO, um TShape para nada, delete-o, se não tiver, tudo bem, era a parte adicional do tutorial anterior.

 

Bye, até o proximo tutorial!

 

Créditos:

100% Feito por Gravyerd, nenhum tutorial ou ajuda utilizada.

 

Download do produto final:

 

É necessário se cadastrar para acessar o conteúdo.

 

 

Gostou? não coloquei minha função "function AtivarInteligencia_Artificial(BotãoThanks);" então você vai ter que clicar no botão manualmente!

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.