Ir para conteúdo
  • Cadastre-se

Posts Recomendados

O programa irá calcular quanto é necessário em gold para você fazer a bless (completa).

Fiz ele em duas linguagems (PHP e C#), irei usar o código PHP para explicar.


<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>Bless Cost</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="wrp">
<?php
if (isset($_POST['calculate'])) {
$level = (int)$_POST['level'];

function getBlessCost($lvl) {
$lvl = (int)$lvl;
return (max(30, min(120, $lvl)) - 20) * 1000;
}

$bless = getBlessCost($level);
$blessCost = substr($bless, 0, -3);
$blessCost = $blessCost. ',000';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p>
<label>Player Level:</label>
<input type="text" name="level" required />

<?php
if (isset($_POST['calculate'])) {
echo "<input type=\"text\" readonly name=\"bless\" value=\"".$blessCost."\"/>";
}
?>

<input type="hidden" name="calculate" />
<input type="submit" value="Bless Price" />
</p>
</form>
</div>
</body>
</html>
[/php]

Vamos por parte:

[php]
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>Bless Cost</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="wrp">

Esta parte do código consiste em estruturar nossa página, chamando o título e o css, além de criar a div para alinhamento.


<?php
if (isset($_POST['calculate'])) { //verifica se o post enviado pelo botão (submit) é o correto para calcular
$level = (int)$_POST['level']; //guarda o level do player que foi enviado pelo botão em uma variavel $level

function getBlessCost($lvl) { //função pra pegar o preço da bless
$lvl = (int)$lvl; //retorna o level que foi dado junto com a chamada da função. Exemplo: getBlessCost(100) > irá guardar o 100 que foi o valor que eu inseri.
return (max(30, min(120, $lvl)) - 20) * 1000; //esta é a fórmula, simples
//digamos que o level que você escolheu foi 100, a fóruma irá interpretar desta maneira:
//(pegavalormáximo(30, pegavalorminimo(120, 100)) - 20) * 1000;
//(pegavalormáximo(30, 100) - 20) * 1000; aqui ela pega o valor minimo (o menor valor) entre 120 e 100 (level que você escolheu)
//(100 - 20) * 1000;
//80 * 1000;
//80000;
//não sei se deu de entender muito bem, mas é simples, irei tentar explicar com outro exemplo mais além.
}

$bless = getBlessCost($level); //guarda o valor da bless que pegou pela function, onde $level foi o level enviado pelo usuário
$blessCost = substr($bless, 0, -3); //como a bless sempre retornará N000, retiramos os 3 últimos 0 para...
$blessCost = $blessCost. ',000'; //...colocar a vírgula, no fim, adicionamos os 3 zeros novamente
}
?>[/php]

Achei mais fácil comentar o código, então leiam por ali.

[php]
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<p>
<label>Player Level:</label>
<input type="text" name="level" required />

Esta parte, inicia o form que será usado para enviar as informações e já cria nosso campo level, onde o usuário irá digitar o leve para calcular a bless.


<?php
if (isset($_POST['calculate'])) { //verifica o post enviado pelo botão novamente
echo "<input type=\"text\" readonly name=\"bless\" value=\"".$blessCost."\"/>"; //se ele contiver, quer dizer que a bless foi calculada e podemos printar o valor da mesma
}
?>
[/php]

Código comentado.

[php]
<input type="hidden" name="calculate" />
<input type="submit" value="Bless Price" />
</p>
</form>
</div>
</body>
</html>

Fim do código HTML, e botamos o input do tipo hidden para que ele sirva como nosso verificador nessa parte: if (isset($_POST['calculate'])) {

Além disso, adicionamos o botão de enviar que é onde o player irá clicar para calcular a bless.

Outro exemplo:


//usaremos o level 39 para exemplo.
return (max(30, min(120, $lvl)) - 20) * 1000; //esta é a fórmula, simples
return (max(30, min(120, 39)) - 20) * 1000; //nessa primeira parte, você lembra das regras de parênteses? Então, usaremos ela, o que último é o (120, 39), então, o PHP irá calcular qual é o menor valor dentre esses.
return (max(30, 39) - 20) * 1000; //Com o valor calculado do min e retornado 39, ele irá partir para o próximo que é calcular o maior valor dentre os 2.
return (39 - 20) * 1000; //Retorna o valor de 39 que é o maior dentre os dois acima e continua o código;
return 19 * 1000; // como o parenteses vem antes, 39-20 = 19, e continuamos o código, agora é só multiplicar por 1000 que chegaremos ao valor da bless
return 19000; //viram? esse é o valor da bless para um level 39
[/php]

Css File:

[spoiler]

[php]
body { font-size:14px; font-family:"Trebuchet Ms", Arial; }

#wrp { background:#f7f7f7; padding:10px 10px; border-radius:5px; width:163px; margin:0 auto; margin-top:20%;}
#wrp label { display:block; }
#wrp input { display:block; margin-bottom:5px;}
#wrp input[type=text] { background: #fff; border:2px solid #e6e6e6; padding:5px 5px; width:150px; }
#wrp input[type=submit] { background:#fff; border:2px solid #e6e6e6; padding:10px 10px; width:163px; }

Quem quiser o código feito em C#, está ai:


using System;

using System.Linq;

using System.Text;

using System.Windows.Forms;


namespace Bless_Cost

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}


private int getBlessCost(int level)

{

return (Math.Max(30, Math.Min(120, level)) - 20) * 1000;

}


private void button1_Click(object sender, EventArgs e)

{

int num;

bool vNum = int.TryParse(tLevel.Text.Trim(), out num);


if (vNum)

{

int lvl = getBlessCost(Convert.ToInt32(tLevel.Text));

string lvlF = lvl.ToString("#,###");

tCost.Text = Convert.ToString(lvlF);

}

else

{

tCost.Text = "Incorrect level.";

}

}


private void Form1_Load(object sender, EventArgs e)

{


}

}

}

Sendo que tLevel = textbox para o level

Sendo que tCost = textbox para o valor da bless

Ps: Não sou designer, não me chinguem pela arrumação do tópico e muito menos pelo Form do PHP para as blessings.

Se quiser ver funcionando, entre em: http://tibiarvbot.com/blessing/

Editado por Robson Venturin (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Faz tanto tempo que não programo, que fiquei com saudades agora =D

Fico bacana Robson, testado e aprovado!

# Regras Gerais - TibiaKing.com #
Contato: [email protected]
Não respondo dúvidas via MP.


1C2tu.png4Tlqo.png1C2tu.png


 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

a versão em c# está mal otimizada, veja:

string lvlF = lvl.ToString("#,###");

tCost.Text = Convert.ToString(lvlF);

converteu uma string em string

do mais, excepcional, gostei da lógica apesar de odiar usar Math :P

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo