Lista 3

Recomendações Importantes

  • A lista deve ser entregue até às 23:59:59 do dia 24/11/2014.
    • Deixe seus programas entendíveis. Imprima mensagens para auxiliar o usuário a utilizar o seu programa.
    • Seja criativo. As mensagens do seu programa não necessitam estar iguais aos exemplos, a menos que seja especificado.
    • A lista é individual, portanto não compartilhe seus códigos com outros alunos ou os coloque em locais públicos (Pastebin, Github).
    • Não copie. Se for detectado cópia da internet ou de um colega, as LISTAS envolvidas serão completamente zeradas.
    • Alguns exemplos aqui definidos podem apresentar comentários. Note que são apenas ilustrativos.
    • A correção da Questão Desafio é booleana. Ou seja: você receberá o ponto extra do desafio caso a resposta esteja 100% correta. Qualquer erro, mesmo que seja em apenas um caso, invalidará a questão.
    • Não é permitido o uso da API de Java ou bibliotecas externas, exceto quando permitido explicitamente na questão, na lista, ou autorizado por um monitor através da lista de email (Google Groups) da disciplina. Questões submetidas que violarem essa regra serão consideradas como não entregues.
    • São permitidas nessa lista, para todas as questões:
    • String
    • Scanner
    • Random

Questão 1 - Hello stranger... What are you buying? What are you selling?

Você, habitante do Planeta T-59, faz parte da resistência ao governo tirano de Mensk. No entanto, por ser perseguido pela polícia real e não ser bom guerreiro, você somente viu um modo de sobrevivência financeira: seguir a “carreira” de vendedor ambulante. O grande problema é que você só possui 500 cristais, e sempre está a mercê de uma fiscalização policial, tendo de fugir às pressas, o que desorganiza seus pertences.

Seguem os tipos de itens do seu negócio:

• Comida

• Bebida

• Equipamento

• Arma

• Munição

• Raridades

Cada item possui sua respectiva margem de lucro e chance de vir com defeito.

O menu deve possuir os seguintes comandos:

• Comprar item: compra x unidades do item. Já existindo o item no estoque, incrementa a quantidade. Seu saldo deve ser subtraído do preço da compra.

• Vender item: vende x unidades do item. Seu saldo deve ser adicionado do preço da compra. Mas a cada venda, há 10% de chance de ocorrer uma fiscalização policial, que o faz correr as pressas, reordenando todo o seu estoque aleatoriamente.

• Procurar item: Procura o item por nome ou parte do nome. Havendo mais de um item com o mesmo “padrão”, listam-se todos esses enumerados.

• Saldo: mostra o saldo atual

• Listar itens: lista os itens na ordem do estoque

• Organizar alfabeticamente: Após a reorganização, devido a melhor apresentação dos produtos, você pode aumentar sua margem de lucro em 15% (em cima da margem anterior). Custa, no entanto, 50% do seu saldo + 100 cristais.

• Aposentar-se: Saldo + listar + mensagem de despedida

Obs: Não existe crédito.

Obs2: Se todas as unidades do item forem vendidas, o item deve ser removido de estoque.

Boa sorte, jovem padawan

Questão 2 - Labyrinth

Olá moço, vamos brincar? Papai me disse que você era um gênio da programação e conseguia fazer programas mágicos, teria como você fazer um labirinto para mim? Sim sim, ele esta certo, vamos lá.

Dica: Esta questão possui uma resolução muito mais simples de forma recursiva.

Defina uma classe Labirinto, ele deve ser uma matriz 6x10 com as seguintes especificações:

A primeira posição do Labirinto deve possuir um B que indicara um boss, e deve gerar barreiras aleatórias gerando uma espécie de labirinto, os pontos acessíveis devem ser marcados com um anderline(“_”) , os locais não acessíveis devem ser marcados com um “x”, o boss com um B e a equipe deve ser marcada com um “E”.

Ex.:

B_x___x___

x_x__x___x

x______x__

xxxxxxxxx_x

___x______

___x_____E

Obs.: deve haver ao menos um caminho até o boss, caso este caminho não exista, gere um novo Labirinto, e a chance de haver uma barreira em cada posição é de 25%.

A movimentação no Labirinto deve ser feito através das teclas a, s, d e w, tanto maiúsculas quanto minúsculas.

Defina todos os métodos de movimentação e de geração de monstros aleatórios dentro dessa classe Labirinto.

