Página 2 de 8

Re: 10. Exercício #1

Enviado: 05 Ago 2018, 20:16
por Clear
Demorei um pouquinho pra fazer isso, não sei se ficou bom , mas , consegui fazer.
Ta ai o código.

SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP
WAIT 2000
LVAR_INT var1 var2 var3 var4 var5
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WHILE NOT var1 = 12
IF var1 > 12
        var1 -= 1
    ELSE
        var1 += 1
    ENDIF
ENDWHILE
WHILE NOT var2 = 12
IF var2 > 12
        var2 -= 1
    ELSE
        var2 += 1
    ENDIF
ENDWHILE
WHILE NOT var3 = 12
IF var3 > 12
        var3 -= 1
    ELSE
        var3 += 1
    ENDIF
ENDWHILE
WHILE NOT var4 = 12
IF var4 > 12
        var4 -= 1
    ELSE
        var4 += 1
    ENDIF
ENDWHILE
WHILE NOT var5 = 12
IF var5 > 12
        var5 -= 1
    ELSE
        var5 += 1
    ENDIF
ENDWHILE
PRINT_FORMATTED_NOW "Todas as variáveis sao 12: %i %i %i %i %i" 12000 var1 var2 var3 var4 var5
}
SCRIPT_END

Re: 10. Exercício #1

Enviado: 05 Ago 2018, 20:37
por Snowflakes
Clear escreveu:
05 Ago 2018, 20:16
Demorei um pouquinho pra fazer isso, não sei se ficou bom , mas , consegui fazer.
Ta ai o código.

SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP
WAIT 2000
LVAR_INT var1 var2 var3 var4 var5 diferenca
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WHILE NOT var1 = 12
IF var1 > 12
        var1 -= 1
    ELSE
        var1 += 1
    ENDIF
ENDWHILE
WHILE NOT var2 = 12
IF var2 > 12
        var2 -= 1
    ELSE
        var2 += 1
    ENDIF
ENDWHILE
WHILE NOT var3 = 12
IF var3 > 12
        var3 -= 1
    ELSE
        var3 += 1
    ENDIF
ENDWHILE
WHILE NOT var4 = 12
IF var4 > 12
        var4 -= 1
    ELSE
        var4 += 1
    ENDIF
ENDWHILE
WHILE NOT var5 = 12
IF var5 > 12
        var5 -= 1
    ELSE
        var5 += 1
    ENDIF
ENDWHILE
PRINT_FORMATTED_NOW "Todas as variáveis sao 12: %i %i %i %i %i" 12000 var1 var2 var3 var4 var5
}
SCRIPT_END
 
Massa, mas por que tem uma LVAR_INT chamada "diferenca" sendo que você não usou?

Re: 10. Exercício #1

Enviado: 05 Ago 2018, 21:07
por Clear
Eu fui ver alguns modos de fazer ela como o Junior disse , mas depois eu fui e fiz esse e tinha colocado a "diferenca" e esqueci de tirar. Erro meu.

Re: 10. Exercício #1

Enviado: 04 Out 2018, 14:04
por Usuario_do_Windows
SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP
// criei as 5 variaveis
LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
// aqui fiz o uso do codigo que você pediu
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WAIT 0 // freeze :V
main_loop:
IF var1 < 12 // se var 1 for MENOR que 12 EX : 11
    var1 = 12 // var1 vai ser igual a 12
ENDIF
IF var1 > 12 // se var 1 for MAIOR que 12 ....
    var1 = 12// ...
ENDIF
WAIT 0
IF var2 < 12 // assim por diante :V
    var2 = 12
ENDIF
IF var2 > 12
    var2 = 12
ENDIF
WAIT 0
IF var3 < 12
    var3 = 12
ENDIF
IF var3 > 12
    var3 = 12
ENDIF
WAIT 0
IF var4 < 12
    var4 = 12
ENDIF
IF var4 > 12
    var4 = 12
ENDIF
WAIT 0
IF var5 < 12
    var5 = 12
ENDIF
IF var5 > 12
    var5 = 12
