| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Qua Jun 05, 2013 9:52 pm Assunto: [RESOLVIDO] Ajuda com chances de conseguir |
|
|
Eu fiz um código aqui que ta funcionando perfeitamente, mas eu preciso diminuir as chances do usuário ganhar algo para simular uma loteria por exemplo.
O programa gera números aleatórios de até 3000, e se o número gerado estiver entre 1 e 5 por exemplo, o usuário ganha o prêmio máximo, se tiver entre 6 e 30 o usuário ganha outro prêmio de menor valor pq as chances de conseguir são maiores.
Aqui o código:
Contar: Integer = 0;
...
procedure TForm1.Button1Click(Sender: TObject);
Var
R: Integer;
begin
Contar:= Contar+1;
Randomize;
Case Random(3000) of
1..5: Memo1.Lines.Add('Você ganhou 50.000 reais na tentativa: '+IntToStr(Contar));
6..30: Memo1.Lines.Add('Você ganhou 5.000 reais na tentativa: '+IntToStr(Contar));
31..100: Memo1.Lines.Add('Você ganhou 100 reais na tentativa: '+IntToStr(Contar));
101..500: Memo1.Lines.Add('Você ganhou 5 reais na tentativa: '+IntToStr(Contar));
end;
end;
Eu preciso aumentar esse 3000 para um número bem maior, pq é para simular uma loteria da vida real e também serve pra outras coisas, só que com números grandes demais, o programa vai demorar muito até gerar o número certo do prêmio máximo, e eu quero o resultado no mesmo momento que o usuário apertar o botão. Vlw.
Editado pela última vez por flabed10 em Sáb Jun 08, 2013 7:10 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Qui Jun 06, 2013 12:48 am Assunto: |
|
|
| ajuda pf |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Jun 06, 2013 8:35 am Assunto: |
|
|
nao entendi como isso deve funcionar:
se o usuario digitar 4, ele ganha o premio maximo? _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Qui Jun 06, 2013 5:21 pm Assunto: |
|
|
é assim que funciona:
quando o cara clica no botão, o programa add 1 a variavel que conta as tentativas e depois ele gera 1 número aleatório de 1 a 3000
se o número gerado, estiver entre 1 e 5, vai mostrar no memo que vc ganhou o premio máximo(50.000) junto com o número de tentativas. se estiver entre 6 e 30, vai mostrar no memo que vc ganhou o segundo premio (5.000) junto com o número de tentativas, é a mesma coisa pros outros do case. se o número gerado não for nenhum desses, não vai acontecer nada, só vai ter adcionado 1 a variavel de tentativas mesmo.
mas ai eu preciso aumentar esse 3000 para 3000000 por exemplo
e o cara vai ter que ficar clicando no botão o dia inteiro pra mostrar algo no memo pq agora é muito mais dificil de gerar os números dos premios. já tentei colocar num timer e repetir até ganhar algo, mas mesmo assim demora muito, e eu queria um jeito de ficar repetindo até que vc ganhe algo e essa repetição tem que durar no máximo 1 segundo. Vlw |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Sex Jun 07, 2013 4:47 am Assunto: |
|
|
| ajuda pf |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sex Jun 07, 2013 1:06 pm Assunto: |
|
|
Bom, se eu entendi bem, não seria o caso de colocar esse código:
| Código: | Var
R: Integer;
begin
Contar:= Contar+1;
Randomize;
Case Random(3000000) of
1..5: Memo1.Lines.Add('Você ganhou 50.000 reais na tentativa: '+IntToStr(Contar));
6..30: Memo1.Lines.Add('Você ganhou 5.000 reais na tentativa: '+IntToStr(Contar));
31..100: Memo1.Lines.Add('Você ganhou 100 reais na tentativa: '+IntToStr(Contar));
101..500: Memo1.Lines.Add('Você ganhou 5 reais na tentativa: '+IntToStr(Contar));
end;
end; |
No evento OnTimer do Timer? |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Sex Jun 07, 2013 3:20 pm Assunto: |
|
|
Eu já coloquei em um timer e modifiquei o código para ficar repetindo até ganhar algo, só que demora muito, mesmo com timer em 1 Milissegundo.
Eu queria um código parecido com esse, mas que mostre o resultado no mesmo momento que o cara apertar o botão. To quase achando que não da pra fazer algo parecido com isso de outro jeito, pq ele precisa ficar repetindo para contar as tentativas... |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Sex Jun 07, 2013 4:31 pm Assunto: |
|
|
| ajuda pf |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sex Jun 07, 2013 4:34 pm Assunto: |
|
|
Mas você quer que ele faça vários Randoms entre 1 e 3000000 e quer que mostre a mensagem na hora?
Cara, considere que são 3 milhões de possibilidades... eventualmente vai demorar um pouco mesmo. É natural.
Editado pela última vez por Batera em Sex Jun 07, 2013 5:00 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Sex Jun 07, 2013 4:50 pm Assunto: |
|
|
| mas nao tem algum outro codigo parecido que possa substituir esse e que mostre na hora????? |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sex Jun 07, 2013 5:01 pm Assunto: |
|
|
De forma randômica, eu desconheço.
Ao menos que você use Threads, mas nesse caso acho que não vai conseguir contar o número de tentativas.
Bom, vamos ver se outro membro aqui do fórum tem uma ideia melhor. |
|
| Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Sex Jun 07, 2013 6:49 pm Assunto: |
|
|
| Tente com o Application.OnIdle |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Sáb Jun 08, 2013 10:01 am Assunto: |
|
|
| Citação: | | e eu quero o resultado no mesmo momento que o usuário apertar o botão. Vlw |
coloque um Loop e deixe o por conta do processo interno
tipo isto
| Código: | Var
contar:integer;
ganhou:Boolean;
Valor:String;
begin
ganhou:=False;
contar:=0;
while not ganhou do
begin
Contar:= Contar+1;
Randomize;
Case Random(3000) of
1..5:begin
ganhou:=true;
valor:='50.000';
end;
6..30:begin
ganhou:=true;
valor:='5.000';
end;
31..100: begin
ganhou:=true;
valor:='100';
end;
101..500:begin
ganhou:=true;
valor:='5';
end;
end;
end;
if ganhou then
Memo1.Lines.Add('Você ganhou '+Valor+' reais na tentativa: '+IntToStr(Contar));
end;
|
[]sdç _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
flabed10 Novato

Registrado: Segunda-Feira, 22 de Abril de 2013 Mensagens: 63
|
Enviada: Sáb Jun 08, 2013 4:25 pm Assunto: |
|
|
funcionou perfeitamente vlw
ta mostrando na hora agora, eu tava quase achando que não dava pra fazer algo assim |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Sáb Jun 08, 2013 7:04 pm Assunto: |
|
|
certo
Favor alterar o Título e colocar como Resolvido
obg e sdç _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
|