|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
xprorush Novato
Registrado: Sexta-Feira, 16 de Julho de 2010 Mensagens: 51 Localização: Leme
|
Enviada: Seg Set 06, 2010 1:37 pm Assunto: Função Random e Array |
|
|
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 |
|
|
Morto Profissional
Registrado: Quarta-Feira, 2 de Fevereiro de 2005 Mensagens: 520 Localização: Belo Horizonte, MG
|
Enviada: Seg Set 06, 2010 3:15 pm Assunto: |
|
|
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 |
|
|
xprorush Novato
Registrado: Sexta-Feira, 16 de Julho de 2010 Mensagens: 51 Localização: Leme
|
Enviada: Seg Set 06, 2010 6:11 pm Assunto: |
|
|
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 |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Set 07, 2010 6:15 pm Assunto: |
|
|
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 |
|
|
xprorush Novato
Registrado: Sexta-Feira, 16 de Julho de 2010 Mensagens: 51 Localização: Leme
|
Enviada: Ter Set 07, 2010 11:02 pm Assunto: |
|
|
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 ! |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Set 08, 2010 12:50 am Assunto: |
|
|
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 |
|
|
xprorush Novato
Registrado: Sexta-Feira, 16 de Julho de 2010 Mensagens: 51 Localização: Leme
|
Enviada: Qua Set 08, 2010 10:19 am Assunto: |
|
|
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 |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Set 08, 2010 11:02 am Assunto: |
|
|
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 |
|
|
xprorush Novato
Registrado: Sexta-Feira, 16 de Julho de 2010 Mensagens: 51 Localização: Leme
|
Enviada: Qua Set 08, 2010 12:59 pm Assunto: |
|
|
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ó
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 |
|
|
felipecaputo Colaborador
Registrado: Quinta-Feira, 13 de Mai de 2010 Mensagens: 1719 Localização: Florianópolis / SC
|
Enviada: Qua Set 08, 2010 1:17 pm Assunto: |
|
|
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 |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Set 08, 2010 1:23 pm Assunto: |
|
|
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 |
|
|
xprorush Novato
Registrado: Sexta-Feira, 16 de Julho de 2010 Mensagens: 51 Localização: Leme
|
Enviada: Qua Set 08, 2010 2:14 pm Assunto: |
|
|
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
Valeu a todos que se preocupam em tentar me ajudar |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|