12
Introdução à Lógica e Programação
UMG
1
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
15
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
57
Introdução à Lógica e Programação
UMG
59
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
3
Introdução à Lógica e Programação
UMG
2
Introdução à Lógica e Programação
UMG
Texto de pré-visualização
Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis Engenharia de Computação Disciplina Introdução a Ciência da Computação Prof Luis Retondaro 1 Uma produtora de jogos utiliza um software especial para construir seus cenários virtuais em 3D Em particular o software de construção de terreno funciona assim Na tela aparece um quadrado bidimensional que representa a área do terreno a ser modelado O quadrado é subdividido 200 vezes de maneira regular em uma malha Isto significa que a malha contém 200x200 quadrinhos Em cada quadrinho o usuário assistente coloca um valor que indica a elevação ou o rebaixamento do relevo naquele ponto Assim após a conclusão do seu trabalho cada quadrinho terá um número que indica a altura do terreno naquele ponto Se o número for positivo há uma elevação se o número for negativo há um rebaixamento porém se o número for 0 o terreno está no nível original Desta forma o designer do jogo poderá modelar montanhas e vales com base nos dados desta malha que inicialmente está toda zerada Observe a figura abaixo como exemplo É apenas uma ilustração já que inicialmente a malha só contém zeros 0 A figura mostra a ampliação de uma parte da malha onde os dados revelam montes e vales Por exemplo no ponto 42 há um monte de 3 unidades de altura e no ponto 35 há um vale de 2 unidades de profundidade 2 adad Como os níveis de elevação e rebaixamento são informados Quando o usuário quer informar que um dado quadrinho será elevado ou rebaixado em uma unidade ele informa X Y Sinal onde X e Y são as coordena das e Sinal ou se Sinal for a malha terá seu valor acrescido de 1 unidade naquele ponto se Sinal for a malha terá seu valor decrescido de 1 unidade naquele ponto O problema é que para cada quadrinho onde a altura é modificada seus vizinhos diretos também são alterados com a diferença de uma unidade a menos ou a mais No caso de elevação os vizinhos deverão manterse a uma unidade a menos do ponto elevado No caso de rebaixamento os vizinhos deverão manterse a uma unidade a mais do ponto rebaixado Veja o exemplo da primeira figura Porém 3 casos podem ocorrer 1 Inicialmente um quadrinho qualquer poderá passar de 0 para 1 ou 1 e seus vizinhos permanecerão 0 para manter a diferença requerida acima 2 Em um dado quadrinho que tem um número diferente de 0 quando o usuário indicar a operação ou todos os seus vizinhos serão afetados igualmente ou seja terão o mesmo valor seja aumentando ou diminuindo 1 unidade 3 Em um dado quadrinho que tem vizinhos com números distintos ao seu redor quando o usuário indicar a operação os valores dos vizinhos serão adicionados em 1 ou diminuídos em 1 mas com certeza permanecerão diferentes um do outro mantendo a coerência Veja estes outros exemplos a Considere que a porção da malha abaixo está com os seguintes valores de altura Então o usuário informa que deseja inserir o seguinte dado 1 1 o resultado será b Considere agora esta outra porção de malha com as seguintes alturas Então o usuário informa que deseja inserir o seguinte dado 1 1 o resultado será Caso a posição esteja próxima a uma das bordas os vizinhos a serem alterados devem claro corresponder à área do terreno somente Exemplos Para a posição 20 os vizinhos são 10 11 e 21 Para a posição 21 os vizinhos são 10 11 12 20 e 22 Você deve evitar sempre que os quadrinhos que são considerados como vizinhos extrapolem o terreno dimensões da malha pois eles de fato não existem e não podem ser considerados Quest ão Você deve escrever uma função em pseudo código que irá efetuar uma elevação ou rebaixamento em determinada parte da malha levando em consideração as alterações já efetuadas anteriormente Esta operação sendo executada diversas vezes irá fornecer a malha modificada para o designer
12
Introdução à Lógica e Programação
UMG
1
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
15
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
57
Introdução à Lógica e Programação
UMG
59
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
3
Introdução à Lógica e Programação
UMG
2
Introdução à Lógica e Programação
UMG
Texto de pré-visualização
Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis Engenharia de Computação Disciplina Introdução a Ciência da Computação Prof Luis Retondaro 1 Uma produtora de jogos utiliza um software especial para construir seus cenários virtuais em 3D Em particular o software de construção de terreno funciona assim Na tela aparece um quadrado bidimensional que representa a área do terreno a ser modelado O quadrado é subdividido 200 vezes de maneira regular em uma malha Isto significa que a malha contém 200x200 quadrinhos Em cada quadrinho o usuário assistente coloca um valor que indica a elevação ou o rebaixamento do relevo naquele ponto Assim após a conclusão do seu trabalho cada quadrinho terá um número que indica a altura do terreno naquele ponto Se o número for positivo há uma elevação se o número for negativo há um rebaixamento porém se o número for 0 o terreno está no nível original Desta forma o designer do jogo poderá modelar montanhas e vales com base nos dados desta malha que inicialmente está toda zerada Observe a figura abaixo como exemplo É apenas uma ilustração já que inicialmente a malha só contém zeros 0 A figura mostra a ampliação de uma parte da malha onde os dados revelam montes e vales Por exemplo no ponto 42 há um monte de 3 unidades de altura e no ponto 35 há um vale de 2 unidades de profundidade 2 adad Como os níveis de elevação e rebaixamento são informados Quando o usuário quer informar que um dado quadrinho será elevado ou rebaixado em uma unidade ele informa X Y Sinal onde X e Y são as coordena das e Sinal ou se Sinal for a malha terá seu valor acrescido de 1 unidade naquele ponto se Sinal for a malha terá seu valor decrescido de 1 unidade naquele ponto O problema é que para cada quadrinho onde a altura é modificada seus vizinhos diretos também são alterados com a diferença de uma unidade a menos ou a mais No caso de elevação os vizinhos deverão manterse a uma unidade a menos do ponto elevado No caso de rebaixamento os vizinhos deverão manterse a uma unidade a mais do ponto rebaixado Veja o exemplo da primeira figura Porém 3 casos podem ocorrer 1 Inicialmente um quadrinho qualquer poderá passar de 0 para 1 ou 1 e seus vizinhos permanecerão 0 para manter a diferença requerida acima 2 Em um dado quadrinho que tem um número diferente de 0 quando o usuário indicar a operação ou todos os seus vizinhos serão afetados igualmente ou seja terão o mesmo valor seja aumentando ou diminuindo 1 unidade 3 Em um dado quadrinho que tem vizinhos com números distintos ao seu redor quando o usuário indicar a operação os valores dos vizinhos serão adicionados em 1 ou diminuídos em 1 mas com certeza permanecerão diferentes um do outro mantendo a coerência Veja estes outros exemplos a Considere que a porção da malha abaixo está com os seguintes valores de altura Então o usuário informa que deseja inserir o seguinte dado 1 1 o resultado será b Considere agora esta outra porção de malha com as seguintes alturas Então o usuário informa que deseja inserir o seguinte dado 1 1 o resultado será Caso a posição esteja próxima a uma das bordas os vizinhos a serem alterados devem claro corresponder à área do terreno somente Exemplos Para a posição 20 os vizinhos são 10 11 e 21 Para a posição 21 os vizinhos são 10 11 12 20 e 22 Você deve evitar sempre que os quadrinhos que são considerados como vizinhos extrapolem o terreno dimensões da malha pois eles de fato não existem e não podem ser considerados Quest ão Você deve escrever uma função em pseudo código que irá efetuar uma elevação ou rebaixamento em determinada parte da malha levando em consideração as alterações já efetuadas anteriormente Esta operação sendo executada diversas vezes irá fornecer a malha modificada para o designer