Este guia é direcionado a pessoas que nunca ou quase nunca tiveram contato com codificação. Isso o ajudará a escrever seus primeiros scripts simples em Space Engineers. Se você procurar um guia avançado eu recomendo Este de malware.
Isenção de responsabilidade
Inglês não é minha primeira língua, então, por favor, não espere uma obra-prima linguística. Além disso, nunca aprendi codificação/programação e desenvolvi meu conhecimento através de pesquisas no Google e amigos irritantes com perguntas estúpidas sobre codificação em C#. Portanto, este guia pode conter termos errados ou pequenos erros. Mas tenho certeza de que este guia permitirá que qualquer pessoa sem nenhum conhecimento sobre scripts crie scripts simples para engenheiros espaciais..
Exemplo de script
Acho que a melhor maneira de aprender scripts em engenheiros espaciais é por meio de exemplos. Faremos um rotor se mover até um determinado ponto neste primeiro.
No início precisamos dizer ao jogo qual bloco queremos abordar. Salvaremos o bloco em uma variável para tornar o script mais legível. Portanto, vamos criar uma variável para o nosso rotor:
Toda variável precisa de um tipo (“MeuMotorEstator”) e um nome (“Rotor”). O tipo informa qual valor podemos salvar na variável. Este valor pode ser um número ou apenas texto, mas no nosso caso é um bloco de rotor. O tipo para isso é “MeuMotorEstator”. Podemos simplesmente escolher qualquer nome, mas é aconselhável escolher um que torne o script fácil de ler e entender, especialmente quando fica mais complexo.
Cada linha de código (como uma frase) precisa de ponto e vírgula “;” no seu final. Isto é fácil de esquecer, mas apenas um ponto e vírgula faltando faz com que todo o script não funcione como esperado.
Agora daremos à variável seu valor: O bloco do rotor. No nosso caso, apenas dizemos que o bloco do rotor é denominado ‘Rotor Super mega station’
O tipo só é mencionado na primeira vez que criamos uma variável. Para dar um valor a uma variável, simplesmente usamos o “=” símbolo.
Esta parte é o método para endereçar o bloco em nossa grade. Simplesmente escrevemos o nome exato do bloco entre os dois “”. Não se preocupe muito com o texto, voltaremos a isso mais tarde. No final escrevemos o tipo novamente para garantir que o bloco que está sendo atribuído à nossa variável tenha o tipo correto. Se você esquecer isso e houver, por exemplo, um painel LCD chamado “Rotor de estação super mega” seria atribuído à variável. Isso pode parecer desnecessário, mas use-o para ter um script mais seguro.
Agora toda vez que usamos a variável ‘Rotor’ em nosso script o jogo aborda nosso bloco de rotor.
Vamos mover o rotor para um determinado ponto agora. Queremos que ele gire para 45 graus com velocidade positiva. Então temos que fazer 2 coisas. A primeira é definir seu ângulo máximo para 45 graus. A segunda será dar ao rotor sua velocidade.
Vamos começar com o primeiro passo:
Primeiro dizemos ao jogo que queremos usar o bloco do rotor. Então escrevemos um “.” e adicione a propriedade ou método que queremos usar. Esta propriedade precisa de um valor para definir o limite máximo do rotor para. Então escrevemos “45”. O “f” é o tipo do valor (neste caso um número, mas voltarei a isso mais tarde)
Vamos para a configuração de velocidade. Isso funciona de forma bastante semelhante, apenas a propriedade é diferente. Definimos a velocidade para 1 nesse caso.
E é isso. Depois que o script for executado, o rotor girará com 1 rpm até atingir 45 graus.
Todo o script ficaria assim:
vou resumir:
Primeiro salvamos o bloco(é) em uma variável para ter um script mais legível e mais fácil de usar. (Você também pode escrever assim:
Mas acho que é obviamente melhor usar variáveis.
Então podemos usar propriedades e métodos para alterar as configurações dos blocos.
Os princípios básicos necessários para codificação em engenheiros espaciais
Não se preocupe, você não precisa se lembrar imediatamente de tudo listado aqui, Vou adicionar um capítulo com uma lista de tudo que você pode precisar. Mas nesta parte tentarei explicar essas coisas básicas necessárias para quase todos os scripts.
“//” e “/* */” marque comentários em seu script. Eles serão ignorados quando executados. Isso significa que você pode explicar algo ou apenas dar um título ao seu código. “//” escrito na frente funciona para a linha atual e “/* */” inclui o comentário. Comentar ajuda a entender um roteiro e não deve ser subestimado.
Operadores matemáticos e lógicos
Vamos começar com operadores matemáticos e lógicos simples. Isso deve ser moleza
Vou apenas listar os mais importantes.
“+”: Adição
“-“: Subtração
“*”: Multiplicação
“/”: Divisão
“%”: Módulo; isso retornará o restante de uma divisão. Exemplos: (5 / 2 = 2; resto = 1) => 5 % 2 = 1; 7 % 4 = 3;
“==”: Igual; isso é usado para comparar valores.
“!=”: Diferente; basicamente o oposto de “==”.
“>”, “>=”, “<“, “<=”: Maior/menor que (ou igual a); Também usado para comparar valores.
“&&”: E; todas as variáveis relacionadas a isso devem corresponder na sua comparação
“||”: Ou; pelo menos uma das variáveis relacionadas a isso deve corresponder à sua comparação
“=”: Em scripts, isso é usado principalmente para atribuir valores.
Tipos de variáveis
Vamos continuar com os tipos de variáveis:
“bool”: Este tipo de variável só pode ter um desses dois valores: É também “verdadeiro” ou “falso”.
“corda” : Isto é apenas texto simples. Um exemplo seria salvar texto em uma variável para exibi-lo posteriormente em uma tela LCD.
“interno” : Este é um número, mas sem casas decimais. O valor não é arredondado; em vez disso, todas as casas decimais serão cortadas. A 4.9 salvo como “interno” é 4.
“flutuador” : Este também é um número, mas tem casas decimais.
“dobro”: O terceiro tipo de número. É semelhante a “flutuador” mas o número pode ser maior. Isso não será tão importante para scripts básicos. Eu aconselho usar float, a menos que um método exija double como entrada. Se você atribuir um valor numérico em seu script, ele geralmente será tratado como “dobro”. Para ser tratado como “flutuador” você tem que escrever um “f” atrás do número, como “4.9f”.
“IMyMotorStator”: Isso deve soar familiar. É um tipo de bloco da Space Engineers. Existem muitos diferentes e vamos ignorá-los por enquanto.
Para inicializar (criar) uma variável, apenas escrevemos o tipo e o nome da variável e terminamos com ponto e vírgula:
Podemos dar um valor depois disso:
Também podemos executar essas duas etapas ao mesmo tempo:
É possível calcular com os três tipos de números “interno”, “flutuador” e “dobro”.
Importante: Salvando um número em um “corda” funciona, mas você não pode usar operadores matemáticos, pois é visto como texto. Você pode imaginar isso como calcular com letras.
Operadores lógicos avançados
Presumo que não preciso explicar como funciona o sistema lógico verdadeiro/falso básico. Mas se alguém precisar de ajuda com isso, basta escrever um comentário.
Vamos explicar o uso de operações lógicas mais avançadas.
Função If
Vamos começar com o “função if”. Ele compara 2 parâmetros e só executa o código incluído se a comparação estiver correta/verdadeira. Acho que a maneira mais fácil de explicar isso é novamente através de exemplos.
Digamos que temos um rotor já girando e quando está em 30 graus uma luz deve acender.
Como em nosso primeiro script, começamos salvando nossos blocos em variáveis.
Vamos começar com o “função if”.
Esta é a cabeça. O argumento está escrito entre o “()”. Esta propriedade precisa que o ângulo esteja radiante. 0.5236 rad convertido em graus é 30.
Este é o corpo. Ele contém o código entre o “{}”. Ele inclui uma área de código que pertence à função escrita antes dele.
A princípio esta função irá verificar se o argumento no “()” é verdadeiro e então execute o código entre o “{}” se o argumento estiver correto. Se não, ele irá ignorar o código entre o “{}”.
Também podemos ‘atualizar’ o “função if” com um “outro”. Isso nos permite executar o código caso o argumento esteja errado. Se a declaração no “função if” é verdade, o “outro” será ignorado.
Neste exemplo queremos que a luz se apague se o rotor não estiver na posição 30 graus.
Por último, você também pode adicionar um “se mais”. Funcionará como um “outro” mas também tem uma condição que deve ser verdadeira para executar seu código. Digamos que queremos ter 4 luzes em cores diferentes e queremos que uma luz específica seja acesa para os quatro quartos do ângulo do rotor.
Primeiramente temos que criar variáveis para nossas novas luzes.
Vamos começar a construir nosso “função if”
Isso verifica se o ângulo é 0 ou acima, mas também abaixo 90 graus (1.571 ótimo). Ambas as condições devem ser atendidas para que a afirmação seja verdadeira. Se você quisesse é o “Ou-operador” (“||”) em vez do “E-operador” (“&&”) apenas uma das condições precisa ser verdadeira para que a afirmação seja verdadeira.
A luz verde acende, todas as outras luzes se apagam.
Vamos repetir isso para os outros trimestres agora.
3.142 rad é igual 180 graus. Não precisamos verificar se está acima 90 graus porque isso “se mais” só será verificado se o “se” a condição é falsa e, portanto, o ângulo está acima 90 graus.
4.712 rad é igual 270 graus.
Para o último caso não precisamos usar um “senão se” porque os únicos ângulos restantes são aqueles que queremos em nossa condição de qualquer maneira (270-360 graus).
Trocar
A próxima função que podemos usar é a “trocar”. É muito parecido com um “se” e “se mais” constelação, mas todas as suas condições precisam ser baseadas em apenas um valor de uma variável. Além disso, você só pode compará-lo com um “==”. Portanto, não funcionaria no nosso último exemplo, pois precisávamos de “menor que’ (“<“) para as nossas condições.
No exemplo a seguir, alteramos para as condições serem um ângulo exato e não uma área. Então digamos que queremos 4 casos. 0, 90, 180 e 270 graus. Cada ângulo acenderá uma de nossas luzes e todas as outras apagarão.
Esta é a cabeça. Entre o “()” o valor que queremos verificar está escrito. Isso também pode ser uma variável, é claro.
O ângulo é comparado com o “0”. Você pode imaginar isso como um “se (Rotor.Ângulo == 0)”.
A quebra fará com que o script salte de todo o switch depois que o caso correto for encontrado. Isso é importante para economizar tempo de execução, já que não haverá perda de tempo verificando todos os outros casos.
Isso é opcional. Este caso é usado quando nenhum outro caso corresponde à condição. Em nosso exemplo, isso é usado quando o ângulo está entre 0, 90, 180 e 270 graus, mas não um desses números exatos. Podemos simplesmente desligar todas as luzes, por exemplo.
Loop For
O último por enquanto é o “para loop”. É usado para repetir o mesmo código para um grupo de variáveis. Para criar esse grupo de variáveis, precisamos aprender sobre o “lista”. Ele cria um grupo de objetos que você coloca na lista; por exemplo, todos os blocos de luz em uma grade. Criar uma nova lista é um pouco diferente de criar uma variável:
Criamos uma lista com o nome “Luzes”. Além disso, a lista precisa de um tipo, então isso significa que uma lista não pode conter objetos de um tipo diferente. Neste caso nosso tipo é “IMyInteriorLight”. Este é o tipo de bloco de luz em Space Engineers, mas você também pode fazer uma lista de números com o tipo “interno”.
Agora vamos preencher a lista com todos os blocos de luz da nossa grade:
Isso coloca todos os blocos do grupo “Luzes de estação super mega” na lista mencionada entre os “()” no final.
Para abordar um único objeto em nossa lista, usamos esta frase: “Luzes[0]”. Cada objeto na lista possui um número ao qual responde. Isso sempre começa em “0” para o primeiro objeto e é contado para cima. Se você criar uma lista com 20 objetos aos quais o primeiro objeto responderá “0” e o último responderá a “19”. O número escrito entre “[]” aborda o objeto individual. Para acender a terceira luz, escreveríamos assim:
A lista está configurada, então vamos prosseguir com o “para loop”:
Esta é a cabeça. Entre o “()” nós temos 3 parâmetros diferentes separados por ponto e vírgula. O primeiro (“int eu = 0”) cria uma variável chamada “eu” com um valor de “0”. O terceiro (“eu++”) apenas adiciona “1” para nossa variável “eu” toda vez que o loop é executado. O segundo parâmetro (“eu < Luzes.comprimento”) define quando o loop deve terminar. Isso significa que o loop é executado enquanto “eu” é inferior a um valor específico. Se você escrevesse “eu < 20” o loop seria simplesmente executado 20 vezes. Nesta situação usei Lights.length, o que nos dá a quantidade de objetos que a lista “Luzes” contém. Isso basicamente significa “loop for” é executado com a mesma freqüência que a quantidade de objetos em nossa lista.
Este é o corpo do “loop for”. Usando a variável “eu”, começamos com o primeiro objeto (“0”) em nossa lista. Já que adicionamos “1” para “eu” com cada loop, também progredimos em nossa lista de objetos 1. Assim no final do “loop for” todas as luzes da lista foram acesas.
Esses operadores lógicos avançados devem ajudá-lo a criar seus próprios scripts.
Propriedades e métodos
Esta pode ser uma das etapas mais difíceis para um iniciante. Há uma grande quantidade de blocos diferentes em Space Engineers e, portanto, existem muitos tipos de blocos diferentes, métodos e propriedades. Se você quiser saber a diferença entre propriedades e métodos, você teria que perguntar a outra pessoa, já que eu realmente não sei, mas isso realmente não importa.
A melhor maneira de trabalhar com eles é pesquisar tudo neste
[github.com]enquanto você está roteirizando algo. Grandes créditos ao malware que o criou. Lá você pode encontrar todos os tipos de blocos e seus métodos e propriedades (basicamente o que você pode fazer com o bloco). Existem algumas coisas que você precisa saber para usar esses.
Para usar uma propriedade/método você deve escrever sua variável de bloco, em seguida, adicione um “.” e então escreva sua propriedade/método.
A maioria das propriedades pode obter ou definir um valor (alguns só obtêm valores). Você decide isso atribuindo um valor adicionando algo como ” = valor” ou não. Aqui estão dois exemplos para você ter uma ideia de como isso funciona:
Obtendo um valor:
Isso salva o ângulo em nossa variável “ângulo”.
Definir um valor:
Isto permite o bloqueio do rotor.
No guia você também verá qual tipo a propriedade/método devolve ou precisa como entrada. Isto é muito importante. A propriedade “RotorLock” precisa de um “bool” o que significa que só aceita “verdadeiro” ou “falso” como em- ou saída.
Escrevendo seu primeiro roteiro
Se você abrir o bloco programável você verá isto:
Iremos ignorar o “Programa” e “Salvar” função por enquanto. Todo o seu código será colocado entre os dois “{}” do “Principal” função. Esta é a parte que é executada quando o script é usado. Se você implementasse o primeiro script do início deste guia, seria assim:
Eu recomendo fortemente que você escreva seus scripts fora dos Engenheiros Espaciais. A melhor maneira para mim é usar o Visual Studio junto com a extensão do Malware. Ele fornece muitos recursos que você vai adorar durante a codificação. Um guia sobre como instalar e usá-lo também é encontrado
[github.com]no guia de malware.
Folha de dicas
Operadores matemáticos e lógicos:
“+”
“-”
“*”
“/”
“%”
“==”
“!=”
“>”, “>=”, “<“, “<=”
“&&”
“||”
“=”
Tipos de valor:
“bool”: verdadeiro/falso
“corda”: texto
“interno”: número sem casas decimais
“flutuador”: número com casas decimais
“dobro”: número maior
“lista”: grupo de objetos
“IMyInteriorLight”: exemplo de um tipo de bloco
Operadores lógicos avançados:
Propriedades/Métodos:
Isso é tudo o que estamos compartilhando hoje para isso Engenheiros Espaciais guia. Este guia foi originalmente criado e escrito por 33iRobot33. Caso não atualizemos este guia, você pode encontrar a atualização mais recente seguindo este link.