Pergunta

Depois de ler sobre algumas artigos sobre Vida Artificial (Um assunto que eu acho muito interessante), juntamente com várias perguntas aqui no SO, eu comecei a brincar com a ideia de criação de um (muito, muito, muito) simulador simples. Não gráfica necessária, mesmo. Se eu tenha esquecido uma pergunta, não hesite em apontá-la para mim.

Como eu disse, isso dificilmente será uma simulação nível Sims. Eu acredito que vai mal atingir o nível "aceitável freeware", é simplesmente um exercício de aprendizagem e algo para manter minhas habilidades durante uma pausa. A premissa básica é que uma pessoa genérico é criado. Nenhum nome, altura ou qualquer coisa assim (Como eu disse, simples), a única coisa verdadeira que vai receber é uma lista de "associações" e "uso" genérico "pegar" e capacidades "olhar".

Minha primeira pergunta é em relação às associações. O que faz isso recomendo como uma forma eficiente de lidar com essas coisas? Eu estava pensando um multimap, com a relativamente fácil de configurar do ser fundamental o que quer (Food, comer, descansar, et cetera) e outro bit (Desculpe, minha mente tenha caducado), sendo o que se associa com essa necessidade.

Por exemplo, digamos que temos um frigorífico. O frigorífico contém alimentos (Apenas um objeto de base genérico). Inicialmente, a pessoa não frigorífico associado com a comida, mas não alimentar associado com a fome. Então, quando sua fome cresce, ela começa a olhar arbitrariamente para o alimento. Se nenhum alimento está ao alcance de "usos" objetos para encontrar comida. Uma vez que não tem associações com alimentos conhecido ele usa coisas à toa (provavelmente procurando o objeto mais próximo e se expandindo para fora). Uma vez que ele usa / abre a geladeira vê comida, fazendo a ligação (Leia: inserir o par de "alimentos, frigorífico"). Que o frigorífico contém alimentos

Agora, eu percebo isso será muito mais complexa do que parece, e eu estou preparado para martelar-lo. A questão é: seria um Multimap ser adequado para uma lista (possivelmente) exponencialmente crescente de associações? Se não, qual seria?

A segunda questão que eu tenho é provavelmente muito mais fácil. Simplificando, seria uma interface de objeto / produto genérico ser adequado para a maioria qualquer produto? Em outras palavras, seria um "uso" de trabalho interface genérica para o que eu pretendo? Eu não acho que eu estou explicando isso muito bem.

De qualquer forma, todos os comentários são apreciados.

Foi útil?

Solução

Se você estava fazendo isso como um projeto de desenvolvimento de hard-core, eu sugiro usar o equivalente a reflexão Java (substitua o idioma de sua escolha lá). Se você quer fazer um projeto de brinquedo como um esforço de arranque, eu sugiro pelo menos rolando sua própria versão simples de reflexão, pelo seguinte raciocínio.

Cada artefato em seu ambiente oferece certas capacidades. Um modelo simples desse fato é perguntar o que "verbos" são aplicáveis ??a cada objeto seus encontros personagem virtual (incluindo possível dependência sobre o estado atual do objeto). Por exemplo, seu personagem pode "abrir" uma geladeira, uma caixa de cereal, ou um livro, desde que cada um deles está em um estado "fechado". Uma vez que um livro é aberto, seu personagem pode lê-lo ou fechá-lo. Uma vez que uma geladeira é aberta, seu personagem pode "olhar-in" para obter uma lista de conteúdos visíveis, pode remover um objeto a partir dele, coloque um objeto na mesma, etc.

O ponto é que uma situação típica pode envolver o seu personagem olhando ao redor para ver o que é visível, consultando um objeto para determinar seu estado atual ou o que pode ser feito com ele (isto é, "o que-state" e "what-can- i-fazer" são verbos gerais aplicáveis ??a todos os objetos), e, em seguida, usar o conhecimento sobre o seu estado actual, o estado do objeto, ea lista verbo para esse objeto para tentar fazer várias coisas.

Com a implementação de um conjunto de feedback positivo e negativo, ao longo do tempo o seu personagem pode "aprender" em que circunstâncias ele deve ou não deve se envolver em comportamentos diferentes. (Você poderia, obviamente, fazer esta simulação interativa por tê-lo pedir ao usuário para participar no fornecimento de feedback.)

A descrição acima é apenas um esboço, mas talvez ele possa lhe dar algumas idéias interessantes para brincar. Diverta-se! ; -)

Outras dicas

Para a primeira pergunta:

O meu entendimento é que você tem relacionamento um-para-possivelmente-muitos. Então, sim, um multimap parece apropriada para mim.

Para a segunda pergunta:

Sim, eu acredito que uma interface genérica para objetos é apropriado. Talvez usar algo semelhante ao RESTO para manipular o estado do objeto.

Eu ouvi um podcast um tempo atrás com o desenvolvedor A Noble Ape Simulação , o que pode ser interessante a você - conceptwise e talvez codewise, como você pode plain código fonte, bem como download de binários .

O podcast foi FLOSS Weekly 31 com Randal Schwartz e Leo Laporte.

vida com lisp (sbcl):)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top