Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submission by Dabbir_ITB #66

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions Dabbir_ITB/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
class Card {
String name;
double strength;
double health;

strongCard strong;
miracleCard miracle;

void attack(Card enemy) {
double strengthPoint = this.strong.strength + strength;
double healthPoint = enemy.strong.defense + enemy.health;
System.out.println(this.name + " attacking " + enemy.name + "...");
enemy.takeDamage(enemy.name,strengthPoint,healthPoint);
}

void takeDamage(String name,double strength, double health) {
System.out.println(this.name + " HEALTH -" + strength + "...");
health -= strength;
System.out.println(name + " Stat :" + "\nHEALTH : " + health + "\n");
if (health <= 0) {
endRound(name);
}
}

void endRound(String name) {
System.out.println("\n" + name + " LOSE.");
}

void addMiracle(Card enemy) {
if (this.miracle.miracle < enemy.miracle.miracle) {
System.out.println(enemy.name + " Miracle WIN.");
} else {
System.out.println(this.name + " Miracle WIN.");
}
}

void equipment(strongCard strong) {
this.strong = strong;
}

void skill(miracleCard miracle) {
this.miracle = miracle;
}

void stat() {
System.out.println("\n====== Player ======");
System.out.println("Animal Card");
System.out.println("NAME : " + this.name);
System.out.println("STRENGTH : " + this.strength);
System.out.println("HEALTH : " + this.health);
this.strong.stat();
this.miracle.stat();
}

}

class animalCard extends Card {
animalCard(String name, double strength, double health) {
this.name = name;
this.strength = strength;
this.health = health;
}
}

class strongCard extends Card {
double defense;

strongCard(String name, double strength, double defense) {
this.name = name;
this.strength = strength;
this.defense = defense;
}

void stat() {
System.out.println("\nStrong Card");
System.out.println("Buff : " + this.name + "\nSTRENGTH : +" + this.strength + "\nDEFENSE : +" + this.defense);
}

}

class miracleCard extends Card {
double miracle;

miracleCard(String name, double miracle) {
this.name = name;
this.miracle = miracle;
}

void stat() {
System.out.println("\nMiracle Card");
System.out.println("MIRACLE : " + this.miracle);
}
}


public class Main {
public static void main(String[] args) throws Exception {

Card animal1 = new animalCard("SCORCH",6000,6500);
Card animal2 = new animalCard("GALLEON",7300,7500);

strongCard awakening = new strongCard("Awakening Fever", 1000, 1000);
strongCard buff = new strongCard("Primal Fight",200,500);

miracleCard miracle2 = new miracleCard("Alien Egg E", 3200);
miracleCard miracle1 = new miracleCard("Alien Egg S", 3600);

animal1.equipment(awakening);
animal1.skill(miracle2);
animal1.stat();

animal2.equipment(buff);
animal2.skill(miracle1);
animal2.stat();

System.out.println("\n------ ROUND 1 ------");
animal1.attack(animal2);
animal2.attack(animal1);

animal1.addMiracle(animal2);
}
}
30 changes: 30 additions & 0 deletions Dabbir_ITB/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Program ini merupakan program sederhana dari permainan Animal Kaiser, 2 orang pemain akan bertanding dengan kartunya masing-masing. Animal Kaiser terdiri atas 3 jenis kartu yaitu kartu Animal sebagai main card, kartu Strong sebagai buff card, dan kartu Miracle untuk taruhan akhir jika ada animal card yang kalah.

Dua Animal Card akan bertarung, masing-masing kartu memiliki statistik yang berbeda sesuai animalnya. Setiap animal memiliki strength dan health point. Dua kartu akan di adu dalam 1 ronde untuk memperoleh siapa stat total (setelah menggunakan strong card) akhir yang lebih tinggi dia akan menang dan melihat hasil taruhan di miracle card.

Program ini dijalankan dengan 1 kali compile.

- Inheritance
Class Card - Super class
Class animalCard - Sub class
Class strongCard - Sub class
Class miracleCard - Sub class

- Polimorfisme
Program umum karena SuperClass direferensikan ke SubClass

- Mengimplementasikan (minimal 1) design pattern
Penggunaan method

- Mengimplementasikan (minimal 1) prinsip SOLID
Liskov Subtitution Principle, sebuah principle yang mengatur desain hirarki pewarisan. Aturan - aturan tersebut antara lain

Contravariant & Covariant,
Contravariant adalah kondisi di mana parameter dari sebuah fungsi yang berada pada SubClass harus memiliki tipe dan jumlah yang sama dengan fungsi yang berada pada SuperClass-nya. Sedangkan Covariant, adalah kondisi pengembalian nilai dari fungsi yang berada pada SubClass dan SuperClass.

Precondition & PostCondition,
Precondition adalah tindakan yang harus ada sebelum sebuah proses dijalankan. Sedangkan postcondition sebaliknya, yaitu tindakan yang harus ada ketika sebuah proses selesai dijalankan.

Invariant, adalah penjelasan dari kondisi suatu proses yang benar sebelum proses tersebut dimulai dan tetap benar setelahnya.

Constraint, adalah pembatasan yang ditentukan oleh SuperClass terhadap perubahan keadaan sebuah obyek.
1 change: 1 addition & 0 deletions Hands-On-OOP-2022
Submodule Hands-On-OOP-2022 added at 449dd9