Upload files to "/"

main
Mihaeļs Mejerovs 2024-05-21 17:51:30 +00:00
parent cc3b7f43d5
commit 79a7536dd8
3 changed files with 299 additions and 0 deletions

118
flsk.py 100644
View File

@ -0,0 +1,118 @@
import os
from flask import Flask, render_template, request, send_from_directory, redirect, url_for
import uuid
import csv
app = Flask(__name__)
@app.route("/")
def home():
return render_template("index.html")
@app.route("/dwnld")
def dwnld_page():
return render_template("download.html")
@app.route("/download")
def download():
return send_from_directory('game', 'Game-master.zip')
@app.route("/about")
def about():
return render_template("about.html")
@app.route("/contact", methods=["GET", "POST"])
def contact():
if request.method == "POST":
# Get form data
name = request.form.get("name")
email = request.form.get("email")
message = request.form.get("message")
# Here you can process the message, send emails, save to database, etc.
# let's just print the data to the console
print(f"Name: {name}, Email: {email}, Message: {message}")
return render_template("thank_you.html", name=name)
return render_template("contact.html")
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
# Get form data
username = request.form.get("username")
password = request.form.get("password")
# Here you would typically validate the user's credentials
# For this example, let's assume the user is valid
# Redirect the user to their account page
return redirect(url_for('account', name=username))
return render_template("login.html")
@app.route("/account/<name>")
def account(name):
# Render the account page with the user's name
return render_template("account.html", name=name)
if __name__ == "__main__":
app.run(debug=True)
@app.route('/')
def button_page():
return render_template('account.html')
@app.route('/index', methods=['GET', 'POST'])
def display_text():
if request.method == 'POST':
return render_template('index.html', show_text=True)
else:
return render_template('index.html', show_text=False)
if __name__ == '__main__':
app.run(debug=True)
#CSV_FILE_PATH = 'data.csv'
#@app.route('/')
#def login1():
# return render_template('login.html')
#@app.route('/login', methods=['POST'])
#def submit():
#username = request.form['username']
#password = request.form['password']
# Проверка существования файла, если нет - создаем с заголовками
#if not os.path.exists(CSV_FILE_PATH):
#with open(CSV_FILE_PATH, mode='w', newline='') as file:
# writer = csv.writer(file)
# writer.writerow(['username', 'password'])
# Запись данных в CSV файл
#with open(CSV_FILE_PATH, mode='a', newline='') as file:
# writer = csv.writer(file)
# writer.writerow([username, password])
# return redirect(url_for('login1'))
#if __name__ == '__main__':
# app.run(debug=True)

96
index.html 100644
View File

