Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
[TRFN] [Batch] Sistema de Sorteio
3 participantes
Página 1 de 1
[TRFN] [Batch] Sistema de Sorteio
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 :
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.
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.
Re: [TRFN] [Batch] Sistema de Sorteio
Interessante cara! Um dia vou aprender mais sobre isso! Valeu por compartilhar isso!
Marcellomine- Data de inscrição : 22/01/2013
Reputação : 11
Número de Mensagens : 134
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [TRFN] [Batch] Sistema de Sorteio
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- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [TRFN] [Batch] Sistema de Sorteio
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'.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?
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".
Tópicos semelhantes
» [Tutorial] Explicando duvidas em Batch
» Sistema de sorteio e de captura
» [TRFN] DesafioGM! - Sistema completo !
» deletando batch
» Jogo da velha em BATCH
» Sistema de sorteio e de captura
» [TRFN] DesafioGM! - Sistema completo !
» deletando batch
» Jogo da velha em BATCH
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos