[TRFN] [Batch] Sistema de Sorteio

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

[TRFN] [Batch] Sistema de Sorteio

Mensagem por TRFN em Qua 06 Mar 2013, 09:02

Bom pessoal estou postando isso aqui bem atoa mesmo, só para mostrar um código batch que faz uma coisa simples, mas que é extenso. Eu sei que por GML seria duas linhas de código, mas quis fazer isso sem usar o game maker, para trabalhar um pouco a minha lógica e também para não esquecer a minha base de programação, o D.O.S. .

Sem mais delongas, eis o código :
Código:

:: Main ::
@echo off
MODE CON COLS=72 LINES=16

:: Insert Limit Screen ::
:insert
color 0a
title Sorteio de Banco
cls
call:head
set /p "max=Numero maximo de bancos para sorteio > "
if "%max%" equ ""  call:error1 && goto insert
if %max% gtr 10000 call:error2 && goto insert
if %max% lss 2 call:error2 && goto insert

:: Re-calculating ::
:repeat
set /a "rand=%random%+%random%+%random%+%random%+%random%+%random%+%random%+%random%"
set /a "rand=%rand%/10000"
set /a "rand=%rand%*%random%"
set /a "rand=%rand%/(10000-%max%)"
set "result=0"

:: Compiler 1 ::
:asset_compiler1
if %rand% gtr 1000 set /a "rand=%rand%/10" && goto asset_compiler1

:: Compiler 2 ::
:asset_compiler2
if %rand% lss %max% set /a "rand=%rand%*2" && goto asset_compiler2

:: Post[Calc] ::
color 0d
cls
call:head
echo Realizando calculos, aguarde um momento...
set step=0

:: Calculum ::
:loop
set /a "percent=%rand%/10"
set /a "percent=100-%percent%"
if %percent% lss 0 set percent=0
set /a "rand=%rand%-1"
set /a "result=%result%+1"
if %result% gtr %max% set "result=1"
if %rand% leq 0 goto:continue
set /a "step=%step%+1"
title Sorteio de Banco - [Concluidos: %percent%%% ^| Step: %step%]
goto loop

:: Result ::
:continue
title Sorteio de Banco - Resultado : %result%
cls
color 0e
call:head
echo Banco Ganhador : [%result%] .
echo.
echo Pressione qualquer tecla para calcular novamente...
pause>nul
goto repeat

:: Error #1 ::
:error1
set max=
color 0c
title Sorteio de Banco - #ERROR#
echo Tu precisa fornecer algum valor numerico quando for executar...
pause>nul
goto:eof


:: Error #2 ::
:error2
set max=
color 0c
title Sorteio de Banco - #ERROR#
echo Insira apenas numeros compreendidos entre [2] e [10000]...
pause>nul
goto:eof


:: Head Text ::
:head
echo Sistema Automatizado de sorteio de bancos.
echo Desenvolvido por TRFN
echo.
echo.
goto:eof

Insiram esse código no bloco de notas e salvem o arquivo com a extensão .BAT ou .CMD e façam um teste. Ele sorteia bem randomicamente um numero de cadeira, fiz esse sistema para igreja que vou, para premiar um banco de lá com um alfajor durante o culto.

Espero que gostem e brinquem um pouco com esse sistema, em breve, farei um sistema de comunicação de servidores em batch que se tudo der certo, fará é muito bem jogos de comunicação online.

Uma especificação sobre o funcionamento : Quanto maior o numero de possibilidades, maior o numero de Steps, e mais demorado o processo de sorteio.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: [TRFN] [Batch] Sistema de Sorteio

Mensagem por Marcellomine em Qua 06 Mar 2013, 09:12

Interessante cara! Um dia vou aprender mais sobre isso! Valeu por compartilhar isso! Happy

Marcellomine

Número de Mensagens : 134
Idade : 19
Data de inscrição : 22/01/2013
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [TRFN] [Batch] Sistema de Sorteio

Mensagem por GameMakerTutoriais em Qua 06 Mar 2013, 10:41


Muito doido! Eu curti esse lance do “goto :eof”, não sabia que podia dar um skip pro fim do arquivo dessa forma! Valeu por compartilhar o código.

Acho que entendi... Tem vários cálculos com divisor alto, me corrija se eu estiver errado, mas você fez isso pra aumentar a probabilidade de um intervalos de número aparecer, certo?

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [TRFN] [Batch] Sistema de Sorteio

Mensagem por TRFN em Qua 06 Mar 2013, 11:33

Acho que entendi... Tem vários cálculos com divisor alto, me corrija se eu estiver errado, mas você fez isso pra aumentar a probabilidade de um intervalos de número aparecer, certo?
Sim ,é . Para garantir que esolherá segundo o range corretamente. O asset_compiler 1 e 2 servem para modular os steps que criei, e por isso quanto maior o numero, mais steps e mais tempo gasto. Até o numero 999 o calculo é até rápido, mas passando disso é demorado. Os steps servem para criar a função while. O step que criei foi projetado pensando no mesmo step do Game Maker rsrs', mas é claro tudo em batch. Agora só falta o draw rsrs'.

Repare bem no título do batch, cada step é um calculo realizado para escolher o numero aleatório, mas o numero é escolhido antes mesmo do step ser acionado...

Ora, porque então o step ? Para fazer o range. Para não passar do limite de escolha, ele conta um a um, para ser bem randômico também.

Cada goto na verdade foi transformado em uma função, como os scripts do GM. Por isso usei "call" e "eof".


___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: [TRFN] [Batch] Sistema de Sorteio

Mensagem por Conteúdo patrocinado Hoje à(s) 23:59


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