ENDIF
WAIT 0
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 var1 var2 var3 var4 var5
GOTO main_loop
}
SCRIPT_END

Re: 10. Exercício #1

Enviado: 04 Out 2018, 22:12
por Legacy
Usuario_do_Windows escreveu:
04 Out 2018, 14:04
SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP
// criei as 5 variaveis
LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
// aqui fiz o uso do codigo que você pediu
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WAIT 0 // freeze :V
main_loop:
IF var1 < 12 // se var 1 for MENOR que 12 EX : 11
    var1 = 12 // var1 vai ser igual a 12
ENDIF
IF var1 > 12 // se var 1 for MAIOR que 12 ....
    var1 = 12// ...
ENDIF
WAIT 0
IF var2 < 12 // assim por diante :V
    var2 = 12
ENDIF
IF var2 > 12
    var2 = 12
ENDIF
WAIT 0
IF var3 < 12
    var3 = 12
ENDIF
IF var3 > 12
    var3 = 12
ENDIF
WAIT 0
IF var4 < 12
    var4 = 12
ENDIF
IF var4 > 12
    var4 = 12
ENDIF
WAIT 0
IF var5 < 12
    var5 = 12
ENDIF
IF var5 > 12
    var5 = 12
ENDIF
WAIT 0
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 var1 var2 var3 var4 var5
GOTO main_loop
}
SCRIPT_END
 

Imagem

Você fez da maneira mais rápida e não precisaria nem ter feito as checagens, apenas atribuir o valor bastava. Mas o objetivo do tutorial é transformar o valor em 12 sem depender da sorteou definindo valores por puro desafio.

Uma maneira de se fazer isso é aumentando ou diminuindo o valor em 1 até chegar em 12. Se estiver maior que 12, ficar diminuindo até ser 12. Se for menor, ficar aumentando até ser 12.

O WAIT 0 também não precisava em baixo de "GENERATE_RANDOM_INT_IN_RANGE 0 100 var5".
Se não houvesse um loop, o script acabaria e outros scripts do jogo seriam executados. Só precisa colocar dentro do main_loop

Está no caminho certo, só precisa ler com mais calma. Se tivesse lido com calma faria o que foi pedido sem dúvida alguma.
 


Eu faria assim, não sei se é a melhor maneira. Assim pelo menos não se copia e cola código várias vezes.

Código: Selecionar tudo

SCRIPT_START
{
NOP
LVAR_INT val[5], n, valor

main_loop:
WAIT 0
REPEAT 5 n
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, val[n]
    valor = val[n]
    GOSUB definir_valor
    val[n] = valor
ENDREPEAT
PRINT_FORMATTED_NOW "%i %i %i %i %i", 1000, val[0], val[1], val[2], val[3], val[4]
GOTO main_loop

definir_valor:
WHILE NOT valor = 12
    WAIT 0
    IF valor < 12
        valor += 1
    ELSE
        valor -= 1
    ENDIF
ENDWHILE
RETURN
}
SCRIPT_END
 

Re: 10. Exercício #1

Enviado: 04 Out 2018, 23:24
por HybridTheory
Legacy escreveu:
04 Out 2018, 22:12
Eu faria assim, não sei se é a melhor maneira. Assim pelo menos não se copia e cola código várias vezes.
[código]

Tu fez coisas desnecessárias, fora que o resultado é bem demorado :peepo8:

Esta é a melhor maneira:

Código: Selecionar tudo

SCRIPT_START
{

    NOP
    LVAR_INT iValue[5], n

    REPEAT 5 n
        GENERATE_RANDOM_INT_IN_RANGE 0 100 iValue[n]
        WHILE NOT iValue[n] = 12
            IF iValue[n] > 12
                iValue[n] -= 1
            ELSE
                iValue[n] += 1
            ENDIF
        ENDWHILE
    ENDREPEAT
    
    PRINT_FORMATTED_NOW "%i %i %i %i %i" 3500 iValue[0] iValue[1] iValue[2] iValue[3] iValue[4]

}
SCRIPT_END

