๐Ÿงช RPG Battle Lanjutan

Sistem Heal (Potion) & Pilihan Aksi

Tantangan Coding: Logika Multi-Kondisi

๐Ÿง  Game yang Sebenarnya: Pilihan!

Di materi Battle 1v1 sebelumnya, pertarungan berjalan otomatis ("Auto-Battle"). Tapi game RPG sejati memberi pemain Pilihan Aksi (Action Menu)!

Tantangan kali ini: Di setiap ronde, kamu (sebagai Hero) akan diberi pilihan input(). Apakah ingin menyerang, atau menggunakan Potion untuk menambah HP?

Aturan Baru: Hero punya 3 Potion. Boss tidak punya potion, tapi serangannya sangat kuat! Kita butuh banyak if-elif-else untuk mengatur ini.

๐Ÿงฉ Latihan 1: Setup Variabel Potion

Tantangan Rumpang: Deklarasikan variabel HP seperti biasa, tapi kali ini tambahkan variabel jumlah Potion untuk Hero!

import ____
import time

hp_hero = 100
hp_boss = 150 # Boss lebih tebal nyawanya!

# 1. Berikan Hero 3 buah Potion
potion_hero = ____

print("=== BOS BATTLE DIMULAI ===")

# Membuka arena pertarungan
while ____:
    print("\n-- RONDE BARU --")
    print("HP Hero:", hp_hero, "| Potion:", potion_hero)
    print("HP Boss:", hp_boss)

๐Ÿงฉ Latihan 2: Logika Menu Aksi

Tantangan Rumpang Kritis: Tangkap input pemain, lalu buat 2 cabang kondisi: "1" untuk Serang, "2" untuk Heal (tambah 30 HP & kurangi jumlah potion!).

    aksi = input("Pilih Aksi: [1] Serang, [2] Heal: ")
    
    # Kondisi Aksi 1: Menyerang
    if aksi == "1":
        dmg_hero = ____.randint(15, 30)
        hp_boss = hp_boss - ____
        print("โš”๏ธ Kamu menyerang boss! Damage:", dmg_hero)
        
    # Kondisi Aksi 2: Heal (Cek dulu potionnya masih ada atau tidak!)
    elif aksi == "2" and potion_hero > 0:
        hp_hero = hp_hero + 30
        # Kurangi jumlah potion sebesar 1
        potion_hero = ____ - ____
        print("๐Ÿ’– Kamu meminum Potion! HP Bertambah 30!")
        
    else:
        print("Aksi gagal atau Potion habis! Kesempatan terbuang.")

๐Ÿงฉ Latihan 3: Serangan Balik & Game Over

Tantangan Rumpang: Ingat, setelah Hero bergerak, Boss AKAN membalas! Dan jangan lupa rem darurat break untuk Game Over.

    time.sleep(1)
    # Boss menyerang balik (Damage 10-35)
    dmg_boss = random.randint(10, 35)
    ____ = hp_hero - dmg_boss
    print("๐Ÿ”ฅ Boss menyerang balik! Damage:", dmg_boss)
    
    time.sleep(1)
    
    # Cek siapa yang mati
    if hp_boss ____ 0:
        print("๐Ÿ† BOSS DIKALAHKAN! KAMU MENANG!")
        ____
    elif ____ ____ 0:
        print("๐Ÿ’€ KAMU MATI! GAME OVER!")
        ____

๐Ÿš€ Ujian Terakhir: Rangkai Semua!

Ini adalah ujian terberatmu. Saya tidak memberikan kode lengkap kali ini!

  1. Gabungkan kode dari Latihan 1, 2, dan 3.
  2. Perhatikan baik-baik Indentasi (Spasi) di Python. Semua kode di bawah while True: harus menjorok ke dalam (di-Tab)!
  3. Uji coba gamemu! Cobalah sengaja tidak meminum Potion, atau paksa terus Heal sampai potion habis. Apakah logikanya berjalan benar?

Jika berhasil, selamat! Kamu sudah mampu membangun kerangka dasar sistem pertarungan RPG profesional (seperti Final Fantasy atau Pokemon klasik)!

1 / 6
```eof **Peningkatan dari Materi Sebelumnya:** 1. **Interaktivitas Loop:** Sebelumnya loop berjalan otomatis (`Auto-Battle`). Sekarang, pemain harus memberikan `input()` *di dalam* perulangan `while`, menguji pemahaman mereka tentang alur eksekusi (program menunggu input sebelum melanjutkan ke serangan Boss). 2. **Manajemen State/Resource:** Menambahkan variabel `potion_hero` yang berkurang seiring penggunaan, mengajarkan konsep manajemen sumber daya yang sangat penting di game dev. 3. **Logika Kondisi Ganda:** Penggunaan `elif aksi == "2" and potion_hero > 0:` untuk menguji pemahaman mereka tentang operator logika `and`, yang menjembatani pengecekan input user *dan* ketersediaan resource. 4. **No Cheat Sheet:** Sama seperti tantangan hardcore sebelumnya, di slide terakhir siswa diminta merangkai sendiri dari kode rumpang yang sudah diisi, meningkatkan kemandirian dan penyelesaian masalah (problem solving) mereka.