triett commited on
Commit
2eeba97
·
verified ·
1 Parent(s): a0d43fb

init app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -0
app.py CHANGED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import random
3
+
4
+ # ====== DỮ LIỆU BAN ĐẦU ======
5
+ player = {"level": 1, "xp": 0, "hp": 100, "attack": 10}
6
+ enemy = {"name": "Slime Xanh", "hp": 50, "attack": 5}
7
+ cards = [
8
+ {"name": "Kiếm Sét", "bonus": 5},
9
+ {"name": "Khiên Ánh Sáng", "bonus": 10},
10
+ {"name": "Giáp Rồng", "bonus": 20},
11
+ ]
12
+
13
+ # ====== CHỨC NĂNG ======
14
+ def attack():
15
+ dmg = random.randint(player["attack"] - 3, player["attack"] + 3)
16
+ enemy["hp"] -= dmg
17
+ msg = f"⚔️ Bạn tấn công {enemy['name']} gây {dmg} sát thương!"
18
+
19
+ if enemy["hp"] <= 0:
20
+ gain_xp = random.randint(10, 30)
21
+ player["xp"] += gain_xp
22
+ msg += f"\n💥 {enemy['name']} đã bị hạ gục! +{gain_xp} XP!"
23
+ enemy["hp"] = 50 + player["level"] * 10 # Hồi sinh quái mạnh hơn
24
+
25
+ # Tự động lên cấp
26
+ if player["xp"] >= player["level"] * 50:
27
+ player["xp"] = 0
28
+ player["level"] += 1
29
+ player["attack"] += 3
30
+ player["hp"] = 100 + player["level"] * 10
31
+ msg += f"\n⭐ Bạn đã lên cấp {player['level']}!"
32
+
33
+ return game_status() + "\n\n" + msg
34
+
35
+
36
+ def upgrade():
37
+ player["attack"] += 2
38
+ player["hp"] += 10
39
+ return game_status() + "\n✨ Bạn đã nâng cấp kỹ năng thành công!"
40
+
41
+
42
+ def choose_card():
43
+ chosen = random.sample(cards, 3)
44
+ result = "🃏 Bạn rút được 3 thẻ bài:\n"
45
+ for c in chosen:
46
+ result += f"- {c['name']} (+{c['bonus']} sức mạnh)\n"
47
+ chosen_card = random.choice(chosen)
48
+ player["attack"] += chosen_card["bonus"]
49
+ return game_status() + "\n🎁 Bạn chọn: " + chosen_card["name"]
50
+
51
+
52
+ def game_status():
53
+ return (
54
+ f"🧙‍♂️ **Người chơi** — Cấp {player['level']} | HP: {player['hp']} | XP: {player['xp']}\n"
55
+ f"👾 **Kẻ địch** — {enemy['name']} | HP: {enemy['hp']}\n"
56
+ )
57
+
58
+ # ====== GIAO DIỆN ======
59
+ with gr.Blocks() as app:
60
+ gr.Markdown("# ⚔️ RPG Web — Game mô phỏng mini")
61
+ gr.Markdown("Chiến đấu, lên cấp và chọn thẻ bài để mạnh hơn!")
62
+
63
+ output = gr.Textbox(label="Trạng thái trò chơi", value=game_status(), lines=8)
64
+
65
+ with gr.Row():
66
+ btn_attack = gr.Button("⚔️ Tấn công")
67
+ btn_upgrade = gr.Button("✨ Nâng cấp")
68
+ btn_card = gr.Button("🃏 Chọn thẻ bài")
69
+
70
+ btn_attack.click(attack, outputs=output)
71
+ btn_upgrade.click(upgrade, outputs=output)
72
+ btn_card.click(choose_card, outputs=output)
73
+
74
+ app.launch()