Re: 10. Exercício #1

Enviado: 04 Out 2018, 23:29
por Legacy
É isso que dá fazer coisas na pressa e com sono.  :kappa:
A diferença é que o seu não tem loop labels, não tem WAIT dentro do WHILE e não usa GOSUB?

Re: 10. Exercício #1

Enviado: 04 Out 2018, 23:41
por HybridTheory
Legacy escreveu:
04 Out 2018, 23:29
A diferença é que o seu não tem loop,

REPEAT e WHILE são loops :cjpc:

Legacy escreveu:
04 Out 2018, 23:29
não tem WAIT dentro do WHILE e não usa GOSUB?

Neste caso são desnecessários (principalmente o GOSUB)

Re: 10. Exercício #1

Enviado: 06 Out 2018, 07:21
por Israel
HybridTheory escreveu:
04 Out 2018, 23:24
Tu fez coisas desnecessárias, fora que o resultado é bem demorado :peepo8:

Esta é a melhor maneira:

Código: Selecionar tudo

SCRIPT_START
{

    NOP
    LVAR_INT iValue[5], n

    REPEAT 5 n
        GENERATE_RANDOM_INT_IN_RANGE 0 100 iValue[n]
        WHILE NOT iValue[n] = 12
            IF iValue[n] > 12
                iValue[n] += 1
            ELSE
                iValue[n] -= 1
            ENDIF
        ENDWHILE
    ENDREPEAT
    
    PRINT_FORMATTED_NOW "%i %i %i %i %i" 3500 iValue[0] iValue[1] iValue[2] iValue[3] iValue[4]

}
SCRIPT_END
Tá errado. Se o valor for acima de 12, incrementará infinitamente e freezará por falta de WAIT, algo semelhante ocorrerá caso seja abaixo de 12.

Re: 10. Exercício #1

Enviado: 06 Out 2018, 09:00
por HybridTheory
Israel escreveu:
06 Out 2018, 07:21
Tá errado. Se o valor for acima de 12, incrementará infinitamente e freezará por falta de WAIT, algo semelhante ocorrerá caso seja abaixo de 12.

É mesmo, coloquei os operadores errados :feel:

Corrigi agora

Re: 10. Exercício #1

Enviado: 06 Out 2018, 11:42
por Usuario_do_Windows
Legacy escreveu:
04 Out 2018, 22:12
Usuario_do_Windows escreveu:
04 Out 2018, 14:04
SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP
// criei as 5 variaveis
LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
// aqui fiz o uso do codigo que você pediu
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WAIT 0 // freeze :V
main_loop:
IF var1 < 12 // se var 1 for MENOR que 12 EX : 11
    var1 = 12 // var1 vai ser igual a 12
ENDIF
IF var1 > 12 // se var 1 for MAIOR que 12 ....
    var1 = 12// ...
ENDIF
WAIT 0
IF var2 < 12 // assim por diante :V
    var2 = 12
ENDIF
IF var2 > 12
    var2 = 12
ENDIF
WAIT 0
IF var3 < 12
    var3 = 12
ENDIF
IF var3 > 12
    var3 = 12
ENDIF
WAIT 0
IF var4 < 12
    var4 = 12
ENDIF
IF var4 > 12
    var4 = 12
ENDIF
WAIT 0
IF var5 < 12
    var5 = 12
ENDIF
IF var5 > 12
    var5 = 12
ENDIF
WAIT 0
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 var1 var2 var3 var4 var5
GOTO main_loop
}
SCRIPT_END
 
Imagem

Você fez da maneira mais rápida e não precisaria nem ter feito as checagens, apenas atribuir o valor bastava. Mas o objetivo do tutorial é transformar o valor em 12 sem depender da sorteou definindo valores por puro desafio.

Uma maneira de se fazer isso é aumentando ou diminuindo o valor em 1 até chegar em 12. Se estiver maior que 12, ficar diminuindo até ser 12. Se for menor, ficar aumentando até ser 12.

