починил авторизацию, ускорил систему с помощью сервера, сделал спрайты по правильному

This commit is contained in:
2023-02-02 19:08:31 +07:00
parent a451ce7e84
commit 0bfa52f011
14 changed files with 328 additions and 104 deletions
+131
View File
@@ -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
}
})
+13
View File
@@ -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=" ")
+15
View File
@@ -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})
+25
View File
@@ -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()
+4
View File
@@ -0,0 +1,4 @@
GET http://194.61.1.147:52540/get_random_event
Accept: application/json
###