Karakter RPG
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 58 dari 61.
Tantangan
MudahMari 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 structCharacterdengan dua field bilangan bulat:healthdandamage. 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 pointerattack: menerima dua pointer Character (penyerang dan target), mengurangi health target sebesar damage penyerangis_alive: menerima pointer Character const dan mengembalikan 1 jika health lebih besar dari 0, jika tidak, mengembalikan 0print_status: menerima pointer Character const dan mencetak health karakter dalam formatHealth: Xfree_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, cetakHero wins!atauEnemy wins!sesuai dengan karakter yang bertahan. Jangan lupa membebaskan kedua karakter.
Programmu akan menerima empat input:
- Health awal hero
- Damage hero per serangan
- Health awal enemy
- 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
1Dasar-Dasar Pemrograman Modular
file headerProteksi includefile sumberFungsi StatisRingkasan: Kalkulator Modular4Enkapsulasi
Konsep Opaque PointerMendefinisikan Opaque StructGetter dan SetterValidasi pada SetterUlasan: Kotak Rahasia2Object dan method
Struct sebagai objectPointer 'self'Konsistensi constPointer vs nilaiMethod pembantuRangkuman: Pengelola Point5Proyek: Akun Bank Sederhana
Penyiapan ProyekImplementasi Akun3Siklus Hidup object
Pola KonstruktorPola DestruktorInisialisasi StackSalinan MendalamRangkuman: Pembungkus string6Pewarisan melalui Komposisi
Penyematan StructAturan Anggota PertamaMengakses Anggota ParentUpcastingRekap: Hierarki Bentuk9Proyek: Penggambar Bentuk
Ringkasan ProyekImplementasi LingkaranImplementasi Persegi PanjangPenggunaan PolimorfismeWadah BentukLatihan sendiri: Compiler C online