O WAIT 0 também não precisava em baixo de "GENERATE_RANDOM_INT_IN_RANGE 0 100 var5".
Se não houvesse um loop, o script acabaria e outros scripts do jogo seriam executados. Só precisa colocar dentro do main_loop

Está no caminho certo, só precisa ler com mais calma. Se tivesse lido com calma faria o que foi pedido sem dúvida alguma.


Eu faria assim, não sei se é a melhor maneira. Assim pelo menos não se copia e cola código várias vezes.

Código: Selecionar tudo

SCRIPT_START
{
NOP
LVAR_INT val[5], n, valor

main_loop:
WAIT 0
REPEAT 5 n
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, val[n]
    valor = val[n]
    GOSUB definir_valor
    val[n] = valor
ENDREPEAT
PRINT_FORMATTED_NOW "%i %i %i %i %i", 1000, val[0], val[1], val[2], val[3], val[4]
GOTO main_loop

definir_valor:
WHILE NOT valor = 12
    WAIT 0
    IF valor < 12
        valor += 1
    ELSE
        valor -= 1
    ENDIF
ENDWHILE
RETURN
}
SCRIPT_END
Fiz com oq eu sabia até agora essa maneira q vc me mostrou cheguei me perder na hora de ler kkk ;-;
Sou iniciante entende fiz da maneira q achei mais simples.
"Uma maneira de se fazer isso é aumentando ou diminuindo o valor em 1 até chegar em 12. Se estiver maior que 12, ficar diminuindo até ser 12. Se for menor, ficar aumentando até ser 12."
Eu não sabia fazer deste modo até tentei mas n deu certo... E o wait 0 leia o comentario escrito ao lado dele. Quando fui rodar o script o jogo ficou em frezee coloquei o WAIT 0 e rodou normalmente n sei o porquê disso mas obrigado por ajudar... e tmb
Pense antes d falar mal do cara n copiei e coloquei e s DIGITEI TUDO!!! me senti ofendido quando vc me comparou aos famosos Ctrl + C + Ctrl + V :V
Fiz simples pois gosto de coisas simples. Fica mais facil d entender :V :V Vlw vlw pelas dicas
:D

Re: 10. Exercício #1

Enviado: 21 Jan 2019, 17:50
por kaiomuzzo
O meu ficou assim

SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP

WAIT 5000 // tempo pra iniciar o gta certinho hehe o meu demora um pouco
LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

WHILE NOT var1 = 12
    WAIT 0
    IF var1 < 12
        var1 += 1
    ELSE
        var1 -=1
    ENDIF
ENDWHILE
WHILE NOT var2 = 12
    WAIT 0
    IF var2 < 12
        var2 += 1
    ELSE
        var2 -=1
    ENDIF
ENDWHILE
WHILE NOT var3 = 12
    WAIT 0
    IF var3 < 12
        var3 += 1
    ELSE
        var3 -=1
    ENDIF
ENDWHILE
WHILE NOT var4 = 12
    WAIT 0
    IF var4 < 12
        var4 += 1
    ELSE
        var4 -=1
    ENDIF
ENDWHILE
WHILE NOT var5 = 12
    WAIT 0
    IF var5 < 12
        var5 += 1
    ELSE
        var5 -=1
    ENDIF
ENDWHILE
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 var1 var2 var3 var4 var5
}
SCRIPT_END

Re: 10. Exercício #1

Enviado: 22 Jan 2019, 03:18
por Junior_Djjr
Tá boa.

Re: 10. Exercício #1

Enviado: 06 Mar 2019, 21:28
por NULL/12
SpoilerAbrir

Código: Selecionar tudo