O método de movimentação deve possuir um retorno que indique se a movimentação não pode ser realizada por causa de uma barreira, se o usuário tentou sair do Labirinto, se a entrada foi invalida, se a movimentação foi bem sucedida sem geração de mob, se foi bem sucedida com geração de mob e se foi bem sucedida e foi encontrado o Boss.

Questão 3 - Inventory

Você participou de uma entrevista da Blozzard e passou para a fase final. Foi lhe passada uma única tarefa que decidirá sua contratação: implementar um inventário. Obedeça aos seguintes requisitos:

- O inventário deve possuir 60 slots para itens, tendo 10 de largura e 6 de altura.

- O usuário poderá adicionar ou selecionar itens. Ao selecionar serão mostrados os detalhes do item, e ele poderá remover, modificar ou mover o item.

- O item pode ser movido para cima, baixo, direita ou esquerda, ou pode ser inserida uma nova posição.

- Todo item possui nome, representação e nível mínimo.

- São 8 tipos de item:

Além disso, dependendo do tipo de item, podem haver outros atributos:

Para os equipamentos, você deve criar dois tipos de construtores: um que apenas recebe inteligência, força e vitalidade (além dos atributos que todo item possui), e um que recebe todos os atributos.

O toString do item deve exibir todos os seus atributos não nulos.

Questão 4 - Wild Rock

A Balbe e a Biot estão enfrentando problemas financeiros, pois seus respectivos jogos, Tota e BOL, acabaram ficando enjoativos e faliram. Logo, elas iniciaram uma corrida para decidir quem iria ser a nova líder do mercado de games e firmaram algumas alianças. A Biot fechou contrato com a Blozzard, que o recomendou para participar da equipe responsável por essa difícil tarefa. Você, então, terá que programar o jogo que será a aposta da Biot para vencer a Balbe. Que os deuses da OO estejam com você!

Na primeira fase do nosso projeto, criaremos todas as classes necessárias para a estrutura do nosso jogo, que consiste em um RPG com sistema de batalha em grupos por turno.

Cada equipe é formada por 3 heróis, que devem ser de 3 classes diferentes: vocalista, guitarrista e baterista, uma equipe também possui um lv, também possui uma experiência para passar de lv a experiência deve ser maior que que a experiência máxima do nv, definida como (5 + lv²*2), sempre que a experiência ultrapassar esse valor, incremente o lv para isso crie um método incrementar lv que recebe um inteiro exp como parâmetro e atualiza todos os status envolvidos.

Cada lv incrementado aumenta os atributos vit, int e force dos heróis desta equipe em 3*lv(após incremento e somente se o mesmo tiver ocorrido).

Vocalista: Possui os atributos mais equilibrados sendo um líder nato adorado por todos.

Baterista: Possui o maior poder físico sendo capaz de controlar a multidão e proteger os seus aliados.

Guitarrista: Possui o maior poder mágico levando todos ao êxtase com seus solos e riffs de outro mundo.

Na criação dos personagens, devemos escolher os nomes de cada um, além de todos possuírem seus próprios atributos pré-definidos.

Cada personagem possui:

· Nome

· HP: força*10 + vitalidade *50 + status dos equipamentos

· MP: inteligência*50 + status dos equipamentos

· Arma

· Armadura

· Ataque Físico: força *5 + status dos equipamentos

· Ataque Mágico: inteligência*10 + status dos equipamentos

· Defesa: vitalidade*5 + status dos equipamentos

· Inteligência

· Força

· Vitalidade

Redefina o método toString do personagem para exibir seu nome, o toString de seus itens e todos seus atributos.

Habilidade 1 consome 10 de mana

Habilidade 2 consome 20 de mana

Cada equipe possui seu próprio inventário (implementado na questão anterior).

Defina também uma classe Inimigo. Um inimigo pode ser um mob ou boss.

Mob tem 10% de probabilidade de dropar(derrubar ou dar) um equipamento ao ser morto, 10% de chance de dropar uma pedra de upgrade e 15% de chance de dropar um item de cura ou mana.

Mob: Possuem força vitalidade e inteligência, dano = max entre(dano física e dano mágico)

Boss: frase de entrada + frase de saida + mesmos atributos que os personagens com exceção dos equipamentos. Com exceção do chefão final, ao ser derrotado um boss pode dropar até 3 itens, com chance de 75% para cada um. Estes itens podem ser equipamentos ou pedra de upgrades.

Obs.: Caso ache necessário, pode-se criar mais atributos além dos especificados na questão.

Questão 5 - Let's Play

Espero que tenha gostado de tudo até aqui.

