seuqram Posted April 22, 2012 at 12:55 PM Report #450506 Posted April 22, 2012 at 12:55 PM pessoal, alguem conhece alguma função para mover para uma variavel os fps que o pc que esteja a usar o programa tenha? porque se eu não souber nuns pcs um objeto é mais rapido e noutros mais lento! fazia assim: movimento do objeto=100/fps
polska Posted April 22, 2012 at 01:16 PM Report #450510 Posted April 22, 2012 at 01:16 PM pessoal, alguem conhece alguma função para mover para uma variavel os fps que o pc que esteja a usar o programa tenha? porque se eu não souber nuns pcs um objeto é mais rapido e noutros mais lento! fazia assim: movimento do objeto=100/fps Fiquei intrigado com a tua pergunta, eu não sei como fazer mas decidi ir pesquisar e encontrei um site a explicar como calcular os fps de um demo, com o uso da função GetTickCount() , http://pjmoo.codigolivre.org.br/gdj/pag_artigo_leitura.php?id=13 . Vê se te ajuda ;D Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.
HappyHippyHippo Posted April 22, 2012 at 01:52 PM Report #450517 Posted April 22, 2012 at 01:52 PM epa ... a tua pergunta estava com um português muito difícil de perceber ... mas parece que pretendes saber como efectuar o calculo do fps ??? simples : #include <time.h> void calcFPS(time_t * frame_time, int * frame_count) { time_t current_time = time(NULL); if (current_time != *frame_time) { // <------------- FPS = frame_count --------------> *frame_time = current_time; *frame_count = 0; } (*frame_count)++; } int main() { time_t frame_time = time(NULL); int frame_count = 0; while() { doFrame(); calcFPS(&frame_time, &frame_count); } } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
bsccara Posted April 22, 2012 at 02:13 PM Report #450523 Posted April 22, 2012 at 02:13 PM Para jogos simples podes fazer isso ao contrário; defines as FPS que pretendes que o jogo tenha (o minimo necessário para que o jogo flua convenientemente) e crias um temporizador para disparar esse número de vezes por segundo. No ciclo principal controlas toda a lógica do jogo, passo a passo, (sem alterar a janela do jogo) e depois ficas à espera do disparo do temporizador. Quando o temporizador disparar, colocas todos os objectos do jogo na janela. Uma coisa tipo (pseudo-código) : define_temporizador(30ms); white (true) { testa_colisões; actualiza_posições; escolhe_estado_das_sprites; faz_som_asincrono; espera_disparo_do_temporizador; coloca_objectos_do_jogo_na_janela; } Assim evitas flutuações na velocidade do jogo.
seuqram Posted April 22, 2012 at 04:48 PM Author Report #450541 Posted April 22, 2012 at 04:48 PM tou um bocado confuso 😛
bsccara Posted April 22, 2012 at 11:46 PM Report #450642 Posted April 22, 2012 at 11:46 PM static volatile int desenhado = 0; void desenha(void) { /* Desenha o jogo */ desenhado = 1; } void instala_timer(void) { install_timer(); install_int(desenha,30); } int main() { instala_timer(); while (jogo_a_decorrer) { /* Calcula posições, escolhe sprintes, toca sons, lê teclado */ while (desenhado == 0); /* A thread principal fica aqui até que a thread do timer execute a função 'desenha' */ desenhado == 0; } } Este pseudo-código mostra o conceito; em vez da variável 'desenhado' deverias usar um semáforo mas por agora podes tentar assim. Mas a variável tem de ser declarada como volatile porque vais alterá-la em duas threads. Estuda isto: http://alleg.sourceforge.net/stabledocs/en/alleg005.html
seuqram Posted May 11, 2012 at 12:33 PM Author Report #454571 Posted May 11, 2012 at 12:33 PM quer dizer se meter o rest no ciclo ele manipula mais ou menos os fps? exemplo: while(programa!=0) { rest(100); ... }
HappyHippyHippo Posted May 11, 2012 at 02:39 PM Report #454613 Posted May 11, 2012 at 02:39 PM o que tens de fazer é : - saber à partida quanto tempo deverá levar entre a apresentação de uma frame para o outro: se queres 60 frames por segundo, tens 1000/60 ~= 33.3 milisegundos - fazer a aplicação "parar" durante um tempo necessário para que este tempo calculado seja respeitado: ao começar a apresentação de um frame verificar o tempo inicial calcular a lógica do jogo apresentar o frame verificar o tempo que passou fazer a aplicação "parar" o tempo que falta : 33.3 - (tempo_actual - tempo_inicial) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
bsccara Posted May 11, 2012 at 02:58 PM Report #454623 Posted May 11, 2012 at 02:58 PM quer dizer se meter o rest no ciclo ele manipula mais ou menos os fps? Agora sou eu que não percebo... rest?
pikax Posted May 11, 2012 at 03:06 PM Report #454625 Posted May 11, 2012 at 03:06 PM seuqram sabes pelo o menos o que sao os "fps"? Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
seuqram Posted May 11, 2012 at 03:47 PM Author Report #454652 Posted May 11, 2012 at 03:47 PM Agora sou eu que não percebo... rest? rest (em allegro usa-se para esperar determinado tempo em milisegundos...)
seuqram Posted May 11, 2012 at 03:49 PM Author Report #454654 Posted May 11, 2012 at 03:49 PM seuqram sabes pelo o menos o que sao os "fps"? então n havia de saber -.- farm per second... quadros por segundo... mas faz-se isso para o que eu quero?, é que no meu jogo que estou a fazer, utilizei essa função e acho que resultou!
pikax Posted May 11, 2012 at 04:16 PM Report #454665 Posted May 11, 2012 at 04:16 PM então n havia de saber -.- farm per second... quadros por segundo... mas faz-se isso para o que eu quero?, é que no meu jogo que estou a fazer, utilizei essa função e acho que resultou! Nao significa "quintas por segundo"... B) FPS significa frames per second(fotogramas por segundo). Que quer dizer que num segundo sao "mostradas" X imagem diferentes, o que podes fazer e' ver quantas iteracoes do jogo houve num segundo. Ou fazer um GetTickCount(em windows) e fazer end-begin e saber quanto demorou aquele frame e fazer o calculo para quantos frames poderiam ser feito em um segundo. Ja' agora eu perguntei se sabias o que sao os FPS, porque eu a ler este topico, pareceu.me que nao sabes o que e'. Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
seuqram Posted May 11, 2012 at 04:19 PM Author Report #454666 Posted May 11, 2012 at 04:19 PM Nao significa "quintas por segundo"... B) FPS significa frames per second(fotogramas por segundo). Que quer dizer que num segundo sao "mostradas" X imagem diferentes, o que podes fazer e' ver quantas iteracoes do jogo houve num segundo. Ou fazer um GetTickCount(em windows) e fazer end-begin e saber quanto demorou aquele frame e fazer o calculo para quantos frames poderiam ser feito em um segundo. Ja' agora eu perguntei se sabias o que sao os FPS, porque eu a ler este topico, pareceu.me que nao sabes o que e'. FPS é um tipo de jogo! 3d de tiros... B) E tambem é frames per second...
pikax Posted May 11, 2012 at 04:26 PM Report #454672 Posted May 11, 2012 at 04:26 PM Eu acho que estas errado. Tenho a certeza que F.P.S. significa "Federacao Portuguesa de Surf" e tambem pode ser "Fator de Proteção Solar" Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
seuqram Posted May 11, 2012 at 04:41 PM Author Report #454677 Posted May 11, 2012 at 04:41 PM Eu acho que estas errado. Tenho a certeza que F.P.S. significa "Federacao Portuguesa de Surf" e tambem pode ser "Fator de Proteção Solar" -.-"
HappyHippyHippo Posted May 11, 2012 at 04:46 PM Report #454681 Posted May 11, 2012 at 04:46 PM Eu acho que estas errado. Tenho a certeza que F.P.S. significa "Federacao Portuguesa de Surf" e tambem pode ser "Fator de Proteção Solar" as duas outras opções que a wikipedia apresenta ... podias dizer tipo: - Filhoses Para Senhoras - Flight Pacific Sender - Fedelhos Perdidos de Santarem ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
seuqram Posted May 11, 2012 at 04:49 PM Author Report #454684 Posted May 11, 2012 at 04:49 PM resumindo e concluindo B) posso meter só rest?
HappyHippyHippo Posted May 11, 2012 at 04:51 PM Report #454688 Posted May 11, 2012 at 04:51 PM leste o meu post de como limitar os FPS ??? e sim ... se o rest faz o que dizes fazer, sim podes usar, tendo em conta o tempo que o rest tem de realizar IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pikax Posted May 11, 2012 at 04:53 PM Report #454690 Posted May 11, 2012 at 04:53 PM resumindo e concluindo B) posso meter só rest? Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now