1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Phyton criar um espaço para um jogo

Discussão em 'Programação' iniciada por simjohn, 30 de Outubro de 2012. (Respostas: 4; Visualizações: 838)

  1. simjohn

    simjohn Power Member

    Boas,
    eu tenho de fazer um trabalho em phyton que consiste em ter um espaço onde um robot se move. O espaço é algo do tipo 4 quadrados de altura por 6 de largura. Eu criei um array para simular este espaço, mas o problema é que existem casas que estão inacessiveis, como é que eu posso colocar isto no array. Ou existe uma maneira melhor de fazer o que disse em cima.

    eu fiz assim:

    espaco=array([0,6,1,0,2,2,3,0,0,0,1,3,1,0,0,0,4,2,2,5,0,1,1,0]).reshape(4,6)


    onde o que está a vermelho é suposto ser casas onde não posso ir, os outros valores são recompensas que ganho por estar nessa casa.

    |0|6|1|0|2|2|
    |3|x|x|x|1|3|
    |1|x|x|x|4|2|
    |2|5|0|1|1|0|

    os "x" são as casas que não estão disponiveis.
     
  2. nfk

    nfk Power Member

    E se usares 'x' onde estão os zeros onde não é suposto o robot ir? Ficas com um array de strings, mas podes usar int('1'), etc, para fazer contas com os valores que não sejam x.
     
  3. simjohn

    simjohn Power Member

    Obrigado pela dica.
    Mas surgiu outra questão:
    eu pretendo correr o array e ir somando os valores, mas por exemplo se o robot esta na posição (1,1) ele pode deslocar-se com uma probabilidade para (1,2) e com outra probabilidade para (2,1), a minha questão é como é que eu implemento isto, eu pensei num ciclo for do tipo

    Código:
    espaco=np.array([0,6,1,0,2,2,3,0,0,0,1,3,1,0,0,0,4,2,2,5,0,1,1,0]).reshape(4,6)
    for i in espaco.flat:
    .
    .
    .
    
    mas agora a minha questão é que eu preciso de ir ajustando a função da soma conforme a posição do robot, por exemplo
    começo na posição (1,1), e a soma é a recompensa de (1,1) * ( probabilidade de andar para (1,2)*recompensa de (1,2) + probabilidade de andar para (2,1)*recompensa de (2,1))

    é possivel fazer-se isto em phyton? obrigado
     
  4. nfk

    nfk Power Member

    O que é que queres dizer com "correr o array e ir somando os valores"?

    A probabilidade de andar para certas casas é arbitrária? Depende da recompensa?
     
  5. simjohn

    simjohn Power Member

    por exemplo, estou na casa (1,1) e dou a ordem andar para (2,1), e a probabilidade de andar para (2,1) é de 90% e a de ficar parado é de 10%. A recompensa é o valor que esta no array, neste caso 2 na posição (1,1) e 1 na posição (2,1)
     

Partilhar esta Página