Obs.: Para resolver essa questão é preciso que se tenha respondido as questões 2, 3 e 4.

Finalmente criaremos o nosso main e daremos vida ao nosso joguinho, lembre-se de importar as classes das questões anteriores.

ObsII.: Esta questão será corrigida em forma de completude, ou seja, a pontuação será com base na quantidade de itens referentes a mesma que você consiga fazer. Sendo distribuídos 20% da questão para boas práticas e comentários e os demais 80% corresponderão a quão completa a questão está.

Para mensagens de erro, imprima a mensagem usando o comando.

System.err.println(String);

Ex.: System.err.println(“Não é a mamãe!”);

Deveremos possuir um menu com as seguintes opções:

1. (0,5 ponto) Cadastrar equipe: Onde o usuário deverá informar o nome dos três personagens (Vocalista, guitarrista e baterista).

2. (1 ponto)Adicionar ao inventário: Aqui o usuário poderá adicionar os itens iniciais ao inventário, ao adicionar um item, ele estará no nível 1.

Obs.: Só haverá uma equipe, então não há problema em manipular o inventário antes de criar a equipe.

Obs.: Só haverá uma equipe, então não há problema em manipular o inventário antes de criar a equipe.

a. Guitarra

b. Microfone

c. Baquetas

d. Jaqueta de couro

e. Manto

f. Jaqueta punk

g. Consumíveis

3. (1 ponto)Remover do inventario: Aqui o usuário deverá poder remover um item do inventário.

4. Ordenar inventario: Aqui o usuário poderá mover os itens.

5. (0,75 ponto) Equipar item: Aqui você devera escolher uma equipe, após escolher uma equipe, escolha um membro e em seguida um item para ser equipado, caso não seja possível equipar, exiba uma mensagem ao usuário.

6. (0,75 ponto) Desequipar um item: Escolhe um item e remove do usuário e adiciona o item de volta no inventário, caso não seja possível, equipe o item novamente e exiba uma mensagem de erro.

7. (4 pontos)Jogar:

Antes de o jogo começar de verdade, vamos definir as regras do nosso jogo.

a. Um mapa aleatório deve ser criado no início de cada fase como especificado na questão 2.

b. Ao mover-se, exiba mensagens de erro ao tentar se movimentar de alguma forma inválida, vide questão 2.

c. Ao receber um sinal de que um monstro foi gerado, inicie uma batalha por turno que deve se manter até que o monstro seja derrotado ou até que a equipe inteira seja derrotada.

d. O usuário pode mover-se no mapa utilizando w/a/s/d ou abrir o inventário e utilizar o inventário com uma entrada i.

e. O mob gerado depende da fase. Será especificado mais abaixo. Ao gerar um mob, exiba sua frase de início.

f. O drop depende da fase. Será especificado mais abaixo.

g. Ao derrotar um mob, a experiência do time será incrementada em x*nível do mob(x é um número aleatório de 1 a 5)

h. Ao derrotar um Boss a experiência do time será incrementada em x*nível do mob(x é um número aleatório entre 6 e 10). Ao batalhar com um boss, exiba sua frase de entrada no início. Caso o mesmo seja derrotado, exiba sua frase de saída.

i. Exiba o mapa com System.out.println e as falas dos adversários com System.err.println(Nome do Boss/Mob: + String)

j. O jogador que estiver morto não poderá atacar (Dica: um boolean como atributo do jogador pode lhe auxiliar)

k. Os atributos que não forem especificados devem ser inicializados como zero.

l. HP e mana dos heróis ficam cheios sempre que entram em um mapa, seja ao passar de fase ou voltar para o início do mesmo por ter sido derrotado.

Agora, vamos brincar. Para entrar no clima, insira esse código antes de iniciar o seu jogo. Ele será uma espécie de mensagem de abertura.