SCRIPT_START
{
NOP
LVAR_INT var1 var2 var3 var4 var5
CONST_INT O 12
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WHILE TRUE
WAIT 0
IF IS_KEY_PRESSED VK_KEY_1
AND IS_KEY_PRESSED VK_KEY_2
WHILE NOT var1 = O
IF var1 > 12
            var1 -= 1
        ELSE
            var1 < 12
            var1 += 1
        ENDIF
WHILE NOT var2 = O
IF var2 > 12
                var2 -= 1
            ELSE
                var2 < 12
                var2 += 12
            ENDIF
WHILE NOT var3 = O
IF var3 < 12
                    var3 += 1
                ELSE
                    var3 > 12
                    var3 -= 1
                ENDIF
WHILE NOT var4 = O
IF var4 > 12
                        var4 -= 1
                    ELSE
                        var4 < 12
                        var4 += 1
                    ENDIF
WHILE NOT var5 = O
IF var5 < 12
                            var5 += 1
                        ELSE
                            var5 > 12
                            var5 -= 1
                        ENDIF
                    ENDWHILE
                ENDWHILE
            ENDWHILE
        ENDWHILE
    ENDWHILE
ENDIF
IF IS_KEY_PRESSED VK_NUMPAD0
OR IS_KEY_PRESSED VK_KEY_0
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
ENDIF
IF IS_KEY_PRESSED VK_KEY_1
AND IS_KEY_PRESSED VK_KEY_2
WHILE NOT var1 = O
IF var1 > 12
            var1 -= 1
        ELSE
            var1 < 12
            var1 += 1
        ENDIF
WHILE NOT var2 = O
IF var2 > 12
                var2 -= 1
            ELSE
                var2 < 12
                var2 += 12
            ENDIF
WHILE NOT var3 = O
IF var3 < 12
                    var3 += 1
                ELSE
                    var3 > 12
                    var3 -= 1
                ENDIF
WHILE NOT var4 = O
IF var4 > 12
                        var4 -= 1
                    ELSE
                        var4 < 12
                        var4 += 1
                    ENDIF
WHILE NOT var5 = O
IF var5 < 12
                            var5 += 1
                        ELSE
                            var5 > 12
                            var5 -= 1
                        ENDIF
                    ENDWHILE
                ENDWHILE
            ENDWHILE
        ENDWHILE
    ENDWHILE
ENDIF
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 var1 var2 var3 var4 var5
ENDWHILE
}
SCRIPT_END

Re: 10. Exercício #1

Enviado: 30 Mar 2019, 10:29
por Juaum
Eu usei os GOTO nas 5 variáveis para ele só passar para a próxima variável quando a anterior for 12. No final, só vai mostrar a mensagem quando todas forem 12. Eu tentei deixar na tela "Procurando os numeros" enquanto as variáveis não resultavam em 12, mas não consegui  :peepo4:

Código: Selecionar tudo

SCRIPT_START
{
NOP

LVAR_INT var1 var2 var3 var4 var5

mainloop:
WAIT 0

loopV1:
WAIT 0
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
WHILE NOT var1 = 12
IF var1 > 12
        var1 -= 1
    ELSE
        var1 += 1
    ENDIF
WAIT 0
GOTO loopV1
ENDWHILE
GOTO loopV2

loopV2:
WAIT 0
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
WHILE NOT var2 = 12
IF var2 > 12
        var2 -= 1
    ELSE
        var2 += 1
    ENDIF
WAIT 0
GOTO loopV2
ENDWHILE
GOTO loopV3

loopV3:
WAIT 0
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
WHILE NOT var3 = 12
IF var3 > 12
        var3 -= 1
    ELSE
        var3 += 1
    ENDIF
WAIT 0
GOTO loopV3
ENDWHILE
GOTO loopV4

loopV4:
WAIT 0
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
WHILE NOT var4 = 12
IF var4 > 12
        var4 -= 1
    ELSE
        var4 += 1
    ENDIF
WAIT 0
GOTO loopV4
ENDWHILE
GOTO loopV5

loopV5:
WAIT 0
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
WHILE NOT var5 = 12
IF var5 > 12
        var5 -= 1
    ELSE
        var5 += 1
    ENDIF
WAIT 0
GOTO loopV5
ENDWHILE

//Só irá mostras se todas as variáveis forem 12
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 var1 var2 var3 var4 var5

GOTO mainloop
}
SCRIPT_END