Académique Documents
Professionnel Documents
Culture Documents
Terceiro trabalho
Data: 11-12-2015
I. Introdução
Neste terceiro trabalho prático são implementados recursos adicionais à versão original do jogo
bearwhack. Um destes recursos é um menu na tela inicial, que permite ao usuário iniciar o jogo ou
escolher um nível de dificuldade. Os demais recursos estão relacionados com a implementação de quatro
Para permitir ao usuário a flexibilidade de escolher um nível de dificuldade, foi criado um menu
MouseArea{
anchors.fill: parent
id: ma_start_button
onPressedChanged: {
if (pressed) {
parent.color = "lightgreen";
}
else if(released && containsMouse)
{
timer_load_game_screen.restart();
}
else if(released)
{
parent.color = "lightblue";
}
}
}
Timer {
id: timer_load_game_screen
interval: 100
running: false
repeat: false
onTriggered: {
start_button.color = "lightblue";
start_button.visible = false;
diffLevel_button.visible = false;
startScreen.visible = false;
particleSystem.running = true;
}
}
}
MouseArea{
anchors.fill: parent
id: ma_diffLevel_button
onPressedChanged: {
if (pressed) {
parent.color = "lightgreen";
}
else if(released && containsMouse)
{
timer_load_diffLevel_screen.restart();
}
else if(released)
{
parent.color = "lightblue";
}
}
}
Timer {
id: timer_load_diffLevel_screen
interval: 100
running: false
repeat: false
onTriggered: {
diffLevel_button.color = "lightblue"
start_button.visible = false;
diffLevel_button.visible = false;
diffLevel_text.visible = true;
diffLevel_1_button.visible = true;
diffLevel_2_button.visible = true;
diffLevel_3_button.visible = true;
diffLevel_4_button.visible = true;
}
}
}
MouseArea{
anchors.fill: parent
id: ma_diffLevel_1_button
onPressedChanged: {
if (pressed) {
parent.color = "lightgreen";
}
else if(released && containsMouse)
{
timer_load_main_screen.restart();
nivelDificuldade = 1;
velocity_with_umbrella.enabled = true;
sgoal_floating_wo_umbrella.enabled = false;
}
else if(released)
{
parent.color = "lightblue";
}
}
}
}
A. Nível de dificuldade 1
No nível de dificuldade 1, o urso pode apresentar três estados: flutuando sem sombrinha,
Todos os ursos iniciam-se no estado flutuando sem sombrinha. Assim que eles atingem
aproximadamente a metade da tela, eles abrem suas sombrinhas, reduzindo assim suas respectivas
velocidades. Para realizar o efeito de abertura da sombrinha dos ursos, foi criado um novo SpriteGoal, o
SpriteGoal {
groups: "bears"
once: true
id: sgoal_bear_open_umbrella
y: parent.height - 250
width: parent.width
height: 250
system: particleSystem
parent: particleSystem
goalState: "floating"
enabled: true
}
O SpriteGoal mostrado acima é ativado quando a coordenada y das posições dos ursos é maior do
recurso Friction. Este recurso é utilizado para reduzir velocidades de partículas. O código QML
responsável por configurar um Friction para reduzir a velocidade dos ursos é mostrado a seguir.
Friction {
id: velocity_with_umbrella
once: true
y: parent.height - 220
width: parent.width
height: 220
system: particleSystem
parent: particleSystem
groups: "bears"
enabled: true
factor: 0.5
}
A figura a seguir mostra um frame do jogo no nível 1. Os ursos na parte de cima da tela ainda não
abriram suas sombrinhas, e portanto, possuem maior velocidade. Por outro lado, os ursos na parte inferior
da tela já realizaram a abertura de suas sombrinhas, e assim, deslocam-se com menos velocidade.
simplesmente desaparecerá após uma breve explosão, ou seja, ele não passará para o estado caindo. Esta
Figure 5: Frame do jogo no nível 1 ilustrando o que acontece quando um urso no estado flutuando sem sombrinha (dentro
do círculo verde) é selecionado.
B. Nível de dificuldade 2
No nível de dificuldade 1, apenas o clique ou tap causam efeitos nos ursos. No nível 2, o
deslizamento do mouse ou do dedo também alteram o estado dos ursos. É importante notar que o nível 2
Para que o jogo também responda ao deslizar do mouse ou do dedo, alterou-se o tempo entre
monitoramente das posições do mouse e do touchscreen de modo que a janela de seleção seja mais ampla,
mouse foi executado (representado pela linha verde na figura). Note que todos os ursos ao longo do
B. Nível de dificuldade 3
No nível de dificuldade 3, foi implementado uma bomba para interagir com os ursos. Utilizou-se
Emitter {
id: bombEmitter
width: parent.width - 15
enabled: false
maximumEmitted: 1
group: "bomb"
emitRate: 1
size: 75
endSize: 75
velocity: CumulativeDirection { AngleDirection {angleVariation: 180;
magnitudeVariation: 120;} PointDirection { y: 60 }}
lifeSpan: 4000
}
Para localizar a posição da bomba no momento onde ela é selecionada, utilizou-se o recurso
Affector
{
id: affector_bomb_location
enabled: false
x: ma.mouseX - 16
y: ma.mouseY - 16
width: 32
height: 32
system: particleSystem
parent: particleSystem
groups: "bomb"
onAffectParticles: {
affector_bomb.enabled = true;
for (var i=0;i<particles.length; i++)
{
particles[i].update = 1.0;
particles[i].t -= 1000.0;
particleSystem.bombExplosion(ma.mouseX,ma.mouseY);
}
}
}
O código a seguir é responsável por eliminar todos os ursos que se encontram no raio de alcance
Affector
{
id: affector_bomb
enabled: false
x: ma.mouseX - 16
y: ma.mouseY - 16
width: 100
height: 100
system: particleSystem
parent: particleSystem
groups: "bears"
onAffectParticles: {
for (var i=0;i<particles.length; i++) {
score++;
}
bomb.enabled = true;
}
}
Age {
id: bomb
lifeLeft: 0
width: 200
height: 200
x: ma.mouseX - 100
y: ma.mouseY - 100
system: particleSystem
parent: particleSystem
groups: "bears"
enabled: false
}
A figura abaixo mostram um frame do jogo no nível 3 no qual possui uma bomba na tela.
Figure 8: Um frame do jogo no nível 3 ilustrando a explosão gerada quando uma bomba é selecionada
C. Nível de dificuldade 4.
VI. Conclusão
Os recursos adicionados à versão original do jogo bearwhack, tais como um menu inicial e
diferentes níveis de jogabilidade, dão um incremento importante nas funcionalidades do jogo, tornando-o
mais versátil e interessante. Novos recursos ainda podem ser incorporados ao jogo, como por exemplo,
elementos que interagem com os ursos, para torna-lo ainda mais atraente.
Referências