Velho Fantasma 1: views (parte 1)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Velho Fantasma 1: views (parte 1)

Mensagem por saim em Sex 19 Out 2012, 20:14

Então eu decidi que quero participar do concurso e bolei um jogo que usa views.
Eu sempre tive problemas com views. Sempre evitei usá-las, mas nunca me conformei com isso.

Bom, pra facilitar minha vida, eu criei um script que deveria programar a room toda, desde que eu controlasse as views manualmente. Ao chamar o script, eu entro com a room a que ele se refere, a largura da room e a altura da room. Mas acontece que eu quero criar uma room que seja duma altura maior que a view.
Eis o script:
Código:
// room com view(room, largura, altura, "objeto")
// define as coordenadas da janela e tamanho da room (argument0), além de criar um objeto

room_set_width(argument0, argument1); room_set_height(argument0, argument2);
var xx, yy;
xx = string((display_get_width() - argument1) / 2);
yy = string(display_get_height() - argument2 - 32);



room_set_code(argument0, '
view_enabled = true;
view_visible[0] = true;
view_xview[0] = 0; view_yview[0] = room_height - ' + string(argument2) + ';
view_xport[0] = 0; view_yport[0] = 0;
view_wview[0] = room_width; view_hview[0] = ' + string(argument2) + '; //mexer com valores?
view_wport[0] = room_width; view_hport[0] = ' + string(argument2) + '; //mexer com valores?
view_angle[0] = 0;
window_set_position(' + xx + ', ' + yy + ');

instance_create(room_width / 2, room_height / 2, ' + argument3 + ');
')
Ah, sim, eu também tenho que entrar com um objeto pra ser criado na room (que é sempre o objControle, que por sua vez cria os demais).

Minha primeira tentativa de ajeitar isso foi mudando o tamanho da room de "argument2" pra "argument2 * 3". A janela do jogo ficou com o triplo do tamanho, claro.
Aí, eu tentei usar as funções "room_set_view" e "room_set_view_enabled", antes da room ser criada (antes de room_set_code). Fiquei com a impressão de que não fez nem cócegas.

Eu desisto. Como faço pra view ser menor que a room, através de um script (que pode definir o creation code da room) a ser rodado antes do jogo começar?

Na parte 2 da pergunta (em tópico a ser criado): minha engine de escuridão está fugindo da janela!!!

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por Alex FC em Sex 19 Out 2012, 20:52

saim, deixa eu ver se eu entendi. Você quer mudar o tamanho da room em tempo real?

Se for isso, só será possível executar códigos de mudança de tamanho da view ou da room, enquanto você estiver em outra room (Esta só teria essa finalidade de mudar o tamanho). Logo você teria que marcar a room desejada como persistente e ficar trocando de uma à outra o tempo todo ou toda vez que usar o comando de mudar de tamanho.

Aimda não entendi muito bem, poderia "explanar" um pouco mais?

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por saim em Sex 19 Out 2012, 21:31

Não em tempo real, só mudar, DEFINIR o tamanho dela.
Ela não existe, daí eu crio ("rmPlay = room_add();") e chamo o "script" (que, por enquanto, é um arquivo externo): execute_file(working_directory + "\play.room", rmPlay, larTela, altTela, "objControle");. É nesse arquivo que eu coloco o script. rmPlay é a room, larTela é a largura da view, altTela, a altura e objControle, o objeto que vou criar na room.

Aí eu queria uma room com tamanho fixo, uma largura de uns 300 pixels e uma altura de , digamos, 3000 pixels, numa janela de 300x500 pixels (depois eu procuro as dimensões de um celular real). Era pra view ficar no fundo da room e ir se arrastando pra cima.
Mas está sendo um desaste...

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por luiz_eldorado em Sex 19 Out 2012, 23:56

Sinceramente, não entendi quase nada. O que você quer fazer?
Me parece que de algum modo você está centralizando a janela do jogo na tela.
As room são sempre maiores ou iguais aos tamanhos da views, eu acho.
Código:
view_wview[0] = room_width; view_hview[0] = ' + string(argument2) + '; //mexer com valores?
Faz diferença entre room_width e o argument2? Você não seta o room_width como argument2?
Isso era pra ser simples. Vou tentar alguns códigos.

#Edit:
Fiz modifiquei Me baseei no seu script para criar este:
Código:
//views(room,w,h,obj);
//Seta as views de uma room, além de criar um objeto

var fx,fy;
fx=300; fy=3000;

//Tamanho fixo, você quem disse
room_set_width(argument0,fx);
room_set_height(argument0,fy);

//Aqui eu centralizo a tela (ah sei lá!)
var xx,yy;
xx=display_get_width()-(argument1/2);
yy=display_get_height()-(argument2/2);

room_set_view_enabled(argument0,1); //1=true;
room_set_view(argument0,0,1,0,0,argument0,argument1,0,0,300,3000,32,32,-1,-1,-1);

//Em vez de instance_create()
room_instance_add(argument0,room_width/2,room_height/2,argument3);

//Essa não teve jeito xD
room_set_code(argument0,'window_set_position('+xx+','+yy+');');
Como quer que a room seja maior que a view se você seta ela com o mesmo tamanho? Acho que você não está num bom dia...

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por Alex FC em Sab 20 Out 2012, 00:29

saim, creio que seja a forma como passamos da room atual para a nova room que faz com que isso aconteça. Os argumentos do luiz_eldorado estão perfeitos para uma room adicionada normalmente. Mas para uma room adicionada com room_add() a view não é ativada.

Continuarei tentando aqui...

EDIT: Consegui:

http://sdrv.ms/S4R5rv

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por luiz_eldorado em Sab 20 Out 2012, 09:45

Alex FC escreveu:Os argumentos do luiz_eldorado estão perfeitos para uma room adicionada normalmente. Mas para uma room adicionada com room_add() a view não é ativada.
Por quê? Acho que o room_set_view_enabled faz isso.
Baixei o arquivo. Boa engine, funciona. Vi que você inverteu o tamanho da room com o da view nos argumentos do script. Pensando melhor, assim é o certo.

Agora vamos ver o que o saim tem pra dizer.

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por saim em Sab 20 Out 2012, 10:19

luiz_eldorado escreveu:O que você quer fazer?
Cria uma room, via código, cuja view é menor que a room.
luiz_eldorado escreveu:Me parece que de algum modo você está centralizando a janela do jogo na tela.
Sim! Smile E na parte de baixo.
luiz_eldorado escreveu:As room são sempre maiores ou iguais aos tamanhos da views, eu acho.
Na verdade, não. Teoricamente, não existem limites. Você pode fazer uma room minúscula e esticá-la pra ocupar a view toda, por exemplo (embora eu duvide que alguém vá fazer isso algum dia). Mas isso é teoria, como eu disse, eu sempre me dei mal com as views.
luiz_eldorado escreveu:
Código:
view_wview[0] = room_width; view_hview[0] = ' + string(argument2) + '; //mexer com valores?
Faz diferença entre room_width e o argument2? Você não seta o room_width como argument2?
Não faz diferença. É que eu gosto de usar os arguments só no começo do script, colocando os valores em variáveis com nomes mais intuitivos.
[edit:] Não, faz diferença sim! argument2 é a ALTURA. E eu não usei o room_height porque estava querendo usar a altura da view diferente da altura da room. Achei que tinha colocado o meu script-padrão, mas acho que mantive essa parte modificada.
luiz_eldorado escreveu:Isso era pra ser simples.
Eu que o diga!
[quote="luiz_eldorado"]Me baseei no seu script para criar este[code]Ele tem o mesmo problema que a minha alteração... A janela fica imensa! Mas não é igual, parece que a view fica esticada, de alguma forma.
luiz_eldorado escreveu:Como quer que a room seja maior que a view se você seta ela com o mesmo tamanho? Acho que você não está num bom dia...
saim escreveu:Minha primeira tentativa de ajeitar isso foi mudando o tamanho da room de "argument2" pra "argument2 * 3".
Depois tentei outras alternativas, mas tudo sem sucesso...

Alex FC escreveu:Consegui
PERFEITO!!! Ainda não vi onde estava o erro, vou estudar mais um pouco pra ver se entendo. Acho que ajeitar a view no create da room realmente não é uma boa. Gozado, eu TENTEI usar room_set_view (ver post inicial), devo ter errado os argumentos.

Oops, tenho que correr! Eu ainda tenho o que escrever aqui, mas escrevo depois. Valeu, moçada!!!
Edit: ih, Alguém escreveu enquanto eu digitava. Não dá pra ler agora, tenhoqueirtchau!


Última edição por saim em Sab 20 Out 2012, 16:50, editado 2 vez(es)

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por Alex FC em Sab 20 Out 2012, 10:55

Tanto o seu script como o do luiz_eldorado possuiam erros. Vamos começar pelo seu:

view_wview[0] = room_width; view_hview[0] = ' + string(argument2) + '; //mexer com valores?
view_wport[0] = room_width; view_hport[0] = '
+ string(argument2) + '; //mexer com valores?

Creio que você quiz poupar tempo e copiou a primeira linha para segunda, mudando apenas o port e o view.

view_hview[0] é o tamanho da view vertical na room, no caso 500, mas tu colocou o valor do argument2, que no caso é 3000. Logo, a view teria o mesmo tamanho da room. O mesmo acontece com view_hport[0] que é o tamanho da janela no monitor. Logo só troquei os argument2 por 500.

No código do luiz_eldorado (visivelmente parecia certo, mas depois notei o 3000):

room_set_view(argument0,0,1,0,0,argument0,argument1,0,0,300,3000,32,32,-1,-1,-1);

-Primeiro erro é que o argument0 é o ID da room e ele foi colocado em wview que é a largura da view;
-Segundo erro é que no valor de hview (altura da view) está o argument1 que é a largura da room;
-Terceiro erro é que o valor de hport (altura da janela no monitor) está 3000, logo a janela ficaria do tamanho vertical da room;

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por saim em Sab 20 Out 2012, 16:45

Alex FC escreveu:view_wview[0] = room_width; view_hview[0] = ' + string(argument2) + '; //mexer com valores?
view_wport[0] = room_width; view_hport[0] = '
+ string(argument2) + '; //mexer com valores?

Creio que você quiz poupar tempo e copiou a primeira linha para segunda, mudando apenas o port e o view.

view_hview[0] é o tamanho da view vertical na room, no caso 500, mas tu colocou o valor do argument2, que no caso é 3000. Logo, a view teria o mesmo tamanho da room. O mesmo acontece com view_hport[0] que é o tamanho da janela no monitor. Logo só troquei os argument2 por 500.
Não, aquele é um script-padrão que eu usava até ontem (quando percebi que ele não era uma boa...). No teste, eu defini a altura da room como 3 * argument2 (podia ser 6 ou 10, é só um teste). O valor de argument2 era uns 500, mesmo.
Ainda (tipo, "até hoje", não apenas "apesar da sua explicação") não entendo qual a diferença entre view_hview e view_hport.
Por acaso alguém comentou a sua aula e eu dei uma nova olhada nela. Parece que hview é a altura que a view pega da room e hport, a altura que ela ocupa na tela, certo? (essa não é uma pergunte retórica, eu realmente não sei se está certo)
Mas no caso de usarmos duas ou mais views (como pra fazer HUDs, sei lá) o que determina o tamanho da janela do jogo? A maior view_hport, a view_hport[0] (por ser a primeira) ou alguma outra variável?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por cascavelo em Sab 20 Out 2012, 16:56

Saim, uma boa maneira de você entender a relação entre estas funções é pegar uma figura quaquer e colocar como background em uma room do mesmo tamanho da figura, depois simplesmente vá alterando os valores da view no editor de rooms e executando pra ver o que acontece. Fiz isto até entender o funcionamento de cada função, pra desenvolver pra android tem que dominar completamente o uso de views, é nesta parte que a maioria empaca.

cascavelo

Ranking : Nota A
Número de Mensagens : 1011
Idade : 46
Data de inscrição : 08/12/2011
Notas recebidas : A - A - A - A - A -A -C
Reputação : 71
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 1

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por saim em Sab 20 Out 2012, 19:12

É, essa é uma das coisas que eu tenho programadas no meu caderninho de "quando tiver um tempinho". Mas sempre que tenho um tempinho, acabo gastando ele com coisas inúteis. Quando eu peguei as particles pra valer, acabei entendendo direitinho como funcionam. Tenho que fazer isso com as views, mesmo (e o 3D, e os jogos multiplayer, e as DLLs...).
cascavelo escreveu:pra desenvolver pra android tem que dominar completamente o uso de views
Ih, caramba, achei que fosse só colocar a view do tamanho da tela e pronto! Lascou, vou ter que arrumar (e aproveitar) esse tempinho o mais breve possível!

Moçada, o papo tá ótimo, mas o que eu queria - fazer o código funcionar - eu já consegui. Se os moderadores quiserem, podem trancar. Se não quiserem, podem continuar a conversa (eu ia achar ótimo ter uma aulinha particular sobre views).

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Velho Fantasma 1: views (parte 1)

Mensagem por Conteúdo patrocinado Hoje à(s) 02:31


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum