今日の作業はAPIを使って実際にPlayerとEnemy(Slime)の攻撃力(ATK)、防衛力(DEF)、HP、と早さ(SPD)。
Databaseの作成
ここでは普通にプレイヤーのデータベースを作る
*今のところはまだレベル1だけあります
表の中身は(id/lvl,hp,atk,def,spd,maxexp)
これを使って、APIと繋げます。
APIの作成
ゲームの中に入る前に、APIの改善が必要です。
これはプレイヤーのAPIです
#PLAYER API
@app.get("/player/{param}/{level}", response_model=Any)
def get_player_param(param:str, level:str):
conn = db_connection("player.sqlite")
cursor = conn.cursor()
cursor.execute(f"SELECT {param} FROM player WHERE id=?",(level,))
player_param = cursor.fetchall()
if not player_param:
raise HTTPException(status_code=404, detail="No player names found")
return player_param[0][0]
ここで{param}と{id}の入力によって、得るデータが違います。(idはレベルと考えられます!)
例:{param}は「atk」;{id}=1の時
リクエストヘッダー:http://127.0.0.1:8000/player/atk/1
これは敵のAPIです。
変わるものは特にないです。
#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]
そのでGdevelopと繋ぎます。
ゲームエンジン(Gdevelop)
敵とプレイヤーと打つかたら、プレイヤーがダメージが与えます。
ダメージ=slime_atk-player_def
ここも同じくて、プレイヤーが敵を攻撃したら、敵がダメージ与えます。
ダメージ=player_atk-slime_def