System.err.println(" \n"+

" A@ \n"+

" r@@i \n"+

" :@@@@r \n"+

" ;@#25@@s \n"+

" r@rS S2@2 \n"+

" 2B.r .; r:AA \n"+

" A3 , .ri ;:2# \n"+

" ;@s,. 5@G2HX :rr@r \n"+

" XG:;. 9sMG:B r:G&. \n"+

" ;BX;: ,@: :B@s .@, :r2#s \n"+

" s@@#5 r:@@. @@ @@:; S@@@i \n"+

" A@@@ ;@@GMh3 G2@&@@i @@@# \n"+

" r@@h .@@@ A.r i H &@@: 2#@5 \n"+

" MAM s9G B.Ss h sAs GAA. \n"+

" .@sh ..X;;#B@3S & ; XiA, \n"+

" ;h:r i B #@@@ A s ;;si \n"+

" H:r rr22@@Ais:: i B \n"+

" @ i i2@;&@;@35 r A, \n"+

" Hss @3 , :S@, 5:# \n"+

" ;; :@S, @H: ,9@ .2Br :r \n"+

" 2@@B: ##3 MB ;i S@ i## ,&@@9 \n"+

" ,M@@@@@Bi. h@@ :@@: M@H .sA@@@@@#: \n"+

" 2AXB 9@@#GS;. @@@ ;5@@i; @@@. .;i3B@@9. #GA9 \n"+

" rMi:; A. :iiS3&hG5s;:. 2MHH. i.S@@h r A#@G. ,;rS9hGX2is: & rriBi \n"+

" rG2;, ,G@@H, ..,,;iA@@@@@2., r h@,.## : :;S@@@@@Ai;,.. ,h@@2 ;;XBs \n"+

" sH2;,. ;#;#G;GH5;:,, :5X: :.:@#;,,sM@; , :32: ..,;SAA;rH;B; .;r9AS \n"+

" .5MA;. . .2BMi::rsrrri#@#Ahh, ;:,B@, ;irS .@@:,: GAA#@#2;;rr;:.rG@A, ;rA@3, \n"+

" .S#@@X: .A@., ::;rS2XiG@2i52; i9r9@A: :: ;A@A;2i :XX22@Ms2isr:,,. .,M@, ;3@@#i. \n"+

" r@@@@@: i@;&@9@@@ ,rG@@@@MA: @@@@@@ .i22:ri,222; @@@@@@. :A#@@@@9r: @@@h@@:#X ,@@@@@r \n"+

" .sH@@&r..:;@@:3r ,,,;X&&X&Br::. sBGSAhsrr: ;r ,;rrA@29#5 .:,;AH2&A9r,,: ;9:@@;, .;X@@MS, \n"+

" :A#2: r 3H9s;;::,.r#@@@@@: : s@M :Ssr X@i , .@@@##Mr.,:rrri9G3. r, :iA&; \n"+

" :XXr: 3@B@h:s5s;:,, . ., &@siir5;@B .. .,,:;S32;i@A@A .;r23, \n"+

" .XGr;; ,2@@@S. .:2#@@@@X ,,,@@,.A@: ; 2@@@@M2:. ,S@@@&.. :;;h9, \n"+

" .3h;;. :@h ,:;rSihGXSs;;@@S; .; @@@@ ,: ;i@@;:ri2hGSSs;;: s@r r;2X. \n"+

" ,&i25 ,XHAX2i;. rG,H r;@@:; M;ir .;i23AHX: rXrh: \n"+

" r#@@s@@@X; 5@@. ;@@S @@h ;X#@@2@@Hi \n"+

" B@@@r 3@9 ,r X@ :; 2@M r@@@M \n"+

" 22 Ai; ;@ @2 :;@ rG \n"+

" M s s@# M@5 r @ \n"+

" H 5 X@5rir#& ; A: \n"+

" ;h.: ri@ M2r ,5S \n"+

" hrr .::@MM#r.r i,# \n"+

" #.r ; X iA M r r @ \n"+

" #,2 rrA MX2 s:B, \n"+

" ;#X: #@& A@@ &BS \n"+

" h@@ ;@#H i#@h @@B \n"+

" @@h , r:G#,r. . s@@ \n"+

" ,@@ @@ r:;,. #@ @@s \n"+

" &@M ,@@H B# h@@: 3@@ \n"+

" @2: i#@&5 : 5X@#i .G@: \n"+

" 2i; r5AH.s 5 hhhr rs# \n"+

" # s r 2 .# iS X: H r r @, \n"+

" 5S,: ##@ SB,:sh @@# .;;M \n"+

" @ 5 :@&M AA2B &A@s X @ \n"+

" 52.; s r:@ @@ Hr,: r .:;B \n"+

" @ 5 ;@5 :,rA G@ S5 r r@i 5 @. \n"+

" Xi;; rX@: r.2G@@&9 i ,@M: .i;B \n"+

" @r& r.&@i, i;@i;@;s .i#@ s 25@: \n"+

" hB@ @M2A.s A@ ## 5 &X@@ @#B \n"+

" :@@s M@@. A S ,@5i@i s 2 @@@ :@@r \n"+

" @@@ :BA9s#;:. @; @ r.#r2A#r @@@ \n"+

" i@@@3 .;,A@i2 25@M.,. 2@@@3. \n"+

" ,A@&: ,,#@@. :i @@@,. :G@9. \n"+

" :M3,: 2@@ ,@@; A@A ;:SM: \n"+

" 2M:;, , .;M@:. : .r,&2 \n"+

" .Mr.; @H@@G@ ;:;A, \n"+

" 2X i. &;;G 5 2& \n"+

" r@ r 3H S Ai \n"+

" ,@ ; i #; \n"+

" .@;X 9:#: \n"+

" ,@3M&2B: \n"+

" :@@@B; \n"+

" s@@2 \n"+

" @@ \n"+

" :i ")

