You are on page 1of 18

NAMA : Afi Faridatul Haq Faqih

NIM : 205150607111008
KELAS : PBO-A
TANGGAL : 21 Mei 2021

1. Soal
1. Buatlah program berdasarkan class diagram dan studi kasus yang telah dijelaskan
sebelumnya.
2. Tambahkan exception handling pada saat memilih sebuah karakter yang mana apabila
terjadi kesalahan dalam memasukkan inputan (inputan tidak berupa angka) maka
akan kembali ke menu utama sampai inputan yang dimasukkan sesuai.

2. Gambar class diagram

3. Kode program
 Class Main

1 package prak10_exceptionhandling;

2 import java.util.InputMismatchException;

3 import java.util.Scanner;

4 public class Main {

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 1


5 public static final Scanner game = new Scanner(System.in);

6 public static void main(String[] args) {

7 System.out.println("**************************************");

8 System.out.println("Selamat datang di Game Defend FILKOM !");

9 System.out.println("**************************************");

10 System.out.print("Silahkan masukkan nama player : ");

11 String nama = game.nextLine();

12 Character hero = inputPilihan();

13 Titan titan = new Titan();

14 System.out.println("Selamat datang, " + nama + " !");

15 hero.info();

16 System.out.println();

17 String hasilGame = game(titan, hero, nama);

18 System.out.println("-------------------------" + "\nHasil Akhir : ");

19 if (hasilGame.equalsIgnoreCase("menang")) {

20 System.out.println(nama + " menang");

21 } else if (hasilGame.equalsIgnoreCase("kalah")) {

22 System.out.println(nama + " kalah");

23 } else if (hasilGame.equalsIgnoreCase("seri")) {

24 System.out.println("Pertandingan Berakhir Dengan Seri...");

25 }

26 System.out.println("--------------- PLAYER --------------");

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 2


27 hero.info();

28 System.out.println("\n--------------- MUSUH ---------------");

29 titan.info();

30 System.out.println("\n------------------------------------");

31 }

32 static Character inputPilihan() {

33 System.out.println("Silahkan pilih karakter yang Anda inginkan :"

34 + "\n1. Magician"

35 + "\n2. Healer"

36 + "\n3. Warrior");

37 try {

38 int pilihan = Integer.parseInt(game.nextLine());

39 if (pilihan < 1 || pilihan > 3) {

40 throw new InputMismatchException();

41 }

42 switch (pilihan) {

43 case 1:

44 return new Magician();

45 case 2:

46 return new Healer();

47 default:

48 return new Warrior();

49 }

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 3


50 } catch (Exception e) {

51 if (e instanceof NumberFormatException) {

52 System.err.println("Tolong masukkan input berupa angka!");

53 } else if (e instanceof InputMismatchException) {

54 System.err.println("Tolong masukkan input antara 1-3!");

55 }

56 return inputPilihan();

57 }

58 }

59 static String game(Titan titan, Character hero,

60 String nama) {

61 String hasil = "";

62 for (int i = 1;; i++) {

63 System.out.print("--------------- TURN " + i + "");

64 if (i < 10) {

65 System.out.println("----------------------------");

66 } else {

67 System.out.println("----------------------------");

68 }

69 if (i % 2 == 0 && hero instanceof Healer) {

70 System.out.println(nama + " menggunakan skill Heal!");

71 ((Healer) hero).heal();

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 4


72 }

73 if (hero.attack()) {

74 System.out.println(nama + " berhasil menyerang titan!");

75 titan.receiveDamage(hero.getAttack());

76 }

77 if (titan.attack()) {

78 System.out.println("Titan berhasil menyerang " + nama + "!");

79 hero.receiveDamage(titan.getAttack());

80 }

81 System.out.println("Enemy's HP\t: "

82 + titan.getHP());

83 System.out.println(nama + "'s HP\t: "

84 + hero.getHP());

85 if (titan.getHP() == 0 && hero.getHP() == 0) {

86 return "seri";

87 }

88 if (titan.getHP() == 0) {

89 return "menang";

90 }

91 if (hero.getHP() == 0) {

92 return "kalah";

93 }

94 }

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 5


95 }

96 }

97

 Class Character

1 package prak10_exceptionhandling;

2 public abstract class Character {

3 private int defense;

4 private int attack;

5 private int HP;

6 public Character(int defense, int attack, int HP){

7 this.HP = HP;

8 this.attack = attack;

9 this.defense = defense;

10 }

11 public int getDefense()

12 { return defense;

13 }

14 public int getAttack() {

15 return attack;

16 }

17 public int getHP()

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 6


18 {

19 return HP;

20 }

21 public void setDefense(int defense) {

22 this.defense = defense;

23 }

24 public void setAttack(int attack){

25 this.attack = attack;

26 }

27 public void setHP(int HP) {

28 this.HP = HP;

29 }

30 public abstract boolean attack();

31 public void receiveDamage(int damage){

32 if(damage > this.defense){

33 int damage1 = damage - this.defense;

34 this.HP -= damage1;

35 if(this.HP < 0) setHP(0);

36 }

37 }

38 public void info(){

39 System.out.println("--------------- STATUS --------------");

40 System.out.println("ROLE\t: " + getClass().getSimpleName());

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 7


41 System.out.println("HP\t: " + getHP());

42 System.out.println("ATTACK\t: " + getAttack());

43 System.out.println("DEFENCE\t: " + getDefense());

44 }

45 }

46

 Class Magician

1 package prak10_exceptionhandling;

2 public class Magician extends Character {

3 public Magician(){

4 super(10,60,100);

5 }

6 @Override

7 public boolean attack() {

8 return Math.random() <= 0.35;

9 }

10 }

11

 Class Healer

1 package prak10_exceptionhandling;

2 public class Healer extends Character {

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 8


3 public Healer(){

4 super(10,10,70);

5 }

6 @Override

7 public boolean attack() {

8 return Math.random() <= 0.85;

9 }

10 public void heal(){

11 setHP(getHP() + 25);

12 System.out.println("Menggunakan Skill Heal");

13 }

14 }

15

 Class Warrior

1 package prak10_exceptionhandling;

2 public class Warrior extends Character {

3 public Warrior(){

4 super(30,25,80);

5 }

6 @Override

7 public boolean attack() {

8 return Math.random() <= 0.60;

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 9


9 }

10 }

11

 Class Titan

1 package prak10_exceptionhandling;

2 public class Titan extends Character {

3 public Titan(){

4 super(0, 45, 200);

5 }

6 @Override

7 public boolean attack() {

8 return Math.random() <= 0.4;

9 }

10 }

11

4. Screenshot Program
A. Program
• Class Main

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 10


Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 11
• Class Character

• Class Magician

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 12


• Class Healer

• Class Warrior

• Class Titan

B. Output
Pilihan 1

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 13


Pilihan 2

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 14


Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 15
Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 16
Pilihan 3

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 17


Error

Laporan Praktikum PBO – Afi Faridatul Haq Faqih – 205150607111008 18

You might also like