• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Bruno

[Ajuda] Problema nas contas!

6 mensagens neste tópico

Introdução

Boa Tarde, como alguns saberão estamos, eu e mais 3 amigos meus, a desenvolver um jogo em PHP.

Gostaria de lançar uma beta no inicio da próxima semana mas com os trabalhos da universidade, com teste no Sábado e com algum atraso que tenho tido fica-me quase impossivel conciliar tudo!

Já perdi uma tarde a pensar neste problema e acho que se "perdesse" outra conseguiria resolvê-lo! Mas como há ainda muita coisa para fazer e como sei que deverá haver aqui programadores bem melhores que eu (e uma vez que isto é importante que fique eficiente) gostava que me dessem uma ajuda! (eu assim aproveito e vou fazendo outras coisas).

Linguagem, detalhe do código...

Não vos venho pedir o código mas sim uma ideia que poderá ser representada em Pseudo-Código!

De qualquer modo sei C, Java, PHP, ... portanto caso se sintam mais à vontade em apresentar uma solução numa destas linguagens eu não terei qq problema em comprendê-las :)

Descrição Geral

Neste jogo existem 7 economias: Metal, Diamante, Hidrogénio, Zion, Plutonite, Nanites e Energia

De modo a simplificar vamos supor que o seguinte "10 0 1 0 0 0 -10" significa que por hora serão produzidos 10 de metal, 1 de hidrogénio e consumidos 10 de energia!

Para a economia cresçer é necessário construir os seguintes edificios: Mina de Metal, Mina de Diamantes, Extractor de Hidrogénio, Fábrica de Computadores, Extractor de Plutonite, Fábrica de Nanites, Paineis Solares e Central Nuclear.

Cada edificio terá um nivel de evolução associado produzindo/consumindo mais consuante a evolução.

Produção/Consumo dos Edificios no nivel 1:

  • Mina de Metal -> 20 0 0 0 0 0 -11
  • Mina de Cristal -> 0 10 0 0 0 0 -9
  • Extractor de Hidrogénio -> 0 0 5 0 0 0 -10
  • Fábrica de Computadores -> 0 0 0 16 0 0 -100
  • Extractor de Plutonite -> 0 0 0 0 18 0 -1000
  • Fábrica de Nanites -> 0 0 0 -50 -20 8 -4000
  • Paineis Solares -> 0 0 0 0 0 0 20
  • Central Nuclear -> 0 0 -40 0 0 0 1000

Problema:

Quando a energia total existente não chega para todos os que consomem é preciso reduzir uma percentagem em cada um.

Caso simples (apenas 2 edificios):

Mina de Metal está a produzir 100 e a consumir 40 de energia.

Paineis Solares está a produzir 30.

Logo EnergiaProduzida/EnergiaNecessária -> 30/40 -> 0,75 (se <1 quer dizer que a energia não chega)

Assim sendo se a produção da Mina desçer para 75% a energia chega (passará a produzir -> 100*0,75= 75 e a consumir -> 40*.75=30)

Caso ainda simples (apenas 2 edificios):

Extractor de Hidrogénio está a produzir 3 e a consumir 50 de energia

A central nuclear está a produzir a 1000 de energia e a consumir 50 de hidrogénio

Uma vez que a central nuclear produz energia consumindo hidrogénio e o hidrogénio não chega para tal precisamos de:

1000 ------> 50

???? -------> 3

1000*3/50 = 600 de energia!

Temos então EnergiaProduzida/EnergiaNecessária -> 600/50 -> 12

Ok 12>1 logo temos energia que chegue! :confused:

Caso mais complicado (apenas com 2 edificios):

Extractor de Hidrogénio está a produzir 3 e a consumir 50 de energia

A central nuclear está a produzir a 100 de energia e a consumir 50 de hidrogénio

Como foi feito anteirormente:

100 ------> 50

??? -------> 3

3*100/50 = 6 de energia.

Temos então EnergiaProduzida/EnergiaNecessária -> 6/50 -> 0,12 (<1 logo não chega)

Isto fica em ciclo pois se baixar a energia do hidrogénio a produção do mesmo baixa. Se a produção do mesmo baixa então a central também já não terá os 3!

Caso +- complicado (com 3 edificios):

Mina de Metal está a produzir 10 e a consumir 100 de energia

Extractor de Hidrogénio está a produzir 3 e a consumir 50 de energia

A central nuclear está a produzir a 100 de energia e a consumir 5 de hidrogénio

Temos que começar pelo caso da central nuclear:

100 ------> 5

??? -------> 3

??? = 60 de Energia.