System.out.println(“Bem vindo a Perim!\nAqui começa a sua jornada, boa sorte!”);

Obs.: Apesar de permitido nesta lista, o comando System.err.println ou System.err.print, são geralmente usados para imprimir mensagens de erro.

Fase 1:

Mobs que podem ser gerados:

1. M’arrillian(20 de vitalidade, 20 de força, 50 de inteligência, “Tudo começou no mar, tudo acabará no mar”)

2. Mipedian(20 de vitalidade, 50 de força, 20 de inteligência, “Os insetos dominarão o mundo!”)

3. Takinon(50 de vitalidade, 20 de força, 20 de inteligência, “Meu escudo é impenetrável!”)

Itens que pode ser dropados dos mobs/boss:

1. Jaqueta de couro(“Cobertor de H'earring”,nível 3, 15 vit+/-random(10) + 15 force+/-random(10))

2. Manto(“Manto de Najarin”, nível 3, 15 vit+/-random(10) + 15 int+/-random(10))

3. JaquetaPunk(“Protetor de Tangath”, nível 3, 30 vit +/- random(20) )

4. Porção de hp(“Blood of elf”, nível 3, 50)

5. Porção de mana (“Lágrimas da deosa”, nível 3, 50)

6. Upgrade(“Pó mágico”, nível 3, 2)

Boss:

1. Lorde Van Bloot (50 de vitalidade, 50 de força, 50 de inteligência, “O cheiro de vosso sangue é doce!\nEu os quero para mim”, “Obrigado por libertar-me, que a graça da deosa esteja convosco!”)

História de fim

Fase 2:

História de inicio(ainda será definida)

Mobs que podem ser gerados:

1. Seguidores de Chaor(30 de vitalidade, 30 de força, 70 de inteligência, “Ave Chaor!”)

2. Servidores de Sarah(30 de vitalidade, 70 de força, 30 de inteligência, “Sua cabeça servira de presente para minha senhora.”)

3. Defensores de Nauthilax(70 de vitalidade, 30 de força, 30 de inteligência, “Nada passará enquanto eu estiver de pé!”)

Itens que pode ser dropados dos mobs/boss:

1. Guitarra(“Inheritance Frusciante”, nível 7,30 +/- random(20) de inteligência, 50 mp, +10 dano mágico)

2. Microfone(“Extensor vocal”, nível 7, 15 vit + 15 de força, 15 +/- random(10) ataque, 15+/- random(10) int)

3. Baquetas(“Explosão sonora”, nível 7, 30 de vitalidade, 50+/-random(20) ataque)

4. Porção híbrida(“Gota de vida”, nível 7, 75, 50)

5. Porção híbrida (“Cristal do Oasis”, nível 7, 50, 75)

6. Upgrade(“Refinador”, nível 7, 3)

Boss:

1. Intress (75 de vitalidade, 75 de força, 75 de inteligência, “Vocês querem essa bolinha? Hahahahaha\nEla é minha, minha, minha!\n Oh precisa.”, “Nããããooooo!!!!!!!!\nVocês quebraram a minha unha, se é isto que querem então tomem, e vão embora daqui! T.T”)

Fase 3:

Mobs que podem ser gerados:

1. Medusa (50 de vitalidade, 50 de força, 75 de inteligência, “Vocês decorarão meu jardim!”)

2. Cérbero (50 de vitalidade, 75 de força, 50 de inteligência, “Meras pulgas, afastem-se!”)

3. Centauro (75de vitalidade, 50 de força, 50 de inteligência, “Sintam o sabor do meu machado!”)

Itens que pode ser dropados dos mobs/boss:

1. Porção de hp (“Wind Blossom”,nível 10, 150)

2. Porção de mana (“Mystic Effect”, nível 10, 150)

3. Porção hibrida (“Edens Blessing”,nível 10 ,100 ,100 )

4. Upgrade (“Awakening”,nível 10, 4)

Boss:

1. MC Baidu e o passinho do romano (100 de vitalidade, 100 de força, 100 de inteligência, “Segura o passinho do romano novinha!\n#convulsões”, “No céu tem pão?”)

Fase 4:

Mobs que podem ser gerados:

1. Quimera (75 de vitalidade, 75 de força, 100 de inteligência, “Aqui acaba a sua jornada.”)

2. Esfinge (75 de vitalidade, 100 de força, 75 de inteligência, “Esta vendo essa linha? Ninguém nunca passou por ela.”)

3. Múmia (100 de vitalidade, 75 de força, 75 de inteligência, “Morte? Hahaha! Já venci isto a milênios.”)

Itens que pode ser dropados dos mobs/boss:

1. Jaqueta de couro(“Robe de Zenisharian”, nível 15,50 de vitalidade, 50 de força, 50 hp, 50 mp)

2. Manto(“Energia de asura”, nível 15, 50 de vitalidade, 50 de inteligência, 100mp)

3. JaquetaPunk(“Armadura de Nêmesis”, nível 15, 100 de vitalidade, 100 hp)

4. Guitarra(“Thunder”, nível 15, 75 de inteligência, 100 mp, 50 hp)

5. Microfone(“Harpy song’s”, nível 15, 25 de inteligência, 25 de vitalidade, 25 de força, 50 hp, 50 mp, 30 dano físico)

6. Baquetas(“Fúria de titãs”, nível 15, 50 de vitalidade, 15 de força, 100 hp, 30 defesa)

Boss:

1. Jude Maverick (150 de vitalidade, 150 de força, 150 de inteligência, “Provem-me as suas forças”, “Vocês são dignos de passarem.”)

Fase 5:

História de inicio (ainda será definida)

Mobs que podem ser gerados:

1. Espectro(125 de vitalidade, 125 de força,125 de inteligência, “Tudo começou no mar, tudo acabará no mar”)

Itens que pode ser dropados dos mobs/boss:

1. Upgrade(“Alma do ferreiro”, nível 15, 5)

Boss:

1. Sand Lord Kynish (200 de vitalidade, 200 de força, 200 de inteligência, “Eu sou o deus do novo mundo”, “Vocês cairão comigo!”)

Questão 6 - Dey's son saga - Desafio

Dey é um trabalhador sério e sempre lutou pelo seu filho, que cursa Ciência da Computação. Agora, o filho de Dey tem um trabalho a fazer: programar a impressora do CIn para que os seus monitorados tenham suas MPs impressas na hora. Como o filho de Dey é burrinho e do mal, ele vai pedir a vocês, monitorados, resolverem esse problema para ele.

A impressora tem apenas um atributo, que é uma sequência de inteiros, onde os inteiros são referentes a prioridade de cada impressão. O maior inteiro é o primeiro a ser impresso.

A impressora tem as seguintes funcionalidades:

- Adicionar uma MP (essa impressão é representada apenas pelo inteiro correspondente a prioridade) à fila de espera.

- Imprimir uma mp

- Mostrar a sequência de inteiros.

Mas, como o filho de Dey é do mal, ele não vai dar algo tão fácil para vocês. Ele fez algumas observações:

- Na sequência de inteiros, para todo I >= 1, sabe-se que um inteiro na posição I é obrigatoriamente maior que os da posição 2I e 2I+1 (o inteiro da posição I é chamado de pai, e os da posição 2I e 2I+1 são chamados de filhos).

- Na adição de uma nova MP, a mesma deve ser adicionada na primeira posição livre da sequência (da esquerda para a direita). Em seguida, deve ser feito uma verificação da posição dela: verifica-se ela com o pai dela e se sua prioridade for maior que a do pai, ela trocará sua posição com o pai, se tornando o novo pai, e o antigo pai agora será o filho(e assim sucessivamente, até o começo da sequência.).

- Na impressão de uma MP, ela tem que ser removida da sequencia. Sabesse que, numa impressão, a MP que será escolhida é aquela com maior prioridade(sempre o primeiro da sequencia). Para remover-lo, é necessário botar o filho de maior prioridade no local, botando, também, o filho do filho que tem a maior prioridade, e assim sucessivamente, até nao existir nenhum espaço vazio entre 2 MP’s na sequencia.

Crie um menu para que o usuário possa interagir com a impressora, tendo acesso as suas funcionalidades.

*LEMBRE-SE: o programa só é encerrado quando o usuário quiser.