Essa aplicação foi desenvolvida durante a aula do professor Rafael, de Programação II, no SENAC.
É composta por duas classes, na ordem: Aplicacoes_no_Deserto e Aventura_no_Deserto.
A primeira classe é só um depósito de métodos.
A segunda classe, por sua vez, possui apenas o main, executando o programa.
O objetivo deste programa é gerar um jogo onde o jogador deve atravessar o deserto com o Veículo. São 10 unidades de distância entre o início e o fim da viagem, e o veículo só possui autonomia para 7 unidades.
Para completar o percurso, é necessário que o jogador deposite combustível no percurso, a fim de reabastecer quando necessário.
Primeira classe:
-----------------------------------------------------------------------------------------------
class Aplicacoes_no_Deserto {
public int var[] = new int[15];
/* Método para zerar o vetor público que guarda
* a quantidade de combustível nas posições do deserto
*/
public void zera(){
for(int w=15; w==0; w--){
var[w]=0;
System.out.println(var[w]);
}
}
/* @see -> Método contrutor do cenário
* @param p -> recebe a posição indicada do veículo
* @param c -> recebe o combustível que há no veículo
* @return a -> String com o cenário construído
*/
public String cenario(int p, int c){
//String de construção
String a ="";
switch (p){
case 0:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 1:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 2:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 3:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 4:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 5:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 6:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 7:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 8:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 9:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 10:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
case 11:
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+var[1]+" | "+var[2]+" | "+var[3]+" | "+var[4]+" | "+var[5]+" | "+var[6]+" | "+var[7]+" | "+var[8]+" | "+var[9]+" | "+var[10]+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
break;
}
return a;
}
/* @see -> Método para carregar cobustível em qualquer lugar no mapa.
* @param p -> recebe a posição indicada do veículo
* @param c -> recebe o combustível que há no veículo
* @return c -> int com a nova quantidade de combustível no veículo
*/
public int carregar(int p, int c){
// se a posição não for o Início e estiver sem combustíveis previamente descarregados,
// informa que não há combustível e retorna a mesma quantidade que existia antes.
if(p!=0){
if(var[p]==0){
System.out.println("Não há combustível nesse ponto do Deserto! \n");
return c;
}
// se a posição do deserto posuir combustível,
// decrementa o combustível do local, aumenta do veículo
// e retorna a nva quantidade de combustível.
else{
var[p]=var[p]-1;
c=c+1;
return c;
}
}
// se for o início, carrega sempre o máximo (7)
else{
return 7;
}
}
/* @see -> Método para descarregar cobustível em qualquer lugar do mapa.
* @param c -> recebe o combustível que há no veículo
* @param p -> recebe a posição indicada do veículo
** @return c -> int com a nova quantidade de combustível no veículo
*/
public int descarregar(int c, int p){
// se for o início, não pode descarregar cobustível
if(p==0){
System.out.println("Você não pode descarregar combustível na cidade! \n");
return c;
}
// no trajeto, só pode descarregar combustível se tiver algum para descarregar
else{
if(c>0){
var[p]=var[p]+1;
c=c-1;
return c;
}
// se não tiver combustível para descarregar,
// o sistema avisa e retorna a mesma quantidade que havia antes.
else{
System.out.println("Você não possui combustível para descarregar! \n");
return c;
}
}
}
/** @see -> Método para calcular o consumo de combustivel durante o deslocamento.
* @param p -> recebe a posição indicada do veículo
* @param pa -> recebe a posição anterior do veículo
* @param c -> recebe o combustível que há no veículo
* @return c -> int com a nova quantidade de combustível no veículo
**/
public int deslocamento(int p, int pa, int c){
int v = Math.abs(pa-p);
while(Math.abs(v)!=0){
c=c-1;
v=v-1;
}
return c;
}
/** @see -> Método para calcular as regras do jogo.
* @param p -> recebe a posição indicada do veículo
* @param pa -> recebe a posição anterior do veículo
* @param c -> recebe o combustível que há no veículo
* @return r -> 0 -> jogo prossegue
* 1 -> impede o deslocamento até o ponto inicado, mas o jogo prossegue
* 2 -> Veículo sem combustível e sem possibilidade de reabastecer.
***/
public int regras(int p, int pa, int c){
// Veículo sem combustível durante o trajeto
if(c==0){
if(pa!=0){
if(var[p]==0){
System.out.println("Você ficou sem combustível! \n");
return 2;
}
}
}
// Veículo não pode se deslocar até o ponto indicado
if(Math.abs(pa-p)>c){
System.out.println("Você não possui combustível suficiente para cobrir essa distância! \n");
return 1;
}
// Se passou por todas as regras, está tudo ok e o jogo prossegue
return 0;
}
}
-----------------------------------------------------------------------------------------------
Segunda classe:
-----------------------------------------------------------------------------------------------
/**
* @(#)Aventura_no_Deserto.java
*
* Aventura_no_Deserto application
*
* @author Arthur Tavares
* @version 1.00 2010/8/28
*/
import java.util.Scanner;
public class Aventura_no_Deserto{
// @see -> Método para buscar as opções dos usuários e chamar os demais métodos do jogo.
public static void main(String[] args) {
// Instanciando variáveis literais:
// a -> variável para recebimento da tela de comando
// aux -> auxiliar para tratamento de entradas do teclado
String a="", aux="";
// Instanciando variáveis inteiras:
// p -> variável para guardar a nova posição do veículo
// pa -> variável para guardar a antiga posição do veículo
// i -> variável para comandar o laço de repetição básico do jogo
// c -> variável para guardar a quantidade de combustível do veículo
// r -> variável para guardar a resposta das regras do jogo
int p=0, pa=0, i=1, c=7, r=0;
// objeto entra para utilizar os métodos da classe Scanner
Scanner entra = new Scanner(System.in);
// objeto AD para utilizar os métodos da classe Aventura_no_Deserto
Aplicacoes_no_Deserto AD = new Aplicacoes_no_Deserto();
// Chama o método que zera as posições do vetor publico que guarda a quantidade de combustível nas posições
AD.zera();
// construção da primeira Tela
a = " "+c+" |\\ \n";
a += " ---|-| \n";
a += " O O \n";
a += "-------------------------------------------------------------------------------------\n";
a += "|Início| "+0+" | "+0+" | "+0+" | "+0+" | "+0+" | "+0+" | "+0+" | "+0+" | "+0+" | "+0+" | FIM |\n";
a += "| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |\n";
a += "|[D]escarregar combustível |[C]arregar combustível |[S]air |\n";
System.out.println(a);
// laço básico do jogo, para que este só termine com a opção do usuário ou com o "Game Over"
while(i!=0){
System.out.println("Digite o número da posição ou a letra da ação desejada: \n");
aux = entra.next();
//transforma a variável String auxiliar em int, caso seja uma posição, para utilização em métodos.
//caso não consiga, a posição é mantida como a última posição válida.
try{
p = Integer.parseInt(aux);
}
catch(Exception e){
p=pa;
}
//valida a opção tomada pelo usuário seguindo as regras do jogo.
r = AD.regras(p, pa, c);
//se a resposta das regras do jogo for 2 (veículo sem combustível) sai do laço e o jogo acaba.
if(r==2){
i=0;
break;
}
//se a resposta das regras do jogo for 0, a opção do usuário é válida e o jogo prossegue.
if(r==0){
if(aux.equals("0")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if (aux.equals("1")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("2")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("3")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("4")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("5")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("6")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("7")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("8")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("9")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("10")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("11")){
c = AD.deslocamento(p, pa, c);
pa= p;
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("D")){
c = AD.descarregar(c, p);
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("C")){
c = AD.carregar(p, c);
a = AD.cenario(p, c);
System.out.println(a);
}
if(aux.equals("S")){
i=0;
}
}
}
System.out.println("Obrigado por testar a Aventura no Deserto!");
System.exit(0);
}
}
Nenhum comentário:
Postar um comentário