Оценка сайтов | Первые разработки
Учу php месяц или чуть меньше, написал типа сундуков .
________
посл. ред. 16.12.2021 в 22:55; всего 2 раз(а); by 213731682
<?php
class sun
{
const PRICE_OPEN_1 = 1;
const PRICE_OPEN_2 = 2;
const PRICE_OPEN_3 = 3;
const PRICE_KEY = 5;
const PLAYERS_NUM_ON_ONE_PAGE = 10;
//Узнать цену сундука
public static function get_price_sun($price_open)
{
if ($price_open == 1) {
$price_open = self::PRICE_OPEN_1;
} elseif ($price_open == 2) {
$price_open = self::PRICE_OPEN_2;
} elseif ($price_open == 3) {
$price_open = self::PRICE_OPEN_3;
}
return $price_open;
}
// узнать количество ключей id
public static function get_maykeys($id_user)
{
$sql = 'select maykeys from users where id = ? limit 1';
$sth = db::$pdo->prepare($sql);
$sth->execute([$id_user]);
return $sth->fetch(PDO::FETCH_NUM)[0];
}
// добавить ключ игроку id
public static function set_maykeys($key, $id_user)
{
$sql = 'update users set maykeys = maykeys + ? where id = ? limit 1';
$sth = db::$pdo->prepare($sql);
$sth->execute([$key, $id_user]);
}
// записать приз в базу
public static function set_priz($id_user,$names_sun, $name_sun, $name_priz, $num_priz)
{
$sql = 'insert into users_sun set id_user = ?, num_sun = ?, number_sun = ?, name_priz = ?, num_priz = ? ';
$sth = db::$pdo->prepare($sql);
$sth->execute([$id_user,$names_sun, $name_sun, $name_priz, $num_priz]);
}
// достать призы игрока с базы масcив
public static function get_priz($id_user)
{
$sql = "select * from users_sun where id_user = ? order by id desc limit 10";
$sth = db::$pdo->prepare($sql);
$sth->execute([$id_user]);
return $sth->fetchAll(PDO::FETCH_ASSOC);
}
// узнать общее количество откритых сундуков всех видов сундука или определенное
public static function get_sun_num($name = false)
{
$z = "count(*) from users_sun where num_sun = {$name}";
if ( $name === false) {
$z = "count(*) from users_sun";
}
$sql = "select $z limit 1";
$sth = db::$pdo->query($sql);
return $sth->fetch(PDO::FETCH_NUM)[0];
}
// получить всех игроков с призами с базы которые открыли сундуки
public static function get_part_pack($limit, $start)
{
$sql = "select * from users_sun order by id desc limit $start, $limit";
$sth = db::$pdo->query($sql);
return $sth->fetchAll(PDO::FETCH_ASSOC);
}
//контролер покупки ключа
public static function buy_keys_ctrl()
{
self::set_maykeys(1, ID); // плюс ключь игроку
set_mutagen(-self::PRICE_KEY, ID); // минус мутаген за покупку
}
//контролер начисления награды
public static function award_accrual_ctrl($type, $name_priz, $num_priz)
{
$price_key = self::get_price_sun($type); // цена сундука (для минуса)
self::set_maykeys(-$price_key, ID); // минус ключи
if ($name_priz == 'bucks') {
set_bucks($num_priz, ID);
} if ($name_priz == 'mutagen') {
set_mutagen($num_priz, ID);
} if ($name_priz == 'exp') {
set_exp($num_priz, ID);
} if ($name_priz == 'pancers') {
set_pancers($num_priz, ID);
} if ($name_priz == 'JACKPOT') {
set_mutagen($num_priz, ID);
}
}
}
class sun_model
{
public function get()
{
$price_open = [ // цены на сундуки
'sunduk_1' => sun::PRICE_OPEN_1,
'sunduk_2' => sun::PRICE_OPEN_2,
'sunduk_3' => sun::PRICE_OPEN_3
];
$price_key = sun::PRICE_KEY; //Цена ключа
$key_users = sun::get_maykeys(ID); //количество ключей игрока
$prizes = sun::get_priz(ID);
$count_open = [ // количество открытых сундуков
'count_1' => sun::PRICE_KEY,
'count_2' => sun::get_sun_num(2),
'count_3' => sun::get_sun_num(3)
];
return [
'count_open' => $count_open,
'prizes' => $prizes,
'price_open' => $price_open,
'price_key' => $price_key,
'key_users' => $key_users,
];
}
public function history()
{
$pag = new pagin;
$p = $pag->start(sun::get_sun_num(), sun::PLAYERS_NUM_ON_ONE_PAGE);
$part = sun::get_part_pack($p['limit'], $p['start']);
array_renumber($part);
$count_open = [ // количество открытых сундуков
'count_sum' =>sun::get_sun_num(),// общее кол во.
'count_1' => sun::get_sun_num(1),
'count_2' => sun::get_sun_num(2),
'count_3' => sun::get_sun_num(3)
];
return [
'count_open' => $count_open,
'part' => $part,
'pag' => $pag,
];
}
}
________
посл. ред. 16.12.2021 в 22:55; всего 2 раз(а); by 213731682
<?php
require_once(ROOT . 'project/internal/core.php'); // грузим ядро
// Названия сундуков
$name_sun = [
'1' => '<span style = "color:rgb(235 207 207)">Обычный сундук</span>',
'2' => '<span style = "color: rgb(146 40 163)">Мифический сундук</span>',
'3' => '<span style = "color:rgb(245 0 0)">Божественный сундук</span>',
];
$open = ['1', '2', '3',];
$type = filter_input(INPUT_GET, 'open');
$key_boy = filter_input(INPUT_GET, 'key');
if (isset($key_boy)) { // если нажата кнопка купить ключь
//если не достаточно мутагена
if (get_mutagen_by_id(ID) < sun::PRICE_KEY) {
$_SESSION['err'] = "Не достаточно мутагена!";
redirect::go()->ruler_cut('key');
} else {
// если достаточно
sun::buy_keys_ctrl(); //контролер покупки ключей
$_SESSION['message'] = "Ключ куплен!";
redirect::go()->ruler_cut('key');
}
}
////////////
if (in_array($type, $open)) {
if (sun::get_maykeys(ID) < sun::get_price_sun($type)) {
$_SESSION['err'] = "Не достаточно ключей";
redirect::go()->ruler_cut('open');
} else {
$r = mt_rand(1, 100); //рандом
//Сундук #1
if ($type == 1) {
// может выпасть
// баксы - 40%
// опыт - 40%
// мутаген - 20%
if ($r <= 40) {
$priz = mt_rand(100, 500);
$name = [
'name' => 'bucks',
'name_public' => '<span style = "color:green">Сигареты',
];
} elseif ($r <= 80 && $r > 40) {
$priz = mt_rand(500, 1000);
$name = [
'name' => 'exp',
'name_public' => '<span style = "color:yellow">Пиво',
];
} elseif ($r > 80) {
$priz = mt_rand(1, 10);
$name = [
'name' => 'mutagen',
'name_public' => '<span style = "color:lime">Бутылка водки ',
];
}
}
// Сундук #2
if ($type == 2) { // если сундук номер 2
// может выпасть
// баксы - 30%
// опыт - 30%
// мутаген - 30%
if ($r <= 30) {
$priz = mt_rand(200, 1000);
$name = [
'name' => 'bucks',
'name_public' => '<span style = "color:green">[B]',
];
} elseif ($r <= 70 && $r > 30) {
$priz = mt_rand(1000, 2500);
$name = [
'name' => 'exp',
'name_public' => '<span style = "color:yellow">[EXP]',
];
} elseif ($r > 70) {
$priz = mt_rand(2, 15);
$name = [
'name' => 'mutagen',
'name_public' => '<span style = "color:lime">[M]',
];
}
}
// Сундук #3
if ($type == 3) { // если сундук номер 3
// может выпасть
// баксы - 30%
// опыт - 30%
// мутаген - 35%
// VIP - 5%
if ($r <= 30) {
$priz = mt_rand(3000, 5000);
$name = [
'name' => 'bucks',
'name_public' => '<span style = "color:green">[B]',
];
} elseif ($r <= 60 && $r > 30) {
$priz = mt_rand(1500, 2500);
$name = [
'name' => 'exp',
'name_public' => '<span style = "color:yellow">[EXP]',
];
} elseif ($r > 60 && $r < 95) {
$priz = mt_rand(10, 5000);
$name = [
'name' => 'mutagen',
'name_public' => '<span style = "color:lime">[M]',
];
} elseif ($r > 95) {
$priz = mt_rand(500, 1000);
$name = [
'name' => 'pancers',
'name_public' => '<span style = "color:blue">[P]',
];
} elseif ($r = 99) {
$priz = 100000;
$name = [
'name' => 'JACKPOT',
'name_public' => '<span style = "color:red">[M]',
];
}
}
// запись в базу приз
sun::set_priz(ID, $type,$name_sun[$type], $name['name_public'], $priz);
// контролер начисления награды
sun::award_accrual_ctrl($type, $name['name'], $priz);
redirect::go()->ruler_cut('open');
}
}
view('tpl/cap');
view('tpl/header');
view('tpl/header-enter');
view('sun', (new sun_model)->get());
view('tpl/footer-enter');
view('tpl/footer');
<div class = "block"> Сундуки </div>
<div class = "fon-tex">
<div>
<img src="<?= public_url("1.png") ?>" width="100" class = "">
</div>
<b style="color:rgb(235 207 207)">Обычный сундук</b><br>
<a href="<?= subord_url('sun', 'open=1') ?>" class="atom mt-5">Открыть [K]<?= $price_open["sunduk_1"] ?> </a>
<div>
<small>
баксы - 40%,
опыт - 40%,
мутаген - 20%
</small>
</div>
</div>
<div class = "fon-tex">
<div>
<img src="<?= public_url("2.png") ?>" width="100" class = "">
</div>
<b style="color:rgb(146 40 163)">Мифический сундук</b><br>
<a href="<?= subord_url('sun', 'open=2') ?>" class="atom mt-5">Открыть [K] <?= $price_open["sunduk_2"] ?></a>
<div>
<small>
баксы - 30%,
опыт - 40%,
мутаген - 30%
</small>
</div>
</div>
<div class = "fon-tex">
<div>
<img src="<?= public_url("3.png") ?>" width="100" class = "">
</div>
<b style="color:rgb(245 0 0)">Божественный сундук</b><br>
<a href="<?= subord_url('sun', 'open=3') ?>" class="atom mt-5">Открыть [K] <?= $price_open["sunduk_3"] ?></a>
<div>
<small>
баксы - 30%,
опыт - 30%,
мутаген - 35%,
панцырь - 5%
LACKPOT - 1%
</small>
</div>
</div>
<div class = "fon-tex"> У вас: <?= $key_users ?> ключей.<br>
<a href="<?= subord_url('sun','key=by') ?>"class = "atom mt-5";>
Купить ключь за <?= $price_key ?> мутагена.
</a>
</div>
<div class = "fon-info"><u>Ваша история призов:</u></div>
<?php if ($prizes): ?>
<?php foreach ($prizes as $sun): ?>
<div class="fon-lvl"><small>
Открыт <?= $sun['number_sun'] ?> и найдено: <?= $sun['name_priz']; ?> <?= $sun['num_priz']; ?></span>
</div></small>
<?php endforeach ?>
<?php else: ?>
<div class="fon-tex"><small>
<?php echo "История еще пустая!"; ?>
</div></small>
<?php endif ?>
<a href="<?= subord_url('history_sun') ?>"><div class = "fon-tex">Летопись всех игроков </div></a>
Спасибо, кое-что взял себе

popka_slonika, да без проблем , пиши в личку если что. Подскажу по коду своему
Не плохо !
Это за месяц выучил?)