Menu
CoddyTech

Karakter RPG

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 58 dari 61.

challenge icon

Tantangan

Mudah

Mari buat sistem pertarungan RPG Character: contoh klasik yang menggabungkan struct, method, constructor, dan interaksi object dalam desain modular yang rapi.

Kamu akan menyusun kodemu dalam tiga file:

  • character.h: Definisikan struct Character dengan dua field bilangan bulat: health dan damage. Deklarasikan prototipe fungsi untuk membuat karakter, melakukan serangan, memeriksa apakah karakter masih hidup, dan mencetak status karakter.
  • character.c: Implementasikan sistem karaktermu:
    • create_character: menerima nilai awal health dan damage, mengalokasikan Character di heap, menginisialisasi field-nya, dan mengembalikan pointer
    • attack: menerima dua pointer Character (penyerang dan target), mengurangi health target sebesar damage penyerang
    • is_alive: menerima pointer Character const dan mengembalikan 1 jika health lebih besar dari 0, jika tidak, mengembalikan 0
    • print_status: menerima pointer Character const dan mencetak health karakter dalam format Health: X
    • free_character: membebaskan memori yang dialokasikan
  • main.c: Buat simulasi pertarungan! Baca empat bilangan bulat yang mewakili: health hero, damage hero, health enemy, dan damage enemy. Buat kedua karakter menggunakan constructor-mu. Lalu simulasikan ronde pertarungan. Di setiap ronde, hero menyerang lebih dulu, lalu enemy menyerang balik. Jika serangan hero mengurangi health enemy menjadi nol atau kurang, enemy kalah dan tidak menyerang balik pada ronde itu. Lanjutkan sampai salah satu karakter kalah. Setelah setiap ronde, cetak status kedua karakter (hero lebih dulu, lalu enemy). Saat pertarungan berakhir, cetak Hero wins! atau Enemy wins! sesuai dengan karakter yang bertahan. Jangan lupa membebaskan kedua karakter.

Programmu akan menerima empat input:

  1. Health awal hero
  2. Damage hero per serangan
  3. Health awal enemy
  4. Damage enemy per serangan

Contoh output saat inputnya adalah 50, 20, 30, 15:

Health: 35
Health: 10
Health: 35
Health: -10
Hero wins!

Contoh output saat inputnya adalah 20, 5, 100, 25:

Health: -5
Health: 95
Enemy wins!

Ingat untuk menggunakan include guard di file header-mu. Fungsi attack menunjukkan bagaimana satu object dapat mengubah state internal object lain: konsep penting dalam desain berorientasi object. Gunakan pointer const dengan tepat untuk fungsi yang hanya membaca data.

Coba sendiri

#include <stdio.h>
#include "character.h"

int main() {
    // Baca nilai input
    int hero_health, hero_damage, enemy_health, enemy_damage;
    scanf("%d", &hero_health);
    scanf("%d", &hero_damage);
    scanf("%d", &enemy_health);
    scanf("%d", &enemy_damage);
    
    // TODO: Buat karakter pahlawan dan musuh menggunakan create_character
    
    // TODO: Simulasikan ronde pertarungan
    // - Pahlawan menyerang lebih dulu
    // - Musuh menyerang jika masih hidup
    // - Tampilkan status kedua karakter setelah setiap ronde (pahlawan lebih dulu, lalu musuh)
    // - Lanjutkan hingga salah satu karakter tumbang
    
    // TODO: Tampilkan pemenang ("Hero wins!" atau "Enemy wins!")
    
    // TODO: Bebaskan memori kedua karakter
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online