{"id":988,"date":"2021-02-22T17:13:06","date_gmt":"2021-02-22T20:13:06","guid":{"rendered":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/?page_id=988"},"modified":"2021-09-09T17:01:42","modified_gmt":"2021-09-09T20:01:42","slug":"tutorial-basico","status":"publish","type":"page","link":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/gramestation-pt\/tutorial-basico\/","title":{"rendered":"Tutorial &#8211; Elementos B\u00e1sicos"},"content":{"rendered":"<p style=\"text-align: justify\">Neste tutorial, ser\u00e1 apresentado como se d\u00e1 a cria\u00e7\u00e3o de um jogo, neste caso o jogo da velha, no GrameStation. Para selecionarmos a op\u00e7\u00e3o de criar um jogo, clicamos no bot\u00e3o verde do menu inicial, conforme a anima\u00e7\u00e3o abaixo.<\/p>\n<p><a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/01.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-992\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/01.gif\" alt=\"\" width=\"1907\" height=\"867\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Logo ap\u00f3s somos direcionados para uma segunda tela, na qual podemos observar dois grafos vazios: o grafo tipo e o grafo inicial. A cria\u00e7\u00e3o dos dois grafos ocorre de forma autom\u00e1tica pois ambos s\u00e3o estruturas primordiais para as gram\u00e1ticas \u2013 no grafo tipo definimos todos os elementos do jogo, bem como suas rela\u00e7\u00f5es, e no grafo inicial definimos a organiza\u00e7\u00e3o da estrutura no come\u00e7o jogo. Sendo assim, come\u00e7aremos a especifica\u00e7\u00e3o da gram\u00e1tica adicionando elementos ao grafo tipo. Para isso, devemos clicar no bot\u00e3o de s\u00edmbolo <strong>+<\/strong>, na parte superior da janela do grafo.<\/p>\n<p><a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/02.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-994\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/02.gif\" alt=\"\" width=\"1907\" height=\"867\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Em seguida, s\u00e3o apresentadas tr\u00eas op\u00e7\u00f5es de elementos para cria\u00e7\u00e3o: <strong>Vertex<\/strong> (v\u00e9rtice), <strong>Edge<\/strong> (aresta) e <strong>Attribute<\/strong> (atributo). Come\u00e7aremos criando o v\u00e9rtice X para representar o primeiro jogador. Ap\u00f3s selecionarmos a op\u00e7\u00e3o desejada, <strong>Vertex<\/strong>, devemos definir um nome para este v\u00e9rtice \u2013 <strong>X<\/strong>, por exemplo. O pr\u00f3ximo passo \u00e9 a escolha de um <strong>Package <\/strong>(pacote) para definirmos a apar\u00eancia do v\u00e9rtice no jogo. Por padr\u00e3o, o PlayGG possui o pacote <strong>System<\/strong>, mas h\u00e1 a possibilidade de incluirmos outros. Em <strong>System<\/strong>, escolheremos um \u00edcone para representar o X, como, por exemplo, o <strong>Player<\/strong>. Ap\u00f3s definirmos a apar\u00eancia do v\u00e9rtice, definiremos uma cor. O PlayGG tamb\u00e9m possui pacotes de cores, como <strong>Unity<\/strong>, <strong>ExpPC<\/strong> e <strong>Custom<\/strong> \u2013 no \u00faltimo, podemos realizar a escolha das cores manualmente, utilizando o sistema de cores RGB. Para o v\u00e9rtice X escolheremos o pacote Unity e a cor azul. O pr\u00f3ximo passo \u00e9 a defini\u00e7\u00e3o das posi\u00e7\u00f5es x e y do v\u00e9rtice em rela\u00e7\u00e3o \u00e0 janela do grafo \u2013 a posi\u00e7\u00e3o 0,0, por exemplo, corresponde ao centro do grafo. No entanto, \u00e9 poss\u00edvel movermos os elementos manualmente, posicionando-os nos lugares desejados. Por \u00faltimo, definiremos o tamanho do v\u00e9rtice, sendo 50% o tamanho m\u00ednimo e 200% o tamanho m\u00e1ximo. Ap\u00f3s todas as especifica\u00e7\u00f5es, podemos visualizar a cria\u00e7\u00e3o do X no grafo tipo.<a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/03.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-995 alignleft\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/03.gif\" alt=\"\" width=\"1907\" height=\"867\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Repetiremos este processo para os demais v\u00e9rtices do jogo: O, \u25b3, \u25a1 e \u2606. Representaremos a O com o \u00edcone <strong>Player<\/strong> na cor vermelho, o \u25b3 com o <strong>Gear<\/strong> cinza, o \u25a1 com <strong>Vertex <\/strong>branco e a \u2606 com o <strong>Time <\/strong>amarelo.<\/p>\n<p style=\"text-align: justify\">Ap\u00f3s a cria\u00e7\u00e3o dos v\u00e9rtices, vamos para a cria\u00e7\u00e3o das arestas. Para isso, selecionamos o mesmo bot\u00e3o de adi\u00e7\u00e3o, e escolhemos a op\u00e7\u00e3o <strong>Edge<\/strong>. Para as arestas tamb\u00e9m definiremos nome, apar\u00eancia e cor. Al\u00e9m disso, escolheremos sua origem e seu destino. No jogo da velha, o X e a O sempre s\u00e3o dispostos em espa\u00e7os vazios, ou seja, o X possui uma rela\u00e7\u00e3o com o \u25a1. Sendo assim, a origem (<strong>Source<\/strong>) da aresta \u00e9 o Player azul (X) e o destino (<strong>Target<\/strong>) \u00e9 o Vertex branco (\u25a1). Por \u00faltimo, definimos o tamanho da aresta em %. O grafo ficar\u00e1 como a imagem abaixo.<a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-997 alignleft\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/04.png\" alt=\"\" width=\"988\" height=\"687\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Ap\u00f3s a especifica\u00e7\u00e3o do grafo tipo, adicionaremos elementos ao grafo inicial. Ao clicarmos na op\u00e7\u00e3o de adicionar um novo elemento, podemos notar que apenas os elementos j\u00e1 definidos no grafo tipo est\u00e3o dispon\u00edveis para o grafo inicial. Isso ocorre porque tanto os elementos do grafo inicial, quanto os dos demais grafos do jogo, derem ser declarados, previamente, no grafo tipo. Dessa forma, escolheremos os elementos que devem aparecer no in\u00edcio do jogo e definiremos o nome e a sua posi\u00e7\u00e3o no grafo. O jogo da velha inicia com nove espa\u00e7os vazios que possuem rela\u00e7\u00f5es entre si (horizontal, vertical, diagonal esquerda e diagonal direita). Al\u00e9m disso, possui a estrela indicando que o jogo come\u00e7a ativo. O grafo ficar\u00e1 como a imagem abaixo.<a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1000 alignleft\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/05.png\" alt=\"\" width=\"1028\" height=\"734\" srcset=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/05.png 1028w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/05-400x286.png 400w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/05-1024x731.png 1024w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/05-768x548.png 768w\" sizes=\"auto, (max-width: 1028px) 100vw, 1028px\" \/><\/a><\/p>\n<p style=\"text-align: justify\">O terceiro passo \u00e9 a cria\u00e7\u00e3o de regras. Come\u00e7aremos especificando a regra que chamaremos de <strong>Colocar X<\/strong>, que permite ao jogador colocar o X no tabuleiro. Para adicionar uma regra ao jogo, devemos clicar no bot\u00e3o verde e selecionar a op\u00e7\u00e3o <strong>Rule<\/strong>. Em seguida definimos um nome para a regra \u2013 neste caso, <strong>Colocar X<\/strong> \u2013 escolhemos uma apar\u00eancia e uma cor. O pr\u00f3ximo passo \u00e9 a defini\u00e7\u00e3o dos elementos do grafo esquerdo e direito. Para aplicarmos a regra <strong>Colocar X<\/strong>, devemos especificar que, se existir um espa\u00e7o vazio (ou seja, um <strong>Gear<\/strong> cinza relacionado a um <strong>Vertex<\/strong> branco), ent\u00e3o, o X ser\u00e1 marcado nesse espa\u00e7o (ou seja, um <strong>Player<\/strong> azul relacionado a um <strong>Vertex<\/strong> branco). Neste mapeamento o <strong>Vertex<\/strong> branco \u00e9 preservado, o <strong>Gear<\/strong> cinza e a aresta s\u00e3o deletados do lado esquerdo, e o <strong>Player<\/strong> azul e a aresta s\u00e3o criados do lado direito. Para fazermos isso no PlayGG, selecionaremos o tipo desejado para o grafo (<strong>Element<\/strong> ou <strong>Gear<\/strong>) e uma entre as tr\u00eas op\u00e7\u00f5es: <strong>Preserve<\/strong>, <strong>Create<\/strong> e <strong>Delete<\/strong>. Dessa forma, como o <strong>Vertex <\/strong>branco, por exemplo, \u00e9 preservado \u2013 ou seja, aparece em ambos os grafos \u2013, selecionamos a op\u00e7\u00e3o <strong>Preserve<\/strong> e em seguida escolhemos o elemento, previamente definido no grafo tipo, desejado. Neste caso, o espa\u00e7o vazio \u00e9 representado pelo v\u00e9rtice denominado, no grafo tipo, como <strong>Espa\u00e7o<\/strong>. Ap\u00f3s selecionarmos o v\u00e9rtice, definimos um nome para ele na regra como, por exemplo, <strong>Espa\u00e7o Regra<\/strong>. Por fim, escolhemos a posi\u00e7\u00e3o x e y. O <strong>Gear<\/strong> cinza e a aresta s\u00e3o deletados do lado esquerdo da regra, portanto, especificaremos eles com a op\u00e7\u00e3o <strong>Delete<\/strong>. Por fim, o <strong>Player<\/strong> azul e a aresta s\u00e3o criados do lado direito, portanto, especificaremos eles com a op\u00e7\u00e3o <strong>Create<\/strong>. O <strong>Time<\/strong> amarelo que representa a estrela de jogo ativo, tamb\u00e9m \u00e9 preservada nos dois grafos, portanto, a definimos com a op\u00e7\u00e3o <strong>Preserve<\/strong>. O mesmo processo ser\u00e1 feito para a regra <strong>Colocar O<\/strong>. A regra definida ficar\u00e1 como a imagem abaixo.<\/p>\n<p><a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1001\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/06.png\" alt=\"\" width=\"713\" height=\"609\" srcset=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/06.png 713w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/06-400x342.png 400w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/a><\/p>\n<p>As demais regras a serem definidas s\u00e3o utilizadas para verificar quando um dos jogadores vence o jogo. Para vencer no jogo da velha \u00e9 preciso obter uma sequ\u00eancia de tr\u00eas elementos iguais em uma das quatro dire\u00e7\u00f5es permitidas. Dessa forma, precisaremos definir oito regras: duas possibilidades de v\u00e9rtices (X e O) para quatro possibilidades de dire\u00e7\u00f5es (horizontal, vertical, diagonal direita e diagonal esquerda).<\/p>\n<p style=\"text-align: justify\">Come\u00e7aremos com a regra <strong>X Venceu Horizontal<\/strong>, que indica a vit\u00f3ria do jogador com o <strong>Player<\/strong> azul na horizontal. Assim como na anterior, definiremos o nome, a apar\u00eancia e a cor da regra. Para o grafo esquerdo da regra precisaremos de tr\u00eas <strong>Vertex <\/strong>branco encadeados pelas arestas <strong>Horizontal<\/strong> relacionados, cada um, com um <strong>Player<\/strong> azul. Tamb\u00e9m precisamos do <strong>Time<\/strong> amarelo para indicar que o jogo deve estar ativo para a aplica\u00e7\u00e3o da regra. No grafo direito, todos os elementos do grafo esquerdo s\u00e3o preservados, com exce\u00e7\u00e3o do <strong>Time<\/strong>, pois a execu\u00e7\u00e3o do jogo deve ser finalizada assim que um dos jogadores vencer. Sendo assim, com a op\u00e7\u00e3o <strong>Preserve<\/strong> definiremos tr\u00eas os <strong>Vertex<\/strong>,<strong> Player<\/strong>, e arestas e com a op\u00e7\u00e3o <strong>Delete<\/strong> definiremos o <strong>Time<\/strong>. A regra definida ficar\u00e1 como a imagem abaixo.<\/p>\n<p><a href=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1002\" src=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07.png\" alt=\"\" width=\"1750\" height=\"552\" srcset=\"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07.png 1750w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07-400x126.png 400w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07-1024x323.png 1024w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07-768x242.png 768w, https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/files\/2021\/02\/07-1536x484.png 1536w\" sizes=\"auto, (max-width: 1750px) 100vw, 1750px\" \/><\/a>As sete regras restantes s\u00e3o especificadas de maneira semelhante a primeira, sendo preciso alterar em cada uma, o tipo das arestas (horizontal, vertical, diagonal direita e diagonal esquerda) e o v\u00e9rtice (<strong>Player<\/strong> vermelho).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste tutorial, ser\u00e1 apresentado como se d\u00e1 a cria\u00e7\u00e3o de um jogo, neste caso o jogo da velha, no GrameStation. Para selecionarmos a op\u00e7\u00e3o de criar um jogo, clicamos no bot\u00e3o verde do menu inicial, conforme a anima\u00e7\u00e3o abaixo. Logo ap\u00f3s somos direcionados para uma segunda tela, na qual podemos observar dois grafos vazios: o [&hellip;]<\/p>\n","protected":false},"author":268,"featured_media":0,"parent":847,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-988","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/pages\/988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/users\/268"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/comments?post=988"}],"version-history":[{"count":12,"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/pages\/988\/revisions"}],"predecessor-version":[{"id":1124,"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/pages\/988\/revisions\/1124"}],"up":[{"embeddable":true,"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/pages\/847"}],"wp:attachment":[{"href":"https:\/\/wp.ufpel.edu.br\/pensamentocomputacional\/wp-json\/wp\/v2\/media?parent=988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}