SQLiteを使ってEnemy(敵)のデータベースを作りました。
このデータベースの表テーブルは:
[id,name,atk,def,spd,exp,hp]
idはIDで、nameは敵の名前、atkは攻撃、defはディフェンス、spdは早さ、expは得られるエックスペリアンス、とhpはHPのことです。
その後、pythonでAPIを書きました。
ここのAPIは三つのMETHODがありますが、注目したいのは「#ENEMY API」。
このMETHODで、敵の名前をパラメーターとして使って、atk,def,spd,exp,hpのデータを得ます。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Dict, Any
import sqlite3
app = FastAPI()
class Word(BaseModel):
player: str
def db_connection(database_name):
try:
conn = sqlite3.connect(database_name)
return conn
except sqlite3.Error as e:
print(e)
return None
@app.get("/save/player", response_model=List[str])
def get_player_names():
conn = db_connection("savedata.sqlite")
cursor = conn.cursor()
cursor.execute("SELECT playername FROM savedata")
player_names = cursor.fetchall()
if not player_names:
raise HTTPException(status_code=404, detail="No player names found")
return [name[0] for name in player_names]
@app.get("/save/index", response_model=List[int])
def get_player_ids():
conn = db_connection("savedata.sqlite")
cursor = conn.cursor()
cursor.execute("SELECT savefileindex FROM savedata")
player_ids = cursor.fetchall()
if not player_ids:
raise HTTPException(status_code=404, detail="No player IDs found")
return [id[0] for id in player_ids]
#ENEMY API
@app.get("/enemy/{param}/{enemy_name}", response_model=Any)
def get_enemy_param(param: str, enemy_name: str):
conn2 = db_connection("enemy.sqlite")
cursor2 = conn2.cursor()
cursor2.execute(f"SELECT {param} FROM enemy WHERE name=?", (enemy_name,))
enemy = cursor2.fetchall()
if not enemy:
raise HTTPException(status_code=404, detail=f"ERROR")
return enemy[0][0]
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=7070, debug=True)
このAPIでGdevelopで作った場面で表示します。
今のところはまだゲームの図鑑です。
写真などのビジュアルまだ作っていないです。
今のところはデータベースとAPIとゲームエンジンが正常に動作できます。
明日からレベル1/エリア1の場面やゲームプレイを作ります。