ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Função Random e Array

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
xprorush
Novato
Novato


Registrado: Sexta-Feira, 16 de Julho de 2010
Mensagens: 51
Localização: Leme

MensagemEnviada: Seg Set 06, 2010 1:37 pm    Assunto: Função Random e Array Responder com Citação

Galera, gostaria de aprender como embaralhar 8 TImages, vou utilizar essa função mesmo ? Alguem pode me detalhar e ensinar como fazer.

Muito Obrigado a todos que colaborarem.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Morto
Profissional
Profissional


Registrado: Quarta-Feira, 2 de Fevereiro de 2005
Mensagens: 520
Localização: Belo Horizonte, MG

MensagemEnviada: Seg Set 06, 2010 3:15 pm    Assunto: Responder com Citação

Explica melhor.

Você tem 8 TImages e quer sortear as IMAGENS que vão aparecer neles?

Se for assim, Define algo assim.

1 = image1.jpg
2 = image2.jpg..

e por ai vai.

Ae você sorteia o numero e carrega a imagem correspondente.
_________________
André Rodrigues
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
xprorush
Novato
Novato


Registrado: Sexta-Feira, 16 de Julho de 2010
Mensagens: 51
Localização: Leme

MensagemEnviada: Seg Set 06, 2010 6:11 pm    Assunto: Responder com Citação

Bom dessa maneira, no formulario tenho 8 Timages com imagens diferentes, como um jogo da memoria. A cada reinicio de jogo as cartas deveriam aparecer em lugares totalmente diferentes.
Espero ter especificado melhor.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 9318
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Set 07, 2010 6:15 pm    Assunto: Responder com Citação

bem amigo tente isto aqui:


Código:

var
   I, Num: Byte;
   Cartas: Array[1..8] of Byte;
   RND, Delimeter: String;
begin
     Memo1.Clear;
     Delimeter := '';
     Randomize;
     for I := 1 to 8 do
     begin
          Num := Random(9);
          if ((Pos(IntToStr(Num), RND) > 0 ) or (Num = 0)) then
             while (not ((Pos(IntToStr(Num), RND) = 0 )) or (Num = 0)) do
                Num := Random(9);
          RND := RND + Delimeter + IntToStr(Num);
          Delimeter := ', ';
          Cartas[I] := Num;
          Memo1.Lines.Add('Número: '+ IntToStr(Num));
     end;





bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
xprorush
Novato
Novato


Registrado: Sexta-Feira, 16 de Julho de 2010
Mensagens: 51
Localização: Leme

MensagemEnviada: Ter Set 07, 2010 11:02 pm    Assunto: Responder com Citação

Johnny gostaria de embaralhar essas imagens aqui...



Uploaded with ImageShack.us

Gostaria de saber como fazer para embaralhar essas imagens, porque estou a desenvolver um jogo onde o usuario relaciona a palavra com a imagem, entao para nao ficar um jogo monotono, preciso que fique circulando essas imagens para que cada vez que for clicado na palavra correspondente ou iniciado o sisteminha, as imagens apareçam em lugares diferentes.

Obrigado mesmo assim...

Boa noite ! Smile
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 9318
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Set 08, 2010 12:50 am    Assunto: Responder com Citação

Vc pode usar a mesma construção de código para sortear as imagens, independe da quantidade, lembrando que ramdomize + random(x) geram números começando de 0...

uma pergunta... vc é de portugal???



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
xprorush
Novato
Novato


Registrado: Sexta-Feira, 16 de Julho de 2010
Mensagens: 51
Localização: Leme

MensagemEnviada: Qua Set 08, 2010 10:19 am    Assunto: Responder com Citação

Entendo, se for possivel, poderia explicar como funciona essa função?
Não compreendo o que você montou, tentei por no event active do form este código alterando apenas as linhas do memo1 porque não tenho um, mas não aconteceu nada, acredito que para vc seja facil solucionar, lembre-se que não sei como efetuar esse tipo de operação...

Não sou de portugual, nasci e moro no Brasil.
Obrigado outra vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 9318
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Set 08, 2010 11:02 am    Assunto: Responder com Citação

Geralmente vc cria imagens da seguinte forma, carregando-as num array:

Imagem1.bmp, Imagem2.bmp, Imagem3.bmp...imagem(n...), pode-se carregar num array de bitmaps, sendo liberadas ao destruir o formulário...

Código:

veja um exemplo que fiz uma vez:

var
HMS: Array[0..9] of TJpegImage;

     if DirectoryExists(BitmapsRel) then
     begin
          // Inicia variáveis do relógio
          // Números do Relógio
          for I := 0 to 9 do
          begin
               HMS [I]:= TJpegImage.Create;
               HMS [I].LoadFromFile(BitmapsRel+'N'+IntToStr(I)+'.jpg');
          end;
     end
     else
     begin
               Application.MessageBox('Lamento, Esta Aplicação irá terminar, pois os arquivos necessários '+#13+#10+
                                      'à interface do relógio não foram encontrados.', 'ERRO - Aviso do Sistema ', MB_ICONSTOP);
               Application.Terminate;
     end;