Temos então EnergiaProduzida/EnergiaNecessária -> 60/(50+100) -> 0,4 (<1 logo não chega)

Uma vez que não temos energia e que se desçermos o hidrogénio só temos a perder, então vamos apenas desçer o que não afecta a energia (a mina de metal).

Assim sendo as contas mudam um pouco:

Energia necessária para o hidrogénio -> 50, logo 60-50=10. Temos 10 que dão para o metal, assim sendo:

10 ------> 100

?? ------> 10

?? = 1

O metal produzirá 1 por hora.

Penúltimo caso:

Mina de Metal está a produzir 10 e a consumir 125 de energia

Extractor de Hidrogénio está a produzir 10 e a consumir 100 de energia

A central nuclear está a produzir a 100 de energia e a consumir 5 de hidrogénio

Uma vez que temos hidrogénio que chegue então podemos produzir a energia a 100%.

Temos então EnergiaProduzida/EnergiaNecessária -> 100/(100+125) = 0,44 (<1 logo não chega)

Vamos então ter que desçer a produção de hidrogénio e de metal MAS só devemos desçer o hidrogénio até ficar no minimo necessário para a central nuclear.

Assim sendo fazemos as contas para o hidrogénio:

10 ----> 100

05 ----> ???

??? = 50

Assim sendo sabemos que o hidrogénio desçe 50% e então quanto desçerá o metal?

A cental nuclear produz 100 e precisamos de 50 para o hidrogénio então sobram os outros 50... Se o metal consome 125 então:

10 ---> 125

?? ----> 50

?? = 4

Problema mais complexo ainda (com 7 edificios):

Mina de Metal está a produzir 10 e a consumir 500 de energia

Extractor de Hidrogénio está a produzir 40 e a consumir 300 de energia

A fábrica de Computadores (zion) está a produzir 180 e a consumir 300 de energia

Extractor de Plutonite está a produzir 40 e a consumir 300 de energia

A fábrica de Nanites está a produzir 10 mas consome 200 de zion, 50 de plutonite e 1000 de energia

Paineis Solares está a produzir 500 de energia

A central nuclear está a produzir a 1000 de energia e a consumir 50 de hidrogénio

Este não o irei resolver mas deixo aqui alguns dos passos (n estão por ordem):

A central nuclear terá que desçer a produção pois só temos 40 de hidrogénio por hora!

Verificar a fábrica de Nanites uma vez que ela precisa de 200 de zion e 50 de plutonite e não os tem (logo irá produzir e consumir menos)

Será necessario verificar quanto é necessário desçer as produções/consumos tendo em conta a energia que é produzida (recordar que o hidrogénio n deverá desçer uma vez que é consumido na totalidade). Há que ter em conta o ciclo que isto provoca na Fábrica de Nanites, pois a cada desçida dos seus requesitos esta também desçerá.

Em suma o meu objectivo no fim é ter um vector em que cada casa tem as percentagens que devo multiplicar pela produção/consumo de cada edificios (são 8 edificios, logo terá 8 casas).

Ligeiro resumo

Há que ter em conta as dependencias da central nuclear que consome hidrogenio (este n deve desçer a mesma % que os outros a não ser que o decresçimo não influencie a central).

Há que ter em conta que a fábrica de nanites consome zion, plutonite e energia e é necessario que ela desça a sua produção/consumo consuante a disponibilidade de recursos!

Ora, com isto e com os exemplos acho que especifiquei o problema e aguardo questões/duvidas ou alguem que tente elaborar o algoritmo! :D

Um obrigado a quem tentar ;)

(espero que não me tenha enganado em nada)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, esqueçi-me de dizer que tenho alguma pressa!

O ideial era implementá-lo na 6ªf, mas no maximo Sabado até à hora de almoço!Pois caso não haja nenhuma solução apresentada até lá, irei dedicar-me a isto no Sabado (e Domingo caso seja preciso)

Obrigado! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem , tentei ler tudo , é parecido com o nivél de produção do Ogame, é capaz de fazer perder umas boas horas a pensar.

Se Encontrares solução, posta que gostava de ler :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho pena que quase ninguem se interessou :P

Obrigado aos que tentaram!

Gurzi depois digo-te como fiz pelo MSN :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem... tens ai umas belas dores de cabeça, gostava de te ajudar mas issu vai um bocado grande alem dos meus conhecimentos (não sou grande coisa nessas coisas de contas :S)

Restame entao desejar boa sorte :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hoje enquanto passeava pelo Cyberium, tive curiosidade em perceber como funcionava o sistema de produções e lembrei-me deste tópico.

Eu sei que estou a desenterrar este tópico... Bruno, se puderes deixa aqui como fizeste. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora