Ir para o conteúdo

 Voltar a Ginga-NCL: I...
Tela cheia

Jogo da Velha em NCL

30 de Janeiro de 2008, 14:09 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 20 vezes

Olá amigos. Sou estudante de publicidade, e nesse semestre temos um grande trabalho para ser apresentado.

Dentro d minha campanha quero colocar uma aplicação em TV Digital. A minha idéia é criar um joguinho da velha que o telespectador irá jogar. Se ele ganhar, o meu cliente irá ganhar um brinde.

Gostaria de saber a possibilidade de criarmos esse jogo juntos, visto que eu não entendo muito de prgramação (entendo de informatica).

Estou disposto a reverter todo o projeto, bem como o aprendizado para a comunidade, Para isso eu contaria com a ajuda de vocês.

Minha primeira dificuldade é na lógica do jogo, como fazer o computador entender a jogada do telespectador, na busca de ganhar, visto que não quero que seja uma facilidade completa para o telespectador ganhar.

Aguardo a ajuda

Abraços

Kélil Marcilio

Autor: José Kélil Marcilio Alves do RÊgo


22 comentários

    • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
      28 de Fevereiro de 2008, 17:12

       

      Acho que o melhor local para essa trilha ter sido postada provavelmente era no fórum "NCL: Dúvidas da Linguagem" mas vou prosseguir a trilha aqui de qualquer forma.
      Segue um código todo pronto em Lua de um jogo da velha em que o jogador atua tanto pela 'O' quanto pelo 'X'.
      Minha expectativa é que a comunidade ajude-o a evoluir o Jogo da Velha da forma que você quer (o telespectador contra o jogo) e tirando dúvidas do código.
      Acredito muito que essa comunidade pode apoiar muito nesse sentido.
      -- PECAS

      X = canvas:new('x.png')
      O = canvas:new('o.png')

      -- TABULEIRO:
      -- Respectivamente, posicao em x e y no canvas, verificador de casa preenchida
      -- (t = 0 (vazia)) e imagem a ser colocada no local(inicialmente, o conteudo é nil (img = nil)
      -- pois nenhum jogador possui tal casa).

      local tab = {
      { x=0, y=0, t=0, img=nil },
      { x=100, y=0, t=0, img=nil },
      { x=200, y=0, t=0, img=nil },
      { x=0, y=100, t=0, img=nil },
      { x=100, y=100, t=0, img=nil },
      { x=200, y=100, t=0, img=nil },
      { x=0, y=200, t=0, img=nil },
      { x=100, y=200, t=0, img=nil },
      { x=200, y=200, t=0, img=nil },
      }
      -- JOGADOR:
      -- A tabela player possui os dois tipos de jogadores, onde cada um possui sua posicao
      -- inicial (centro do tabuleiro) e imagem. A constante cur administra o turno de cada jogador.

      local cur = 1
      local player = {
      { pos=5, img=X },
      { pos=5, img=O },
      }

      -- Sequencia de posicoes no tabuleiro onde é possivel vencer.

      local win = {
      {1,2,3}, {4,5,6}, {7,8,9} , {1,4,7} , {2,5,8} , {3,6,9} , {1,5,9} , {3,5,7}
      }

      -- Funcao de teste:
      -- Testa se as posicoes na tabela win possuem a mesma imagem, diferente nil.

      function test ()
      for i=1, #win do
      local c = win[i]
      if (tab[c[1]].img == tab[c[2]].img) and
      (tab[c[1]].img == tab[c[3]].img) and (tab[c[1]].img ~= nil)then
      return true
      end
      end
      return false
      end

      local visible = true
      local function f ()
      visible = not visible
      event.timer(200, f)
      end

      -- Funcao de redesenho:
      -- chamada a cada tecla pressionada
      -- primeiro o fundo, depois as linha e, por fim, as jogadas já executadas.

      function redraw ()

      canvas:attrColor('black')
      canvas:drawRect('fill', 0, 0, canvas:attrSize())
      canvas:attrColor('white')
      canvas:drawLine(100,0,100,300)
      canvas:drawLine(200,0,200,300)
      canvas:drawLine(0,100,300,100)
      canvas:drawLine(0,200,300,200)
      for i=1, 9 do
      if tab[i].img then
      canvas:compose(tab[i].x,tab[i].y,tab[i].img)
      end
      end

      if visible then
      local p = player[cur]
      canvas:compose(tab[p.pos].x, tab[p.pos].y, p.img)
      end
      canvas:flush()
      end

      -- Funcao de tratamento de eventos:

      function handler (evt)

      if (evt.class == 'ncl') and (evt.type == 'presentation')
      and (evt.action == 'start') then
      event.timer(300, f)
      end

      local p = player[cur]
      if evt.class == 'key' and evt.type == 'press'
      then
      local last = p.pos

      if evt.key == 'CURSOR_UP' then
      p.pos = p.pos - 3
      elseif evt.key == 'CURSOR_DOWN' then
      p.pos = p.pos + 3
      elseif evt.key == 'CURSOR_LEFT' then
      p.pos = p.pos - 1
      elseif evt.key == 'CURSOR_RIGHT' then
      p.pos = p.pos + 1
      elseif (evt.key == 'ENTER') and (not tab[p.pos].img) then
      tab[p.pos].img = p.img
      tab[p.pos].t = 1
      if cur == 1 then
      cur = 2
      else
      cur = 1
      end
      --NEW TEXT
      p.pos = 5
      end

      if (p.pos < 1) or (p.pos > 9) then
      p.pos = last
      end

      end
      redraw()

      if test() then
      event.post('out', { class='ncl', type='presentation', area='fim', transition='starts' })
      end

      end

      event.register(handler)

Concurso ITU-T de Aplicações para IPTV 2012

13 de Agosto de 2012, 19:38, por Desconhecido

Gostaríamos de lembrar aos possíveis interessados que o prazo de registro para participação no Concurso ITU-T de Aplicações para IPTV 2012 (IPTV Application Challenge) se encerra nesta semana, dia 15 de agosto de 2012. Já o prazo para a submissão de aplicações se encerra no dia 07 de setembro de 2012.



NCL Eclipse 1.6 disponível

10 de Janeiro de 2012, 21:19, por Desconhecido

Caros membros da Comunidade Ginga,



Concursos de Aplicações Ginga-NCL

22 de Setembro de 2011, 3:22, por Desconhecido

    Gostaríamos de relembra-los de que há dois concursos de aplicações Ginga-NCL com inscrições ainda abertas. O convite é aberto a toda a comunidade de desenvolvedores de aplicações para o Middleware Ginga-NCL, em nível internacional. São os seguintes concursos:



Novas versões: Ginga e Ginga-NCL Virtual Set-top Box (v.0.12.3)

1 de Agosto de 2011, 20:58, por Desconhecido



Algumas Boas Notícias da Comunidade Ginga

28 de Julho de 2011, 21:31, por Desconhecido

Autor: Roberto Azevedo