em ondestroy:
Código:

     // Liberação das variáveis Gráficas
     for I := Low(HMS) to High(HMS) do
         FreeAndNil(HMS[I]);
end;


Código:

Para desenhar as imagens eu uttilizo canvasdraw, no caso eu desenhava no formulário, utilizando assim evita-se o flicker, já que no meu a intenção era animar as imagens, no caso um relógio que utilizava, alguns bitmaps para gerar a renderizaçõa do relogio...

No seu caso como vc tem X imagens pode criar numeros aleátorios e preencher as oito como vc quer, como não sei quantas imagens são, fica difícil especular, mas com o que te passei no outro post...

vamos supor que vc tenha 50 imagens, vc pode gerar os 8 números aleatórios e carregar as imagens, exemplo:

var
Bitmaps: array[1..50] of tbitmaps; // exemplo carregando todas ou
Bitmaps: array[1..8] of tbitmaps; // exemplo
NumBMP: array[1..8] of byte;
Neste caso vc nem precisa carregar todas fazendo um looping nas imagens ou carregar somente as que vc usará...
gera-se os números aleatórios, no caso 8 números entre 1 a 50, lembrando que random() e randomize parte de zero...

          for I := Low(HMS) to High(HMS) do
          begin
               HMS [I]:= TJpegImage.Create;
               HMS [I].LoadFromFile(BitmapsRel+'N'+IntToStr(NumBMP[I])+'.jpg');
          end;
Carrega-se e vc pode utilizar canvasdraw caso utilize animação ou mesmo Assign() utilizando o timage....

Não sei se deu para entender a minha proposta, mas espero que vc consiga ter uma ideia de como fazer através dela...



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
xprorush
Novato
Novato


Registrado: Sexta-Feira, 16 de Julho de 2010
Mensagens: 51
Localização: Leme

MensagemEnviada: Qua Set 08, 2010 12:59 pm    Assunto: Responder com Citação

Não consigo entender, esse é meu primeiro projeto sobre jogo, simples mais complexo, desde quando uso o delphi, vb 2008, html foram sempre para acesso em banco de dados, conheço nada das classes do delphi, muito pouco sobre propriedades, não seria possivel ver isso funcionando para que eu colocasse na minha aplicação? Realmente deu um nó Smile

A minha intenção é girar essas imagens, para dificultar um pouco e não deixar monotono o jogo, apenas 8 imagens, e entra um novo form com mais 8, e assim por diante, pelo meu entender seria mais facil para fazer isso e nao teria deixaria o jogo tão pesado, porque uma vez ouvi que deixaria muito pesado carregar imagens em um array, mais eu quer ofazer assim não consigo imaginar outra forma...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
felipecaputo
Colaborador
Colaborador


Registrado: Quinta-Feira, 13 de Mai de 2010
Mensagens: 1719
Localização: Florianópolis / SC

MensagemEnviada: Qua Set 08, 2010 1:17 pm    Assunto: Responder com Citação

Amigo, te passei isso quase pronto por aki: olha para vc ver

http://www.activedelphi.com.br/forum/viewtopic.php?t=57699&highlight=
_________________
if Post.State = psResolvido then
Post.Caption := Post.Caption + ' [RESOLVIDO]';
_____________________________________________
O único homem que está isento de erros, é aquele que não arrisca acertar. Albert Einstein
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 9318
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Set 08, 2010 1:23 pm    Assunto: Responder com Citação

Hoje os computadores sao bem parrudos, nao fica pesado, daria para colocar umas 100 imagens que nao fosse muito grandes, vamos supor uns 50 kb cada, isto daria em torno de 5 mb de acréscimo de memória, imagens de 150 kb ficaria com apenas 15 mb de memória...
Mas omo vc precisa de apenas 8, supondo que cada imagem tenha 150 kb, entao o custo de memória é de 1,2 mb, bem menos que carregar tudo de uma vez..., mas lembrando que quando for carregar novas imagens tem-se de liberar as antigas, caso contrário somente sobe o uso de memória...


No caso eu utilizo um timer para gerar as animações...

Uma animação nada mais é do que ficar trocando as imagens, tendo uma sequencia destas sendo alternadas pelo timer...


Se já tenho tudo num array, somente vou desenhando as imagens conforme eventos do timer.

Lembrando que para nao haver flicker tem usar canvasdraw, pois a troca rápida de imagens provoca flicker, outro recurso que pode ser utilizado é o doublebuffer que controi as imagens em background....


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
xprorush
Novato
Novato


Registrado: Sexta-Feira, 16 de Julho de 2010
Mensagens: 51
Localização: Leme

MensagemEnviada: Qua Set 08, 2010 2:14 pm    Assunto: Responder com Citação

Felipe, eu nao entendi nada do que passou para mim, desculpe nao ter utilizado sua ideia, sou muito leigo, entendo quase nada ainda tratando-se de uam coisa dessas que nao faço nem ideia de como seja Very Happy

Valeu a todos que se preocupam em tentar me ajudar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB