HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
BÁO CÁO ĐỀ TÀI OOP
Nhóm: Wibu
Ch đề: Game phiêu lưu
Danh sách thành viên
1. 49.01.104.052 Nguyn Bo Huy
2. 49.01.104.079 Phang Anh K
3. 49.01.104.083 Con Văn Long
4. 49.01.104.110 Ngô Thanh Phong
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
Qun khách sn
MC LC
MC LC .............................................................................................................................. 1
GII THIU ĐỀ TÀI ................................................................................................................ 2
LP TRÌNH NG ĐỐI NG ........................................................................................... 2
t đ ........................................................................................................................... 2
Nhóm:Nhóm 3 Trang [1]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
đồ lp minh ha .......................................................................................................... 3
D liu kim th ............................................................................................................... 4
Bài gii mu ...................................................................................................................... 4
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
HC PHN LP TRÌNH NG ĐỐI NG
GII THIU Đ TÀI
Hin nay, ngành công nghip game đang phát trin vi rt nhiu th loi game. Vic to ra
mt con game d chơi, hp dn đang xu ng ca ngành game hin nay. vy nhóm
em ng đến to mt con game đánh theo t đơn gin hin thc hóa nhng điu kin
trên.
Nhóm:Nhóm 3 Qun khách sn Trang [2]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
Qun khách sn
LP
TRÌNH
NG
ĐỐI
NG
Minh ha đề tài i dng đ lp trình, to đối ng, các thành phn hàm.
t
đề
Main sng trong 1 ngôi làng yên nh , mi người đu hnh phúc . Nhng bng
nhiên mt hôm , mt biến c ln p o ti làng ca main . Mt đạo quân ca
quân đoàn Qu Vương đã càn quét , đốt phá , sát hi người trong làng . Ch
duy nht main còn sng t đó main quyết định n luyn để ng cao sc
mnh để tr thù Qu Vương. Sau đây màn đánh quái nâng cao sc mnh ca
Main :
·
Xây dng class Character gm name, type,level , coins,hp, physical_dame,
magic_dame.
(name type kiu d liu string, level , coins , hp , physical_dame , magic_dame đu
kiu d liu long long) , )
+Trong đó:
·
Type ca main gm 2 loi: mage( physical_dame < magic_dame) and
warrior(physical_dame > magic_dame)
·
Trong đó type ca monster gm 3 loi: normal, elite, boss
+Level
ca
main
ban
đầu
không
t
quá
10
·
Dame tng đưc tính bng công thc:
+ Dame= (physical_dame+magic_dame)*level
·
Xây dng class Hero kế tha t Character:
·
Thêm biến Totalexp(mc định 0 , kiu d liu long long)
+Sau khi đánh bi mt monster, Totalexp tăng theo công thc:
·
Totalexp=Totalexp+(hp_monster+dame_monster)*(level_monster)/level
·
Exp cn để nâng cp: level hin ti *100 (khi main đang level 7 thì cn 700
exp để lên level 8)
Nhóm:Nhóm 3 Trang [3]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
·
Khi Totalexp >= Exp cn để nâng cp thì s ng level . ( Trước khi đánh quái tiếp theo
thì Totalexp phi nh hơn Exp cn để nâng cp để tăng đưc ti đa level )
·
Level tăng thì ch s ca main đưc cng thêm như sau:
+Hp hiên ti tăng thêm level_tăng *100
+Nếu main warrior:
- Physical_dame tăng thêm 70 * level_tăng
- Magic_dame tăng thêm 50 * level_tăng
+Nếu main mage thì :
-
Physical_dame tăng thêm 50 * level_tăng
-
Magic_dame tăng thêm 70 * level_tăng
·
Đánh bi monster thì tin ca quái thuc v main.
·
Xây dng class Monster kế tha Character
·
Tăng các ch s hp, physical_dame magic_dame nếu type normal thì
không tăng , elite thì tăng 50% , boss thì tăng 100%
*Lưu ý: Main s đánh quái theo th t nhp nhp vào, trong cuc chiến
main luôn ngưi đánh trưc
Nhóm:Nhóm 3 Qun khách sn Trang [4]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
Qun khách sn
đồ
lp
minh
ha
D
liu
kim
th
INPUT
-
Dòng đầu tiên các thông tin bn ca main: name, type, level, coins, hp,
physical_dame,mgaic_dame.
-
Dòng th hai s ng (N) các monster main phi đi đu
-
N dòng tiếp theo gm các thông tin bn ca các monster.
OUTPUT
-
Xut các thông tin bn ca main các quái vt: name, type, level, coins, hp
-
Nếu main thng thì ghi “Win các thông tin bn ca main như dòng trên
Nếu main thua thì ghi “Lose trn main thua. dụ:”Match 2”
(Coi d bên i đ biết thêm chi tiết)
Input
Output
Nhóm:Nhóm 3 Trang [5]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
John warrior 1 10 80 40 15
1
Slime elite 1 8 80 20 10
{ John }:{ warrior }:{ 1 }:{ 10 }:{ 80 }
{ Slime }:{ elite }:{ 1 }:{ 8 }:{ 80 }
Lose: Match 1
Wiro warrior 1 15 1500 60 25
{ Wiro }:{ warrior }:{ 1 }:{ 15 }:{ 1500 }
2
{ Gargoyle }:{ normal }:{ 1 }:{ 30 }:{ 980 }
Gargoyle normal 1 30 980 70 30
{ Skeleton }:{ boss }:{ 3 }:{ 12 }:{ 490 }
Skeleton boss 3 12 490 125 20
Win
{ Wiro }:{ warrior}:{ 6 }:{ 57 }:{ 2400 }
Bài
gii
mu
Tên bài trên Upcoder: [Phn thêm i tp mi -> Ch duyt]
OOPGAME_TUNR_BASED
B testcase t nht 8 test case bao ph tt c các đối ng)
Input
Output
John warrior 1 10 80 40 15
1
Slime elite 1 8 80 20 10
{ John }:{ warrior }:{ 1 }:{ 10 }:{ 80 }
{ Slime }:{ elite }:{ 1 }:{ 8 }:{ 80 }
Lose: Match 1
Link codepad mu trên Upcoder
www.upcoder.xyz/index.php/problems/mysubmit/WhHns2690
ngun code mu kèm ghi chú gii thích
Nhóm:Nhóm 3 Qun khách sn Trang [6]
#include <iostream>
#include <vector>
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
Qun khách sn
using namespace std;
class DichVu
{
protected:
string maDichVu; // dch v
string tenDichVu; // Tên dch v
int giaDichVu[100]; // Giá dch v
int soluongdichvu; // Số´lượng dch v
public:
};
class PhongTro
{
protected:
string maSoPhong; // s´phòng
int songaythue; // S´ngày thuê phòng
int giaPhong; // Giá phòng
string loaiPhong; // Loi phòng
public:
PhongTro(string maSoPhong = "", int songaythue = 0, int giaPhong = 0,
string loaiPhong = "")
: maSoPhong(maSoPhong), songaythue(songaythue), giaPhong(giaPhong),
loaiPhong(loaiPhong) {} // Hàm kho i to
int tinhTienPhong() // Hàm tính t ng t i ê`n phòng
{
return songaythue * giaPhong;
}
};
class QuanLy : public PhongTro, public DichVu
{
public:
// Quá t ai toán nhp c u a QuanLy
friend istream &operator>>(istream &is, QuanLy &ql)
{
is >> ql.maSoPhong; // S´phòng
is >> ql.songaythue; // S´ngày thuê
cout << "Nhap loai phong (don/doi): ";
is >> ql.loaiPhong; // Loi phòng
ql.giaPhong
= (ql.loaiPhong
==
"don")
?
200000
:
250000; // Giá
phòng tuy theo loi phòng
is >> ql.soluongdichvu; // s´lưng dch v
for (int i = 0; i < ql.soluongdichvu; i++)
{
is >> ql.maDichVu; // dch v
cin.ignore();
getline(is, ql.tenDichVu); // Tên dch v
if (ql.tenDichVu == "nuoc loc")
{
ql.giaDichVu[i] = 10000; // ´u c lc thì 10k
Nhóm:Nhóm 3 Trang [7]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
}
else if (ql.tenDichVu == "bun rieu" || ql.tenDichVu == "sua tam"
|| ql.tenDichVu == "dau goi")
{
ql.giaDichVu[i] = 25000; // N ê ´u bún riêu , sa t ´m , d `u
gi thì 25k
}
else if (ql.tenDichVu == "ban chai")
{
ql.giaDichVu[i] = 20000; // ´u ba n chai thì 20k
}
}
return is;
}
int tinhTongTien() // Hàm tính t n g tiê `n dch v t iê `n phòng
{
int tongTienDichVu = 0;
for (int i = 0; i < soluongdichvu; i++)
{
tongTienDichVu += giaDichVu[i];
}
return tinhTienPhong() + tongTienDichVu; // T n g tiê `n phòng dch
v
}
// Quá ta i toán xu´t cu a QuanLy
friend ostream &operator<<(ostream &os, QuanLy &ql)
{
os << ql.tinhTongTien() << endl;
return os;
}
};
int main()
{
QuanLy quanLy[100];
int soluong; // Số´lượng phòng
cin >> soluong; // Nhp s´lưng phòng
for (int i = 0 ; i < soluong ; i++){
cin >> quanLy[i];
cout << quanLy[i];
}
return 0;
}
Nhóm:Nhóm 3 Qun khách sn Trang [8]
HC PHN LP TRÌNH HƯỚNG ĐỐI NG
2023-2024/3
Qun khách sn
Nhóm:Nhóm 3 Trang [9]

Preview text:

HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 BÁO CÁO ĐỀ TÀI OOP Nhóm: Wibu
Chủ đề: Game phiêu lưu Danh sách thành viên 1. 49.01.104.052 Nguyễn Bảo Huy 2. 49.01.104.079 Phang Anh Kỳ 3. 49.01.104.083 Con Văn Long 4. 49.01.104.110 Ngô Thanh Phong
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 MỤC LỤC
MỤC LỤC .............................................................................................................................. 1
GIỚI THIỆU ĐỀ TÀI ................................................................................................................ 2
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ........................................................................................... 2
Mô tả đề ........................................................................................................................... 2 Nhóm:Nhóm 3 Quản lý khách sạn Trang [1]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3
Sơ đồ lớp minh họa .......................................................................................................... 3
Dữ liệu kiểm thử ............................................................................................................... 4
Bài giải mẫu ...................................................................................................................... 4
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG GIỚI THIỆU ĐỀ TÀI
Hiện nay, ngành công nghiệp game đang phát triển với rất nhiều thể loại game. Việc tạo ra
một con game dễ chơi, hấp dẫn đang là xu hướng của ngành game hiện nay. Vì vậy nhóm
em hướng đến tạo một con game đánh theo lượt đơn giản hiện thực hóa những điều kiện trên. Nhóm:Nhóm 3 Quản lý khách sạn Trang [2]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Minh họa đề tài dưới dạng đề lập trình, tạo đối tượng, các thành phần – hàm. Mô tả đề
Main sống trong 1 ngôi làng yên bình , mọi người đều hạnh phúc . Những bỗng
nhiên một hôm , một biến cố lớn ập vào tới làng của main . Một đạo quân của
quân đoàn Quỷ Vương đã càn quét , đốt phá , sát hại người trong làng . Chỉ có
duy nhất main còn sống và từ đó main quyết định rèn luyện để nâng cao sức
mạnh để trả thù Quỷ Vương. Sau đây là màn đánh quái nâng cao sức mạnh của Main :
· Xây dựng class Character gồm name, type,level , coins,hp, physical_dame, magic_dame.
(name type kiểu dữ liệu string, level , coins , hp , physical_dame , magic_dame đều
kiểu dữ liệu long long) , ) +Trong đó:
· Type của main gồm 2 loại: mage( physical_dame < magic_dame) and
warrior(physical_dame > magic_dame)
· Trong đó type của monster gồm 3 loại: normal, elite, boss
+Level của main ban đầu không vượt quá 10
· Dame tổng được tính bằng công thức:
+ Dame= (physical_dame+magic_dame)*level
· Xây dựng class Hero kế thừa từ Character:
· Thêm biến Totalexp(mặc định 0 , kiểu dữ liệu long long)
+Sau khi đánh bại một monster, Totalexp tăng theo công thức: ·
Totalexp=Totalexp+(hp_monster+dame_monster)*(level_monster)/level
· Exp cần để nâng cấp: level hiện tại *100 (khi main đang level 7 thì cần 700
exp để lên level 8) Nhóm:Nhóm 3 Quản lý khách sạn Trang [3]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 ·
Khi Totalexp >= Exp cần để nâng cấp thì sẽ tăng level . ( Trước khi đánh quái tiếp theo
thì Totalexp phải nhỏ hơn Exp cần để nâng cấp để tăng được tối đa level ) ·
Level tăng thì chỉ số của main được cộng thêm như sau:
+Hp hiên tại tăng thêm level_tăng *100
+Nếu main warrior: -
Physical_dame tăng thêm 70 * level_tăng
- Magic_dame tăng thêm 50 * level_tăng
+Nếu main mage thì :
- Physical_dame tăng thêm 50 * level_tăng
- Magic_dame tăng thêm 70 * level_tăng
· Đánh bại monster thì tiền của quái thuộc về main. ·
Xây dựng class Monster kế thừa Character
· Tăng các chỉ số hp, physical_dame magic_dame nếu type normal thì
không tăng , elite thì tăng 50% , boss thì tăng 100%
*Lưu ý: Main sẽ đánh quái theo thứ tự nhập nhập vào, trong cuộc chiến
main luôn người đánh trước Nhóm:Nhóm 3 Quản lý khách sạn Trang [4]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 Sơ đồ lớp minh họa Dữ liệu kiểm thử INPUT
- Dòng đầu tiên là các thông tin cơ bản của main: name, type, level, coins, hp, physical_dame,mgaic_dame.
- Dòng thứ hai là số lượng (N) các monster mà main phải đối đầu
- N dòng tiếp theo gồm các thông tin cơ bản của các monster. OUTPUT
- Xuất các thông tin cơ bản của main và các quái vật: name, type, level, coins, hp
- Nếu main thắng thì ghi “Win” và các thông tin cơ bản của main như dòng trên
Nếu main thua thì ghi “Lose ” và trận main thua. Ví dụ:”Match 2”
(Coi ví dụ bên dưới để biết thêm chi tiết) Input Output Nhóm:Nhóm 3 Quản lý khách sạn Trang [5]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 John warrior 1 10 80 40 15
{ John }:{ warrior }:{ 1 }:{ 10 }:{ 80 } 1
{ Slime }:{ elite }:{ 1 }:{ 8 }:{ 80 } Slime elite 1 8 80 20 10 Lose: Match 1 Wiro warrior 1 15 1500 60 25
{ Wiro }:{ warrior }:{ 1 }:{ 15 }:{ 1500 } 2
{ Gargoyle }:{ normal }:{ 1 }:{ 30 }:{ 980 }
Gargoyle normal 1 30 980 70 30
{ Skeleton }:{ boss }:{ 3 }:{ 12 }:{ 490 } Skeleton boss 3 12 490 125 20 Win
{ Wiro }:{ warrior}:{ 6 }:{ 57 }:{ 2400 } Bài giải mẫu
Tên bài trên Upcoder: [Phần thêm bài tập mới -> Chờ duyệt] OOPGAME_TUNR_BASED
Bộ testcase (ít nhất 8 test case bao phủ tất cả các đối tượng) Input Output John warrior 1 10 80 40 15
{ John }:{ warrior }:{ 1 }:{ 10 }:{ 80 } 1
{ Slime }:{ elite }:{ 1 }:{ 8 }:{ 80 } Slime elite 1 8 80 20 10 Lose: Match 1
Link codepad mẫu trên Upcoder
www.upcoder.xyz/index.php/problems/mysubmit/WhHns2690
Mã nguồn code mẫu kèm ghi chú giải thích #include #include Nhóm:Nhóm 3 Quản lý khách sạn Trang [6]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 using namespace std; class DichVu { protected:
string maDichVu; // Mã dịch vụ
string tenDichVu; // Tên dịch vụ
int giaDichVu[100]; // Giá dịch vụ
int soluongdichvu; // Số´lượng dịch vụ public: }; class PhongTro { protected: string maSoPhong; // Mã số´phòng int songaythue; // Số´ngày thuê phòng int giaPhong; // Giá phòng string loaiPhong; // Loại phòng public:
PhongTro(string maSoPhong = "", int songaythue = 0, int giaPhong = 0, string loaiPhong = "")
: maSoPhong(maSoPhong), songaythue(songaythue), giaPhong(giaPhong),
loaiPhong(loaiPhong) {} // Hàm k ho‘ i tạo
int tinhTienPhong() // Hàm tính tố‘ng t i ê `n phòng { return songaythue * giaPhong; } };
class QuanLy : public PhongTro, public DichVu { public:
// Quá t a‘ i toán tư‘nhập c u‘ a QuanLy
friend istream &operator>>(istream &is, QuanLy &ql) {
is >> ql.maSoPhong; // Số´phòng
is >> ql.songaythue; // Số´ngày thuê
cout << "Nhap loai phong (don/doi): ";
is >> ql.loaiPhong; // Loại phòng
ql.giaPhong = (ql.loaiPhong == "don") ? 200000 : 250000; // Giá phòng tuy theo loại phòng
is >> ql.soluongdichvu; // số´lượng dịch vụ
for (int i = 0; i < ql.soluongdichvu; i++) { is >> ql.maDichVu; // Mã dịch vụ cin.ignore(); getline(is, ql.tenDichVu); // Tên dịch vụ
if (ql.tenDichVu == "nuoc loc") {
ql.giaDichVu[i] = 10000; // N ê ´u là nước lọc thì 10k Nhóm:Nhóm 3 Quản lý khách sạn Trang [7]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 }
else if (ql.tenDichVu == "bun rieu" || ql.tenDichVu == "sua tam" || ql.tenDichVu == "dau goi") {
ql.giaDichVu[i] = 25000; // N ê ´u là bún riêu , sữa t ắ ´m , d ầ `u gọi thì 25k }
else if (ql.tenDichVu == "ban chai") { ql.giaDichVu[i] = 20000; // Nê´u là b a‘n cha ‘i thì 20k } } return is; }
int tinhTongTien() // Hàm tính tố‘n g tiê `n dịch vụ và t iê`n phòng { int tongTienDichVu = 0;
for (int i = 0; i < soluongdichvu; i++) {
tongTienDichVu += giaDichVu[i]; }
return tinhTienPhong() + tongTienDichVu;
// Tố‘ng tiê `n phòng và dịch vụ }
// Quá ta‘ i toán tư‘xuầ´ t cu‘a QuanLy
friend ostream &operator<<(ostream &os, QuanLy &ql) {
os << ql.tinhTongTien() << endl; return os; } }; int main() { QuanLy quanLy[100];
int soluong; // Số´lượng phòng
cin >> soluong; // Nhập số´lượng phòng
for (int i = 0 ; i < soluong ; i++){ cin >> quanLy[i]; cout << quanLy[i]; } return 0; } Nhóm:Nhóm 3 Quản lý khách sạn Trang [8]
HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2023-2024/3 Nhóm:Nhóm 3 Quản lý khách sạn Trang [9]
Document Outline

  • MỤC LỤC
    • Sơ đồ lớp minh họa 3
    • Dữ liệu kiểm thử 4
    • Bài giải mẫu 4
  • GIỚI THIỆU ĐỀ TÀI
  • LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
    • Mô tả đề