@ -0,0 +1,96 @@
{% extends "base.html" %}
{% block title %}Баasdadasdзa{% endblock %}
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="static/css/style.css" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</head>
<body>
{% block content %}
<div class="center">
<p class="glavp"> Зачарование<br>в MineCraft</p>
</div>
<div class="center">
<div>
<p class="oglavlenije">Разберемся с терминами</p>
<p class="samtext">Зачаровывание (англ. Enchanting) — наложение особых свойств на оружие, инструменты или броню.
Сами эти свойства называются чарами. Среди игроков эти свойства нередко называются «зачарованиями»
(иногда «зачарованием» называется сам процесс наложения этих свойств), но это не совсем корректно с точки зрения русского языка.</p>
<img style="width:102%" src="https://static.wikia.nocookie.net/minecraft_ru_gamepedia/images/a/a8/%D0%A1%D1%82%D0%BE%D0%BB-%D0%B7%D0%B0%D1%87%D0%B0%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.png/revision/latest/scale-to-width-down/290?cb=20200210083607" alt = "Стол зачарования">
</div>
<div id ="sbosobi">
<p class="oglavlenije">Методы зачарования</p>
<p class="samtext"> Существует три способа зачаровывания предметов в режиме выживания:<br>
&bull; С помощью стола зачаровывания в обмен на опыт и лазурит. Только незачарованные предметы могут быть зачарованы таким образом.<br>
&bull; С помощью наковальни, комбинируя зачарованную книгу с предметом, также требуется опыт.<br>
&bull; С помощью наковальни, комбинируя два одинаковых предмета с различными чарами в один предмет, который будет иметь чары обоих.</p>
<img style="width:102%" src="https://100.games/wp-content/uploads/2021/08/5-7.jpg" alt = "Стол зачарования">
</div>
<div>
<p class="oglavlenije">Как разместить стол зачарования? </p>
<img style="width:102%" src="https://azminecraft.ru/_pu/0/s87471859.jpg" alt = "Стол зачарования">
<p class="samtext">Надо построить небольшую комнату, где стены будут из шкафчиков, пол и потолок можно не делать из них. Шкафчиков должно быть не меньше 15-. Располагаться они должны так, чтобы стол находился в центре, на расстоянии одного блока от них. Между столом и шкафами не должно быть никаких блоков,
иначе соответствующие шкафы не будут использованы. Если нужно что-то зачаровать, но уровня персонажа не хватает,
при помощи факелов можно временно «выключить» шкафы и понизить уровень чар.</p>
</div>
<div>
<p class="oglavlenije"> Заклинания для шлема</p>
<p class="samtext">&bull; <b>Дыхание III</b> — Это заклинание поможет вам задержать дыхание под водой в течение длительного периода времени.
Это очень полезно, если вы собираете кораллы или исследуете океаны.<br>
&bull; <b>Родство с водой (Подводник) </b>— Ваша способность добывать под водой довольно медленная, это заклинание снимает ограничение, которое налагается на вас, когда вы идете на глубину.</p>
<p class="oglavlenije"> Заклинания для сапог</p>
<p class="samtext"> &bull; <b>Покоритель глубин III</b> — Если у вас есть какие-либо планы на подводный мир, то вы будете хотеть эти чары. Это помогает увеличить скорость перемещения под водой, так что если вы планируете исследовать коралловые рифы или делать что-либо другое, это вам понадобиться наверняка!
<br>&bull;<b>Ледоход II</b> — Следует отметить, что если у вас нет планов идти под воду, то вы можете превращает воду в подмороженный лёд, что позволяет ходить по поверхности водоёма. Оно создает матовый ледяной блок, когда вы идете по воде, что сделает ваше путешествие немного легче.
Решение между этими двумя чарами во многом зависит от того, что вы делаете чаще всего в игре.
<br>&bull;<b>Невесомость IV</b> — Урон от падения может быть довольно суровым в Minecraft, поэтому невесомость поможет смягчить урон, который вы получите, если вы случайно упадете с высокой площадки. </p>
<p class="oglavlenije"> Заклинания для лука</p>
<p class="samtext"> &bull;<b>Сила V</b> — Увеличивает ваш урон от стрел, всегда хорошо на оружие!
<br>&bull;<b>Прочность III</b> — Уменьшает вероятность того, что ваш товар будет иметь малую долговечность, которая снижается при использовании.
<br>&bull;<b>Ударная волна (Отбрасывание) I</b> — Это увеличивает отбрасывания, при вашей стрельбе. Если вы используете лук, вы обычно хотите, чтобы ваш враг был дальше от вас, и это заклинание делает это более вероятным.
<br>&bull; <b>Воспламенение (Горящая стрела)</b> — Теперь вы будете стрелять пылающими стрелами! Довольно хорошо для нанесения дополнительного урона с течением времени у монстров и других игроков.
<br>&bull;<b>Бесконечность или Починка</b> — Это во многом зависит от того, есть ли у вас метод сбора большого количества стрел. Если у вас есть доступ к большому количеству стрел, то вы можете в значительной степени пропустить бесконечность в пользу починки.
;Если нет, то вы можете пойти с бесконечностью, чтобы уменьшить хлопоты, чтобы получить стрелы. Тем не менее, вы можете в конечном итоге сломать свой лук, если у вас нет починки, поэтому взвесьте эти преимущества против того, можете ли вы легко создать другой лук высокого класса! </p>
<p class="oglavlenije"> Заклинания для меча</p>
<p class="samtext"> &bull;<b>Острота V</b> — Дает вам довольно значительное повышение урона в ближнем бою
<br>&bull;<b>Небесная кара</b> — Неплохой вариант, если вы в основном сражаетесь с нежитью монстров.
<br>&bull;<b>Разящий клинок III</b> — Увеличивает урон от ваших атак зачистки, все баффы урона хороши, когда мы говорим о мече.
<br>&bull;<b>Мародёрство III</b> — Это увеличит количество предметов, которые могут выпасть из монстров.
<br>&bull;<b>Прочность III</b> — Уменьшает вероятность того, что ваш меч сломается и делает его более долговечным.
<br>&bull;<b>Починка</b> — Ремонт вашего элемента, если он потерял свою прочность.</p>
</div>
<div id ="video">
<p class="oglavlenije">Правильное зачарование по мнению Mojang</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/-lTw-cNqqgI"
title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="masik">
{% if show_text %}
<p>Ты зарегистрирован(сигма)</p>
{% else %}
<p>Ты не зарегистрирован(лох)</p>
{% endif %}
</div>
<footer id ="avtor">
<p style="font-size:larger">Михаэль Мееров 11.8 </p>
</footer>
</div>
{% endblock %}
</body>

85
login.html 100644
View File

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<style>
body {
background-color: #ffffff;
color: #066163;
}
.login-container {
margin-top: 100px;
padding-top: 50px;
}
</style>
</head>
<body>
<nav class="navbar" style="background-color: #066163;" data-bs-theme="dark" >
<div class="container">
<a class="navbar-brand" href="/">Minecraft</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="/about">О нас</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contact">Контакты</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/dwnld">Скачать</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/login">Войти</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container login-container">
<div class="row justify-content-center">
<div class="col-md-6">
<h1 class="text-center">Войти в аккаунт</h1>
<form action="/login" method="post">
<div class="mb-3">
<label for="username" class="form-label">Name:</label>
<input type="text" class="form-control" id="username" name="username" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password:</label>
<div class="input-group">
<input type="password" class="form-control" id="password" name="password" required>
<button class="btn btn-outline-secondary" type="button" id="togglePassword"><i class="bi bi-eye-fill"></i></button>
</div>
</div>
<button type="submit" class="btn btn-primary">Log in</button>
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
<script>
const togglePassword = document.querySelector('#togglePassword');
const password = document.querySelector('#password');
togglePassword.addEventListener('click', function () {
const type = password.getAttribute('type') === 'password' ? 'text' : 'password';
password.setAttribute('type', type);
this.classList.toggle('bi-eye-fill');
this.classList.toggle('bi-eye-slash-fill');
});
</script>
</body>
</html>