починил авторизацию, ускорил систему с помощью сервера, сделал спрайты по правильному
This commit is contained in:
+131
@@ -0,0 +1,131 @@
|
||||
from pymongo import MongoClient
|
||||
|
||||
|
||||
class UseDB:
|
||||
"""
|
||||
Класс для работы с базой данных
|
||||
"""
|
||||
|
||||
def __init__(self, collection_name):
|
||||
self.series_collection = None
|
||||
self.client = MongoClient('194.61.1.147', 52530)
|
||||
self.db = self.client['toads']
|
||||
self.series_collection = self.db[collection_name]
|
||||
|
||||
def find_document(self, elements: dict) -> list:
|
||||
"""
|
||||
Функция поиска элемента в базе данных
|
||||
|
||||
:param elements: dict - элемент, который надо искать
|
||||
|
||||
:return: list - сам элемент
|
||||
"""
|
||||
return [x for x in self.series_collection.find(elements)]
|
||||
|
||||
def insert_document(self, data: dict) -> list:
|
||||
"""
|
||||
Функция добавления элемента в базу данных
|
||||
|
||||
:param data: dict - элемент, который надо добавить
|
||||
|
||||
:return: list - созданный элемент
|
||||
"""
|
||||
return self.series_collection.insert_one(data).inserted_id
|
||||
|
||||
def update_document(self, query_elements: dict, new_values: dict) -> None:
|
||||
"""
|
||||
Функция обновления элемента в базе данных
|
||||
|
||||
:param query_elements: dict - элемент, который надо обновить
|
||||
|
||||
:param new_values: dict - элемент, этот самый элемент
|
||||
|
||||
:return: None
|
||||
"""
|
||||
self.series_collection.update_one(query_elements, {'$set': new_values})
|
||||
|
||||
def del_document(self, query_elements: dict) -> None:
|
||||
"""
|
||||
Функция удаления элемента в базу данных
|
||||
|
||||
:param query_elements: dict - элемент, который надо удалить
|
||||
|
||||
:return: None
|
||||
"""
|
||||
self.series_collection.delete_one(query_elements)
|
||||
|
||||
def create_new_game(self):
|
||||
import datetime
|
||||
data_now = datetime.datetime.now()
|
||||
new_format_data = data_now.strftime("%d.%m.%Y")
|
||||
self.series_collection.drop()
|
||||
self.series_collection.insert_one({
|
||||
"day": 0,
|
||||
"frogs": [
|
||||
{
|
||||
"name": "Квакуша",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Квакша",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Квак",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Ква",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Кваква",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Джабба-хатт",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Квендальф",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Лягуша",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Жаба",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Абажаю",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Пучеглазый",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
},
|
||||
{
|
||||
"name": "Вафля",
|
||||
"hp": 100,
|
||||
"hunger": 0
|
||||
}
|
||||
],
|
||||
"money": 0,
|
||||
"save": {
|
||||
"name": "start",
|
||||
"data": new_format_data
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,13 @@
|
||||
from fastapi import responses, status
|
||||
from DB import UseDB
|
||||
from secrets import compare_digest
|
||||
|
||||
|
||||
def authorization(login, password):
|
||||
db = UseDB("accounts")
|
||||
response = db.find_document({"login": login})
|
||||
if not response:
|
||||
return responses.JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content="Нет такого логина")
|
||||
if not compare_digest(response[0]["password"], password):
|
||||
return responses.JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content="Ошибка пароля")
|
||||
return responses.JSONResponse(status_code=status.HTTP_200_OK, content=" ")
|
||||
@@ -0,0 +1,15 @@
|
||||
import random
|
||||
from fastapi import responses, status
|
||||
from DB import UseDB
|
||||
from fastapi import Response
|
||||
import json
|
||||
|
||||
|
||||
def get_random_event_func():
|
||||
db = UseDB("events")
|
||||
response = db.find_document({})
|
||||
random_event = random.choices([i["_id"] for i in response],
|
||||
weights=[i["probability"] for i in response])
|
||||
|
||||
json_str = json.dumps(db.find_document({"_id": random_event[0]})[0], indent=4, default=str)
|
||||
return Response(content=json_str, media_type='application/json')
|
||||
@@ -0,0 +1,27 @@
|
||||
from DB import UseDB
|
||||
|
||||
|
||||
def recalculation_events_func(difficulty, well):
|
||||
difficulties = {
|
||||
"Простая": [5, 5],
|
||||
"Средняя": [5, 2],
|
||||
"Сложная": [5, 1],
|
||||
"Проигрывать весело": [10, 1]
|
||||
}
|
||||
db = UseDB("events")
|
||||
not_well_events = db.find_document({"well": False})
|
||||
well_events = db.find_document({"well": True})
|
||||
if well:
|
||||
for i in not_well_events:
|
||||
db.update_document({"_id": i["_id"]},
|
||||
{"probability": i["probability"] + difficulties[difficulty][0]})
|
||||
ratio = len(not_well_events) * difficulties[difficulty][0] / len(well_events)
|
||||
for i in well_events:
|
||||
db.update_document({"_id": i["_id"]}, {"probability": i["probability"] - ratio})
|
||||
else:
|
||||
for i in well_events:
|
||||
db.update_document({"_id": i["_id"]},
|
||||
{"probability": i["probability"] + difficulties[difficulty][1]})
|
||||
ratio = len(well_events) * difficulties[difficulty][1] / len(not_well_events)
|
||||
for i in not_well_events:
|
||||
db.update_document({"_id": i["_id"]}, {"probability": i["probability"] - ratio})
|
||||
@@ -0,0 +1,25 @@
|
||||
from fastapi import FastAPI
|
||||
from functinos import authorization, recalculation_events_func, get_random_event_func
|
||||
from DB import UseDB
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
@app.get("/authorization")
|
||||
async def root(login: str, password: str):
|
||||
return authorization.authorization(login, password)
|
||||
|
||||
|
||||
@app.get("/create_new_game")
|
||||
async def root():
|
||||
return UseDB("game").create_new_game()
|
||||
|
||||
|
||||
@app.get("/recalculation_events")
|
||||
async def recalculation_events(difficulty: str, well: bool):
|
||||
return recalculation_events_func.recalculation_events_func(difficulty, well)
|
||||
|
||||
|
||||
@app.get("/get_random_event")
|
||||
async def get_random_event():
|
||||
return get_random_event_func.get_random_event_func()
|
||||
@@ -0,0 +1,4 @@
|
||||
GET http://194.61.1.147:52540/get_random_event
|
||||
Accept: application/json
|
||||
|
||||
###
|
||||
Reference in New Issue
Block a user