LoginSignup
0
0

今日の作業はAPIを使って実際にPlayerとEnemy(Slime)の攻撃力(ATK)、防衛力(DEF)、HP、と早さ(SPD)。

Databaseの作成

ここでは普通にプレイヤーのデータベースを作る
*今のところはまだレベル1だけあります
Screenshot 2023-12-20 at 22.03.15.png
表の中身は(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
Screenshot 2023-12-20 at 22.00.56.png

これは敵の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)

Screenshot 2023-12-20 at 22.07.55.png
ここでAPIと繋ぎます。

Screenshot 2023-12-20 at 22.08.15.png
敵とプレイヤーと打つかたら、プレイヤーがダメージが与えます。
ダメージ=slime_atk-player_def

Screenshot 2023-12-20 at 22.08.29.png

Screenshot 2023-12-20 at 22.13.59.png

ここも同じくて、プレイヤーが敵を攻撃したら、敵がダメージ与えます。
ダメージ=player_atk-slime_def

Screenshot 2023-12-20 at 22.12.23.png
ダメージが与えるたびに、HPバーが減らす。

今日の作業は以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0