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.
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.
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
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
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
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
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.
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
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
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
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
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
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
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
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
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