Então,
Agora que o Blog não é mais exclusivo JAVA, vou começar com uma aplicação de Login (todos já fizemos), com páginas diferentes para Administrador e Funcionários (nem todos já fiseram), protegidas para que não se possa acessar nenhuma URL além da tela inicial (quase ninguém faz).
------------------------------------------------------------------------------------------
config.php - Serve para configurar a conexão com o banco de dados.
------------------------------------------------------------------------------------------
<?php
$host = "localhost"; //Servidor do mysql
$user = "root"; //Usuario do banco de dados
$senha = ""; //senha do banco de dados
$db = "user"; //banco de dados
$nome_site = "login.php"; //Nome do site
$email = "email@host.com"; //E-mail do administrador
$site = "http://www.meusite.com"; //Seu site n se esuqece de bota o http://
mysql_connect($host, $user, $senha) or die (mysql_error());
mysql_select_db($db) or die (mysql_error());
?>
------------------------------------------------------------------------------------------
login.php - Página Principal
------------------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style6 {font-size: 13px}
-->
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="../login/logar.php">
<table width="41%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Usuario</strong></div></td>
</tr>
<tr>
<td><span class="Style6">Login:</span></td>
<td><span class="Style6">
<label>
<input name="login" type="text" id="login" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style6">Senha:</span></td>
<td><span class="Style6">
<label>
<input name="senha" type="password" id="senha" />
</label>
</span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style6">
<label>
<input type="submit" name="Submit" value="OK" />
</label>
</span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/esquece_senha.php">Esquece senha </a></span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/cadastro.php">Cadastro</a></span></td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------------------------------------------------------------
logar.php - Página que irá trabalhar os dados do Login
------------------------------------------------------------------------------------------
<?php
require("bloquear.php");
trancar_pagina("logar.php");
?>
<?php
include("config.php");
$login = $_POST['login'];
$senha = $_POST['senha'];
/* Verifica se existe usuario, o segredo ta aqui quando ele procupa uma
linha q contenha o login e a senha digitada */
$sql_logar = "SELECT * FROM user WHERE login = '$login' && senha = '$senha'";
$exe_logar = mysql_query($sql_logar) or die (mysql_error());
$fet_logar = mysql_fetch_assoc($exe_logar);
$num_logar = mysql_num_rows($exe_logar);
//Verifica se n existe uma linha com o login e a senha digitado
if ($num_logar == 0){
echo "Login ou senha invalido.";
echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>";
}
elseif($fet_logar['activo'] == "N"){
echo "Usuario não ativado, verifique seu e-mail para ativa a conta.";
echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a>";
}
else{
//Cria a sessão e manda pra pagina principal.php
session_start();
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
if ($fet_logar['Tipo'] == "A"){
header("Location:administrador.php");
}
else{
header("Location:funcionario.php");
}
}
?>
------------------------------------------------------------------------------------------
Cadastro.php - Cadastro de novo funcionário no banco
------------------------------------------------------------------------------------------
<?php
require("bloquear.php");
trancar_pagina("cadastro.php");
?>
<?php
include("config.php");
if (isset($_POST['login'])){
//pega a sessão id do usuario
session_start();
$sessao = session_id();
$login = $_POST['login'];
$senha = $_POST['senha'];
$nome = $_POST['nome'];
$email = $_POST['email'];
$sql_busca = "SELECT * FROM user WHERE login = '$login'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$num_busca = mysql_num_rows($exe_busca);
$sql_busca2 = "SELECT * FROM user WHERE email = '$email'";
$exe_busca2 = mysql_query($sql_busca2) or die (mysql_error());
$num_busca2 = mysql_num_rows($exe_busca2);
//Verifica se os campos estão preenchidos
if ($_POST['login'] == "" || $_POST['senha'] == "" || $_POST['senha2'] == "" || $_POST['nome'] == "" || $_POST['email'] == "" || $_POST['Tipo'] == ""){
$ac[] = "Por favou preencha todos os campos corretamente.";
}
//Verifica se ja existe o login
if ($num_busca > 0){
$ac[] = "Esse login já esta sendo usado por outro usuario.";
}
//Verifica se ja existe o e-mail
if ($num_busca2 > 0){
$ac[] = "Esse e-mail já esta sendo usado por outro usuario.";
}
//Verifica se o e-mail esta correto
if (!ereg("@.", $_POST['email'])){
$ac[] = "E-mail invalido.";
}
//Verifica se as duas senha são diferente
if ($_POST['senha'] != $_POST['senha2']){
$ac[] = "Verifique se as duas senha estão correta.";
}
//Verifica se todas estão corretas
if (!isset($ac)){
//Inclui o cadastro no mysql
$sql_inclu = "INSERT INTO user(login, senha, email, sessao) VALUES
('$login', '$senha', '$email', '$sessao')";
$exe_inclu = mysql_query($sql_inclu) or die (mysql_error());
$sql_inclui = "INSERT INTO nome(nome) VALUES('$nome')";
$exe_inclui = mysql_query($sql_inclui) or die (mysql_error());
$topico = "Cadastro $nome_site";
$mensagem = "<html>";
$mensagem .= "<body>";
$mensagem .= "Olá $login\r\n";
$mensagem .= "<br>Você efetuou um cadastro no $nome_site.</br>";
$mensagem .= "<br>Login: $login";
$mensagem .= "<br>Senha: $senha";
$mensagem .= "<br>Ativar conta <a href='$site/active.php?ac=$sessao'>$site/active.php?ac=$sessao</a></br>";
$mensagem .= "</body>";
$mensagem .= "</html>";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $nome_site <$email>\r\n";
$ac[] = "Cadastro efetuado com sucesso, verifique seu e-mail para ativa a conta.";
//enviar para o email o login, senha e o codigo de ativação
mail($email, $topico, $mensagem, $headers);
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {font-size: 13px}
-->
</style>
</head>
<body>
<?php
if (isset($ac)){
for($i=0;$i<count($ac);$i++){
echo "<li>".$ac[$i];
}
}
?>
<form id="form1" name="form1" method="post" action="<? $_SERVER['file:///C|/DOCUME~1/admin/CONFIG~1/Temp/Rar$DI05.687/PHP_SELF']?>">
<table width="100%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Cadastro</strong></div></td>
</tr>
<tr>
<td width="13%"><span class="Style2">Login:</span></td>
<td width="87%"><span class="Style2">
<label>
<input name="login" type="text" id="login" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Senha:</span></td>
<td><span class="Style2">
<label>
<input name="senha" type="password" id="senha" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Repetir senha: </span></td>
<td><span class="Style2">
<label>
<input name="senha2" type="password" id="senha2" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Nome: </span></td>
<td><span class="Style2">
<label>
<input name="Nome" type="text" id="nome" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">E-mail:</span></td>
<td><span class="Style2">
<label>
<input name="email" type="text" id="email" />
</label>
</span></td>
</tr>
<tr>
<td><span class="Style2">Tipo:</span></td>
<td><label>
<input type="radio" name="Tipo" id="af" value="A" />
Administrador
<input type="radio" name="Tipo" id="af" value="F" />
Funcionário</label></td>
</tr>
<tr>
<td> </td>
<td><span class="Style2">
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</span></td>
</tr>
</table>
<p> </p>
</form>
</body>
</html>
------------------------------------------------------------------------------------------
esquece_senha.php - Recuperação de Senha
------------------------------------------------------------------------------------------
<?php
include("config.php");
if (isset($_POST['login'])){
$login = $_POST['login'];
//Verifica se existe usuario
$sql_busca = "SELECT * FROM user WHERE login = '$login'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$num_busca = mysql_num_rows($exe_busca);
//verifica se existe uma linha com o login digitado
if ($num_busca > 0){
$email = $fet_busca['email'];
$senha = $fet_busca['senha'];
$topico = "Esquece senha";
$mensagem = "<html>";
$mensagem .= "<body>";
$mensagem .= "<br>Você efetuou um pedido de recuperação de senha no $nome_site.</br>";
$mensagem .= "<br>Login: $login";
$mensagem .= "<br>Senha: $senha</br>";
$mensagem .= "<br>Site oficial do $nome_site";
$mensagem .= "<br><a href='$site'>$site</a></br>";
$mensagem .= "</body>";
$mensagem .= "</html>";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $nome_site <$email>\r\n";
//enviar para o email o login e a senha
mail($email, $topico, $mensagem, $headers);
$ac[] = "Sua senha foi enviado para seu e-mail.";
}
else {
$ac[] = "Esse login não existe.";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
<style type="text/css">
<!--
.Style2 {font-size: 13px}
-->
</style>
</head>
<body>
<?php
if (isset($ac)){
for($i=0;$i<count($ac);$i++){
echo "<li>".$ac[$i];
}
}
?>
<form id="form1" name="form1" method="post" action="<? $_SERVER['file:///C|/DOCUME~1/admin/CONFIG~1/Temp/Rar$DI57.031/PHP_SELF']?>">
<table width="33%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>Esquece senha </strong></div></td>
</tr>
<tr>
<td width="22%"><span class="Style2">Login:</span></td>
<td width="78%"><span class="Style2">
<label>
<input name="login" type="text" id="login" />
</label>
</span></td>
</tr>
<tr>
<td> </td>
<td><span class="Style2">
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</span></td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------------------------------------------------------------
restrito.php - faz a sessão ser restrita a usuários
------------------------------------------------------------------------------------------
<?php
@session_start();
if (isset($_SESSION['login']) && isset($_SESSION['senha'])){
$login_usuario = $_SESSION['login'];
}
else {
header("Location:login.php");
exit();
}
?>
------------------------------------------------------------------------------------------
bloquear.php - Impede que seja acessada qualquer URL diretamente.
------------------------------------------------------------------------------------------
<?php
function trancar_pagina($nome){
if (eregi("$nome", $_SERVER['SCRIPT_NAME'])){
header("Location:login.php");
}
}
?>
------------------------------------------------------------------------------------------
administrador.php - Trata os direitos do Administrador
------------------------------------------------------------------------------------------
<?php
require("bloquear.php");
trancar_pagina("administrador.php");
?>
<?php
include('config.php');
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
mysql_select_db($db);
$login = $_POST['login'];
$v2 = $_POST['email'];
$v3 = $_POST['radio1'];
$v4 = $_POST['Pontos'];
$updateSQL = "UPDATE user SET email='$v2', activo='$v3', Pontos='$v4' WHERE login = '$login'";
$Result1 = mysql_query($updateSQL) or die(mysql_error());
echo "Dados alterados com sucesso! <br>";
}
mysql_select_db($db);
$query_manu1 = "SELECT * FROM user";
$manu1 = mysql_query($query_manu1) or die(mysql_error());
$row_manu1 = mysql_fetch_assoc($manu1);
$totalRows_manu1 = mysql_num_rows($manu1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
Olá <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"login"); // a função mysql_result tem 3 parâmetros: 1º aponta para a variável da consulta; 2º aponta para a linha do registro que você quer pegar; 3º aponta para a coluna que você quer pegar na tabela
echo $nome[$i]."<br>";
}
?>
<br>
Você Possui <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"pontos"); // a função mysql_result tem 3 parâmetros: 1º aponta para a variável da consulta; 2º aponta para a linha do registro que você quer pegar; 3º aponta para a coluna que você quer pegar na tabela
echo $nome[$i]." pontos! <br>";
}
?>
<br>
Alteração de Pontos:
<br><br>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
<table>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Login:</td>
<td><select name="login">
<?php
do {
?>
<option value="<?php echo $row_manu1['login']?>" ><?php echo $row_manu1['login']?></option>
<?php
} while ($row_manu1 = mysql_fetch_assoc($manu1));
?>
</select></td>
</tr>
<tr> </tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Email:</td>
<td><input type="text" name="email" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Activo:</td>
<td><label>
<input type="radio" name="radio1" id="sn" value="S" />
Sim
<input type="radio" name="radio1" id="sn" value="N" />
Não</label></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Novos Pontos:</td>
<td><input type="text" name="Pontos" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Tipo:</td>
<td><label>
<input type="radio" name="radio2" id="af" value="A" />
Administrador
<input type="radio" name="radio2" id="af" value="F" />
Funcionário</label></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td><input type="submit" value="Alterar" /></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1" />
</form>
<br><br>
<table width="41%" border="0">
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/login.php">Sair </a></span></td>
</tr>
</table>
<p> </p>
</body>
</html>
<?php
mysql_free_result($manu1);
?>
------------------------------------------------------------------------------------------
funcionario.php - Trata os direitos dos Funcionarios
------------------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
require("bloquear.php");
trancar_pagina("funcionario.php");
?>
Olá <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"login");
/* a função mysql_result tem 3 parâmetros:
1º aponta para a variável da consulta;
2º aponta para a linha do registro que você quer pegar;
3º aponta para a coluna que você quer pegar na tabela */
echo $nome[$i]."<br>";
}
?>
<br>
Você Possui <?php
include("config.php");
include("restrito.php");
$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";
$exe_busca = mysql_query($sql_busca) or die (mysql_error());
$fet_busca = mysql_fetch_assoc($exe_busca);
$qtd_registros = mysql_num_rows($exe_busca); // retorna a quantidade registros encontrados na consulta acima
$nome = array();
for($i=0;$i<$qtd_registros;$i++)
{
$nome[$i] = mysql_result($exe_busca,$i,"pontos"); // a função mysql_result tem 3 parâmetros: 1º aponta para a variável da consulta; 2º aponta para a linha do registro que você quer pegar; 3º aponta para a coluna que você quer pegar na tabela
echo $nome[$i]." pontos! <br><br>";
}
?>
<table width="41%" border="0">
<tr>
<td> </td>
<td><span class="Style6"><a href="../login/login.php">Sair </a></span></td>
</tr>
</table>
</body>
</html>
quarta-feira, 22 de setembro de 2010
sexta-feira, 10 de setembro de 2010
Geração de Preços
Programa bobo, que calcula o preço final de venda de qualquer produto, partindo de informações básicas sobre o mesmo.
------------------------------------------------------------------------------------------------------------
/**
* @(#)esse.java
*
* esse application
*
* @author Arthur Tavares
* @version 1.00 2010/3/12
*/
import javax.swing.*;
public class esse {
public static void main(String[] args) {
//Variáveis Auxiliares e De controle
String aux="", aux2="";
int i=0;
//Variáveis de armazenamento temporário de informações
//case1
int precop=0, qtdp=0;
//case2
int valcon=0;
//case3
int lucro=0, qtdprodvend=0;
//case4
int med=0;
//Variáveis de cálculo
double total=0;
aux+="Escolha uma opção: \n\n";
aux+="1 - Inserir Valor de compra \n";
aux+="2 - Inserir Valor total das Contas \n";
aux+="3 - Inserir Porcentagem de Lucro \n";
aux+="4 - Calcular Valor de Venda \n";
aux+="5 - Sair \n\n";
while(i!=5){
aux2 = JOptionPane.showInputDialog(aux);
i = Integer.parseInt(aux2);
switch(i){
//esse case controla a primeira opção do menu principal
case 1:
aux2 = JOptionPane.showInputDialog("Digite o valor de compra do Produto:");
precop = Integer.parseInt(aux2);
aux2 = JOptionPane.showInputDialog("Digite a quantidade a ser adquirida:");
qtdp = Integer.parseInt(aux2);
break;
case 2:
aux2 = JOptionPane.showInputDialog("Digite o valor total de todas as contas \nda última semana:");
valcon = Integer.parseInt(aux2);
break;
case 3:
aux2 = JOptionPane.showInputDialog("Digite a porcentagem de lucro esperado:");
lucro = Integer.parseInt(aux2);
aux2 = JOptionPane.showInputDialog("Digite quantidade de produtos oferecidos \npara venda:");
qtdprodvend = Integer.parseInt(aux2);
break;
case 4:
aux2 = JOptionPane.showInputDialog("Média de vendas das últimas semanas:");
med = Integer.parseInt(aux2);
if (precop==0){
JOptionPane.showMessageDialog(null, "Você Não Informou o preço do produto");
break;
}
if (qtdp==0){
JOptionPane.showMessageDialog(null, "Você Não Informou a quantidade adquirida do produto");
break;
}
if (valcon==0){
JOptionPane.showMessageDialog(null, "Você Não Informou o valor das contas fixas");
break;
}
if (lucro==0){
JOptionPane.showMessageDialog(null, "Você Não Informou a margem de lucro esperada");
break;
}
if (qtdprodvend==0){
JOptionPane.showMessageDialog(null, "Você Não Informou o número de produtos oferecidos ao cliente");
break;
}
double a =((precop*qtdp)+(valcon/qtdprodvend));
double b =(lucro*10);
total = (a+(a/b))/med;
JOptionPane.showMessageDialog(null, "O valor de venda recomendado para o produto é \nR$"+total);
break;
}
}
JOptionPane.showMessageDialog(null, "Obrigado por usar o Programa!");
System.exit(0);
}
}
------------------------------------------------------------------------------------------------------------
/**
* @(#)esse.java
*
* esse application
*
* @author Arthur Tavares
* @version 1.00 2010/3/12
*/
import javax.swing.*;
public class esse {
public static void main(String[] args) {
//Variáveis Auxiliares e De controle
String aux="", aux2="";
int i=0;
//Variáveis de armazenamento temporário de informações
//case1
int precop=0, qtdp=0;
//case2
int valcon=0;
//case3
int lucro=0, qtdprodvend=0;
//case4
int med=0;
//Variáveis de cálculo
double total=0;
aux+="Escolha uma opção: \n\n";
aux+="1 - Inserir Valor de compra \n";
aux+="2 - Inserir Valor total das Contas \n";
aux+="3 - Inserir Porcentagem de Lucro \n";
aux+="4 - Calcular Valor de Venda \n";
aux+="5 - Sair \n\n";
while(i!=5){
aux2 = JOptionPane.showInputDialog(aux);
i = Integer.parseInt(aux2);
switch(i){
//esse case controla a primeira opção do menu principal
case 1:
aux2 = JOptionPane.showInputDialog("Digite o valor de compra do Produto:");
precop = Integer.parseInt(aux2);
aux2 = JOptionPane.showInputDialog("Digite a quantidade a ser adquirida:");
qtdp = Integer.parseInt(aux2);
break;
case 2:
aux2 = JOptionPane.showInputDialog("Digite o valor total de todas as contas \nda última semana:");
valcon = Integer.parseInt(aux2);
break;
case 3:
aux2 = JOptionPane.showInputDialog("Digite a porcentagem de lucro esperado:");
lucro = Integer.parseInt(aux2);
aux2 = JOptionPane.showInputDialog("Digite quantidade de produtos oferecidos \npara venda:");
qtdprodvend = Integer.parseInt(aux2);
break;
case 4:
aux2 = JOptionPane.showInputDialog("Média de vendas das últimas semanas:");
med = Integer.parseInt(aux2);
if (precop==0){
JOptionPane.showMessageDialog(null, "Você Não Informou o preço do produto");
break;
}
if (qtdp==0){
JOptionPane.showMessageDialog(null, "Você Não Informou a quantidade adquirida do produto");
break;
}
if (valcon==0){
JOptionPane.showMessageDialog(null, "Você Não Informou o valor das contas fixas");
break;
}
if (lucro==0){
JOptionPane.showMessageDialog(null, "Você Não Informou a margem de lucro esperada");
break;
}
if (qtdprodvend==0){
JOptionPane.showMessageDialog(null, "Você Não Informou o número de produtos oferecidos ao cliente");
break;
}
double a =((precop*qtdp)+(valcon/qtdprodvend));
double b =(lucro*10);
total = (a+(a/b))/med;
JOptionPane.showMessageDialog(null, "O valor de venda recomendado para o produto é \nR$"+total);
break;
}
}
JOptionPane.showMessageDialog(null, "Obrigado por usar o Programa!");
System.exit(0);
}
}
Ler e salvar em Arquivo TXT
Pequeno programa para redigir, ler, salvar e inverter Strings em JAVA:
--------------------------------------------------------------------------------------------------------
/**
* @(#)ls.java
*
* ls application
*
* @author
* @version 1.00 2010/9/6
*/
import java.io.*;
import java.util.Scanner;
public class ls {
public static void main(String[] args) {
ls ls = new ls();
Scanner entra = new Scanner(System.in);
int i=0, w=0;
String line="", text="", caminhonome="";
String aux = "";
aux += "Digite a opção desejada: \n";
aux += "1 - Digitar texto; \n";
aux += "2 - Salvar texto; \n";
aux += "3 - Abrir texto; \n";
aux += "4 - Inverter segunda linha do texto; \n";
aux += "5 - Fechar aplicativo \n";
while (i != 5){
System.out.println(aux);
i = entra.nextInt();
switch(i){
case 1: //DIGITA FRASES
System.out.println("Quando acabar o texto, digite 'S' e dê enter");
while (w==0){
line = entra.nextLine();
if(line.equals("S")){
w=1;
}
line+="P";
text+=line+"\n";
}
break;
case 2: // salva texto
System.out.println("Digite o caminho completo e o nome do arquivo a ser salvo:");
caminhonome = entra.next();
ls.salvar(text, caminhonome);
break;
case 3: // abre texto
System.out.println("Digite o caminho completo e o nome do arquivo a ser aberto:");
caminhonome = entra.next();
text = ls.abrir(caminhonome, 1);
System.out.println(text);
break;
case 4: // inverte texto
System.out.println("Digite o caminho completo e o nome do arquivo a ser invertido:");
caminhonome = entra.next();
text = ls.abrir(caminhonome, 0);
System.out.println(text);
break;
case 5: // fecha programa
i=5;
break;
default:
System.out.println("Opção não Encontrada.");
break;
}
}
System.exit(0);
}
public String abrir(String caminhonome, int abre){
FileInputStream fis;
String retorno="";
try {
fis = new FileInputStream(caminhonome);
DataInputStream dis = new DataInputStream(fis);
int c=0;
while (dis.available() != 0) {
String line = dis.readLine();
c++;
if(abre==1){
if (line.equals(" P")){
retorno += "\n";
}
else{
retorno += line;
}
}
else{
if (line.equals(" P")){
retorno += "\n";
}
else{
retorno += process(line, c);
}
}
}
}
catch (FileNotFoundException e) {
System.out.println("Arquivo não encontrado.");
}
catch (IOException e) {
System.out.println("Erro ao utilizar o arquivo.");
}
return retorno;
}
public void salvar(String line, String caminhonome){
try {
BufferedWriter out = new BufferedWriter(new FileWriter(caminhonome));
out.write(line);
out.close();
}
catch(IOException e){
System.out.println("Erro ao salvar o arquivo.");
}
System.out.println("Arquivo sobreescrito com sucesso");
}
public String process(String line, int c){
String text="";
if(c%2==0){
StringBuffer sb = new StringBuffer(line);
text += sb.reverse() +"\n";
return text;
}
else{
return line;
}
}
}
--------------------------------------------------------------------------------------------------------
/**
* @(#)ls.java
*
* ls application
*
* @author
* @version 1.00 2010/9/6
*/
import java.io.*;
import java.util.Scanner;
public class ls {
public static void main(String[] args) {
ls ls = new ls();
Scanner entra = new Scanner(System.in);
int i=0, w=0;
String line="", text="", caminhonome="";
String aux = "";
aux += "Digite a opção desejada: \n";
aux += "1 - Digitar texto; \n";
aux += "2 - Salvar texto; \n";
aux += "3 - Abrir texto; \n";
aux += "4 - Inverter segunda linha do texto; \n";
aux += "5 - Fechar aplicativo \n";
while (i != 5){
System.out.println(aux);
i = entra.nextInt();
switch(i){
case 1: //DIGITA FRASES
System.out.println("Quando acabar o texto, digite 'S' e dê enter");
while (w==0){
line = entra.nextLine();
if(line.equals("S")){
w=1;
}
line+="P";
text+=line+"\n";
}
break;
case 2: // salva texto
System.out.println("Digite o caminho completo e o nome do arquivo a ser salvo:");
caminhonome = entra.next();
ls.salvar(text, caminhonome);
break;
case 3: // abre texto
System.out.println("Digite o caminho completo e o nome do arquivo a ser aberto:");
caminhonome = entra.next();
text = ls.abrir(caminhonome, 1);
System.out.println(text);
break;
case 4: // inverte texto
System.out.println("Digite o caminho completo e o nome do arquivo a ser invertido:");
caminhonome = entra.next();
text = ls.abrir(caminhonome, 0);
System.out.println(text);
break;
case 5: // fecha programa
i=5;
break;
default:
System.out.println("Opção não Encontrada.");
break;
}
}
System.exit(0);
}
public String abrir(String caminhonome, int abre){
FileInputStream fis;
String retorno="";
try {
fis = new FileInputStream(caminhonome);
DataInputStream dis = new DataInputStream(fis);
int c=0;
while (dis.available() != 0) {
String line = dis.readLine();
c++;
if(abre==1){
if (line.equals(" P")){
retorno += "\n";
}
else{
retorno += line;
}
}
else{
if (line.equals(" P")){
retorno += "\n";
}
else{
retorno += process(line, c);
}
}
}
}
catch (FileNotFoundException e) {
System.out.println("Arquivo não encontrado.");
}
catch (IOException e) {
System.out.println("Erro ao utilizar o arquivo.");
}
return retorno;
}
public void salvar(String line, String caminhonome){
try {
BufferedWriter out = new BufferedWriter(new FileWriter(caminhonome));
out.write(line);
out.close();
}
catch(IOException e){
System.out.println("Erro ao salvar o arquivo.");
}
System.out.println("Arquivo sobreescrito com sucesso");
}
public String process(String line, int c){
String text="";
if(c%2==0){
StringBuffer sb = new StringBuffer(line);
text += sb.reverse() +"\n";
return text;
}
else{
return line;
}
}
}
Aventura no Deserto
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);
}
}
É 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);
}
}
Assinar:
Postagens (Atom)