# 期末專題 ### 在充滿機率世界不務正業的冒險者! --- # 報告流程 - 主題說明 - 組員 - 製作時程 - 團隊分工與說明 - 流程圖 - 結果 - 參考資料 - 報告結束 --- # 主題說明 我們製作了一個類RPG遊戲,主打賭博副打怪的遊戲。通常人們看到冒險者就覺得是打怪練功的遊戲,但我們想來點不一樣的,以賭博的角度來達成破關條件。 --- # 組員 - **諸家彬** - **許育文** [[GIT](https://github.com/AlvinX3)] [[HackMD](https://hackmd.io/@AlvinX3)] - **陳昱材** --- # 製作時程 --- ```mermaid gantt title 製作時程 axisFormat %m-%d section 許育文 製作遊戲基礎架構 : 05-15, 12d debug與程式優化與細部調整 : 06-01, 3d 製作報告 :06-04, 1d section 諸家彬 繪製敵人樣式 : 05-27, 4d 撰寫故事 : 05-31, 1d debug與程式優化與細部調整 : 06-01, 3d 製作報告 : 06-04, 1d section 陳昱材 debug與角色輸出 : 05-28, 3d debug與程式優化與細部調整 : 06-01, 3d ``` --- # 團隊分工與說明 --- # 許育文(50%) ## 主程式製作,後期程式優化 --- 許育文50%的理由是因為主程式基礎架構是他撰寫,後期參與優化作業。 --- # 諸家彬(30%) ## 敵人繪製,撰寫故事,後期程式優化。 --- 諸家彬30%的理由是因為沒有參與主程式基本架構撰寫,後期有參與優化作業,繪製八個角色圖形。 --- # 陳昱材(20%) ## 後期程式優化,提出建議,幫忙雜事 --- 陳昱材20%的理由是因為沒有參與主程式基本架構撰寫,後期有參與優化作業。 --- # 流程圖 --- ![](https://i.imgur.com/eIgYSE7.png) --- # ASCII ART ```cpp class Art { public: void DieLogo(){ cout << R"( .___. /) ,-^ ^-. // / \ .-------| |--------------/ __ __ \-------------------.__ |WMWMWMW| |>>>>>>>>>>>>> | />>\ />>\ |>>>>>>>>>>>>>>>>>>>>>>:> `-------| |--------------| \__/ \__/ |-------------------'^^ \\ \ /|\ / \) \ \_/ / | | |+H+H+H+| \ / ^-----^ )" << endl; cout << R"( __ __ ____ _ _ _____ ______ _____ \ \ / / / __ \ | | | | | __ \ | ____| /\ | __ \ \ \_/ / | | | | | | | | | | | | | |__ / \ | | | | \ / | | | | | | | | | | | | | __| / /\ \ | | | | | | | |__| | | |__| | | |__| | | |____ / ____ \ | |__| | |_| \____/ \____/ |_____/ |______| /_/ \_\ |_____/ )" << endl; } void WolfLogo(int io){ switch (io) { case 1: cout << R"( * |\/ \/| |\|__O__|/| { '"' } \ 、 Y ˊ / {_ _} |\ o / \ |- ''--_______--'''-_ \ - ~ ~ ~ ~ - | ~ ' ~ '' ' -/ --- \ - ' / - / "" /---- \ - \ / ~ ~_-| "" | ---- \ -\ |-'' \ " | \ ---- / / | / \ \ \ --- / / | | / / _/ / -- _/ /_/ / _/ / vv/ vv/ vv/ vv/ )" << endl; break; case 2: cout << R"( ) (\_ (( _/{ "-; )).-' {{ ;'` ( ( ;._ \\ )" << endl; break; default: break; } } void GhostLogo(int io){ switch (io) { case 1: cout << R"( _______ --- --- /= =\ | | | [] [] | | | | \/\/\/ | | | | | \ |\ |\ |\ \ \__\ \__\ \__\ \__\ )" << endl; break; case 2: cout << R"( _______ --- --- /= =\ | | | x x | | | | ------ | | | | | \ |\ |\ |\ \ \__\ \__\ \__\ \__\ )" << endl; break; default: break; } } void GoblinLogo(int io){ switch (io) { case 1: cout << R"( ________ /| / == \ /| / |\/ \ / \/ | \ | \ [] [] / | | |\-\ \/ /-/ \ | \ JU / | | _\____/_ \ | / \ _____ | | / _ || _ \/ _ \ ===== / \ | { } | [] _//__*___\--\_____/ [______] / \ /____/\____\ || || || || )" << endl; break; case 2: cout << R"( ________ |\ / == \ /| | \/ \ / \/ | | \ x x / | \-\ /-/ \ / _\____/_ )" << endl; break; default: break; } } void ElfLogo(int io){ switch (io) { case 1: cout << R"( * |\/ \/| |__O__| / /__\ \ \ \\\\\\ / /[ ] ] }\ \ ////// \\****\\\ ____|| _ _ ||____ ^ ///****// \\******\\\ '---|| ||---< 0 >******// \\*******\\\ | | ^ | | ///v******// \\********\/ /|\_____/|\ \/***|****// \\********| ||__| |_|| |****|***// \\*****/ \\ \--/ // \***|*// \\**/ \\____// \*[ ] |/ \__/ \__/\/|/ / /****| 。 。 |***\/ / \ \****| |***\_/\ //\ \**/| |\*****\\ //***[ ]/| |\\\****\\ //**/// | | \\\**\\ //***// /_--__--__--__-\ \\***\\ //// | | | | \\\\ | | | | | | | | )" << endl; break; case 2: cout << R"( * |\/ \/| |__O__| / /__\ \ \ / /[ ] ] }\ \ ____|| X X ||____ '---|| ||---' | | - | | / /|\_____/|\ \ | || || | )" << endl; break; default: break; } } void SlimeLogo(int io){ switch (io) { case 1: cout << R"( /\ _-" "-_ _--"" ""--_ -" "- / ___ ___ \ / "_+_" "_+_" \ | ______ | \ \____/ / ""----____ ____----"" """" )" << endl; break; case 2: cout << R"( /\ _-" "-_ _--"" ""--_ -" "- / \ / x x \ | ______ | \ / ""----____ ____----"" """" )" << endl; break; default: break; } } void MushroomLogo(int io){ switch (io) { case 1: cout << R"( _______ _-"""@@@@@@@"""=_ /@@@@( )@@@@@@@( ) \ /)@@@@@@@@@@@@@@@@@@" /@@@@@@@@( )@@@@@@@@@@@" /"@@( )@@____@@@@@( )@@@@""- \( )/ -"" """---___--( )@@\ "-@\_ (O) (O) \ @@| \@/ |@@/ / @ UU @ \ | \ \ / "-_ _-" ""--__ __--" """""" )" << endl; break; case 2: cout << R"( _______ _-"""@@@@@@@"""=_ /@@@@( )@@@@@@@( ) \ /)@@@@@@@@@@@@@@@@@@" /@@@@@@@@( )@@@@@@@@@@@" /"@@( )@@____@@@@@( )@@@@""- \( )/ -"" """---___--( )@@\ "-@\_ x x \ @@| \@/ |@@/ / ---- \ | \ \ / "-_ _-" ""--__ __--" """""" )" << endl; break; default: break; } } void YetiLogo(int io){ switch (io) { case 1: cout << R"( _--"--__--""--^ _--" < J "--_ "--_ __ _ _--" -" -" \ -"|/"- -" __-" / 。 |/ 。 \ "-__ "-_ | _________ | _-" / \ V V / \ < /( "- ______ -" Y > -" u "- __-< < \ | " "-__ ) v -" ) /\ / -=""/-- (_ " |) / /" \ Y -" / \ < " -"\ -" V \ { V ) "- /"- /] /]|-"\ | \| | - " \ \ | | /"-|[\ [\ /] |] [| \ / ) V ( / |] [| [\ " \] "-_ "- ( -" [/ " / ""--___)_v___--""\ ( )( )( ) ( )( )( ) )" << endl; break; case 2: cout << R"( _--"--__--""--^ _--" < J "--_ "--_ __ _ _--" -" -" \ -"|/"- -" __-" / x |/ x \ "-__ "-_ | ______ | _-" / \ / \ < /( "- ______ -" Y > -" u "- __-< < \ | " "-__ ) v -" ) /\ / -=""/-- (_ " |) / /" \ Y -" / \ < " -"\ -" V \ { V ) "- /"- /] /]|-"\ | \| | - " \ \ | | /"-|[\ [\ /] |] [| \ / ) V ( / |] [| [\ " \] "-_ "- ( -" [/ " / ""--___)_v___--""\ ( )( )( ) ( )( )( ) )" << endl; break; default: break; } } void BoneLogo(int io){ switch (io) { case 1: cout << R"( |f-"Y\| \()7L/ cgD __ _ |\( .' Y '>, \ \ / _ _ \ \\\ )(_) (_)(|} \\\ { 4A } / \\\ \uLuJJ/\l \\\ |3 p)/ \\\___ __________ /nnm_n// c7___-__,__-)\,__)(". \_>-<_/D //V \_"-._.__G G_c__.-__<"/ ( \ <"-._>__-,G_.___)\ \7\ ("-.__.| \"<.__.-" ) \ \ |"-.__"\ |"-.__.-".\ \ \ ("-.__"". \"-.__.-".| \_\ \"-.__""|!|"-.__.-".) \ \ "-.__""\_|"-.__.-"./ \ l ".__""">G>-.__.-"> .--,_ "" G )" << endl; break; case 2: cout << R"( ,--. { } K, } / `Y` _ / / {_'-K.__/ `/-.__L._ / ' /`\_} / ' / ____ / ' / ,-'~~~~ ~~/ ' /_ ,' ``~~~%%', ( % Y { %% I { - % `. | ', % ) | | ,..__ __. Y | .,_./ Y ' / ^Y J )| \ |' / | | || \ L_/ . _ (_,.'( \, , ^^""' / | ) \_ \ /,L] / '-_`-, ` ` ./` `-(_ ) ^^\..___,.--` )" << endl; break; default: break; } } void VampireLogo(int io){ switch (io) { case 1: cout << R"( __.......__ .-:::::::::::::-. .:::''':::::::''':::. .:::' `:::' `:::. .'\ ::' ^^^ `:' ^^^ ':: /`. : \ :: _.__ __._ :: / ; : \`: .' ___\ /___ `. :'/ ; : /\ (_|_)\ /(_|_) /\ ; : / .\ __.' ) ( `.__ /. \ ; : \ ( { } ) / ; : `-( . ^"^ . )-' ; `. \ .'<`-._.-'>'. / .' `. \ \;`.';/ / .' `._ `-._ _.-' _.' .'`-.__ .'`-._.-'`. __.-'`. .' `. .' `. .' `-. .-' `. )" << endl; break; case 2: cout << R"( =/\ /\= / \'._ (\_/) _.'/ \ / .''._'--(x.x)--'_.''. \ /.' _/ |`'=/ " \='`| \_ `.\ /` .' `\;-,'\___/',-;/` '. '\ /.-' `\(-V-)/` `-.\ ` " " ` )" << endl; break; default: break; } } void ShowDice(int DiceFace){ switch (DiceFace) { case 1:{ cout << "┌─────────┐ \n"; cout << "│ │ \n"; cout << "│ ● │ \n"; cout << "│ │ \n"; cout << "└─────────┘ \n"; break; } case 2:{ cout << "┌─────────┐ \n"; cout << "│ ● │ \n"; cout << "│ │ \n"; cout << "│ ● │ \n"; cout << "└─────────┘ \n"; break; } case 3:{ cout << "┌─────────┐ \n"; cout << "│ ● │ \n"; cout << "│ ● │ \n"; cout << "│ ● │ \n"; cout << "└─────────┘ \n"; break; } case 4:{ cout << "┌─────────┐ \n"; cout << "│ ● ● │ \n"; cout << "│ │ \n"; cout << "│ ● ● │ \n"; cout << "└─────────┘ \n"; break; } case 5:{ cout << "┌─────────┐ \n"; cout << "│ ● ● │ \n"; cout << "│ ● │ \n"; cout << "│ ● ● │ \n"; cout << "└─────────┘ \n"; break; } case 6:{ cout << "┌─────────┐ \n"; cout << "│ ● ● │ \n"; cout << "│ ● ● │ \n"; cout << "│ ● ● │ \n"; cout << "└─────────┘ \n"; break; } default: break; } cout << " \n"; } void BlackJactArt(){ cout << R"( ┌------┐ |A ┌-------┐ | |J | | | | | | | | | | └---| J| └-------┘ )" << endl; } void portal(){ cout << R"( .,-:;//;:=, . :H@@@MM@M#H/.,+%;, ,/X+ +M@@M@MM%=,-%HMMM@X/, -+@MM; $M@@MH+-,;XMMMM@MMMM@+- ;@M@@M- XM@X;. -+XXXXXHHH@M@M#@/. ,%MM@@MH ,@%= .---=-=:=,. -@#@@@MX ., -%HX$$%%%+; =-./@M@M$ .;@MMMM@MM: X@/ -$MM/ .+MM@@@M$ ,@M@H: :@: . -X#@@@@- ,@@@MMX, . /H- ;@M@M= .H@@@@M@+, %MM+..%#$. /MMMM@MMH/. XM@MH; -; /%+%$XHH@$= , .H@@@@MX, .=--------. -%H.,@@@@@MX, .%MM@@@HHHXX$$$%+- .:$MMX -M@@MM%. =XMMM@MM@MM#H;,-+HMM@M+ /MMMX= =%@M@M#@$-.=$@MM@@@M; %M%= ,:+$+-,/H#MMMMMMM@- -, =++%%%%+/:-. )" << endl; } void tk(){ cout << R"( ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⢹⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⡟⠹⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⢁⡈⠻⣿⣦⣨⣿⣿⣶⣤⣤⣴⣦⡀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⢁⣴⣿⣿⣦⡈⠻⣿⣯⡈⠻⢿⣿⣿⣿⣿⠆⠀ ⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⢁⣴⣿⣿⣿⣿⣿⣿⣦⡈⠻⣿⣶⣿⠿⢿⠟⠁⠀⠀ ⠀⠀⠀⠀⢀⣴⣿⠟⢁⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠆⢈⣿⣿⠆⠀⠀⠀⠀⠀ ⠀⠀⢀⣴⣿⣟⠁⠰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢁⣴⣿⠟⠁⠀⠀⠀⠀⠀⠀ ⠀⠰⣿⣿⣿⣿⣷⣦⡈⠻⣿⣿⣿⣿⣿⣿⠟⢁⣴⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠈⠻⠟⠛⠛⠿⣿⣦⡈⠻⣿⣿⠟⢁⣴⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣆⠈⢁⣴⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣷⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀ )" << endl; } void RevolverArt(){ cout << R"( ( _ ) /=> ( +____________________/\/\___ / /| .''._____________'._____ / /|/\ : () : :\ ----\| \ ) '..'______________.'0|----| \ 0_0/____/ \ |---- /----\ || -\\ --| \ || || ||\ \ \\____// '| \ .'/ | .:/ | :/_________| )" << endl; } void DiceArt(){ cout << R"( (( _______ _______ /\O O\ /O /\ / \ \ / O /O \ / O \O____O\ )) ((/_____O/ \\ /O / \O O\ / \ / O / \O O\ O/ \/_____O/ \O____O\/ )) )) (( )" << endl; } void RpsArt(){ cout << R"( _______ _______ ---' ____) ____(____ '--- (_____) (______ (_____) (__________ (____) (____) ---.__(___) (___)__.--- )" << endl; } void BJArt(){ cout << R"( _____ _____ |K WW| _____ |Q ww| | /\{)| _____ |J ww| | /\{(| | \/%%| _____ |10 o || /\{)| | \/%%| | %%%||A ^ | |o o o|| \/% | | %%%| |_%%%>|| / \ | |o o o|| % | |_%%%O| | \ / | |o o o||__%%[| | . | |___0I| |____V| )" << endl; } void cash(){ cout << R"( ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⡀⢀⣀⣤⣥⡴⣶⡶⣶⣶⣽⣿⣿⡟⠃⠄⢀⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣴⣼⣿⣿⣿⣿⣗⢿⠻⣿⣻⣿⣿⣿⣿⣿⠄⠄⠄⣸⣿⣿⡷⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣠⠄⠄⠉⢻⣿⡿⣿⣿⣾⣿⣗⣾⣯⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣶⣄⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⣼⣿⣄⡀⢀⣬⣿⣿⣿⣿⣿⠿⠟⠚⠛⠛⠛⠛⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣻⣿⣿⣟⢿⣽⡿⠟⢉⠄⠄⠄⣀⠄⡀⠄⢀⡀⠄⠄⠄⠉⠻⢿⣿⣿⣿⣿⣿⣿⡿⣧⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⢬⣼⣿⣿⣿⣿⣿⡿⠋⠄⠄⢠⠠⠰⠣⠈⠂⠓⠃⠘⠄⠢⢀⣦⢀⠄⠄⠙⢿⣿⣿⣿⣿⣿⣏⣽⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⠟⠄⠄⠐⢼⠒⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⠥⡠⢄⠄⠄⢻⣿⣿⣿⣿⣿⣿⣿⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣻⣿⣿⣿⣶⣽⡟⠄⠄⠄⠄⡀⠄⠄⢀⠄⠄⠄⠄⠄⠄⠄⡀⠄⠄⠄⠉⠁⠄⠄⠄⢻⣿⣿⣾⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡘⣻⣿⣿⣿⣷⣿⠁⠄⠄⠠⣇⡇⠃⠂⣿⠄⣾⢸⡆⢴⠉⡇⣰⢉⡆⣰⠉⣧⠄⠄⠄⠸⣿⣽⣿⣤⣤⣤⣾⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣶⣶⣿⣿⣿⣿⠄⠄⠄⢀⠙⣿⡆⠄⡯⠂⣿⢼⡇⣿⠄⣯⣿⢁⡇⣿⠄⣿⠄⠄⠄⠄⣿⣻⣿⣿⣿⡿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠟⠉⠙⢻⣿⣿⣿⠄⠄⠄⠘⢢⡗⠃⢼⠧⠠⠻⠜⠄⠹⠼⠃⠻⠼⠣⠻⠸⠇⠄⠄⠄⢸⡿⣿⣿⣿⣻⣿⡎⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⢀⣠⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣷⣿⣧⣿⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⣿⣿⣿⢿⣿⣿⣦⠄⠄⠄⠔⢅⢄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠔⢔⠄⠄⠄⢀⣾⣿⣟⣭⠿⡽⡻⡟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢿⣿⣿⣿⣿⢿⢽⣳⣄⠄⠄⠄⠈⠾⢀⢖⠠⡄⠄⢠⣐⠣⠌⠊⠄⠄⢀⣴⣿⣿⣿⣿⣷⣿⣿⡛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⢿⣿⣷⣻⣿⣿⣿⣿⣷⣦⣀⠄⠄⠄⠄⠈⠄⠄⠄⠄⠄⠄⢀⣠⣶⣿⣿⣿⢿⣿⣿⣿⣾⠟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣷⣶⣦⣤⣤⣤⣤⣶⣶⣿⣿⣿⣿⣿⣿⠁⠄⠄⢹⠟⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣿⣿⣿⣿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠁⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠿⣿⡇⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠶⠷⢶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ )" << endl; } }; ``` --- # 程式-打怪的部分 ```cpp= class Hunter: public Art { public: void win_or_lose(int pa){ Art logo; srand(time(NULL)); int win_or_lose = rand()%100 + 1; if (win_or_lose < pa){ logo.DieLogo(); cout << "\n但你輸了\n\n你輸了你的一切\n\n你死了"; exit(1); } } int hunt(int coins){ Art logo; srand(time(NULL)); int ch =rand()%4 + 1; int getcoin =rand()%100 + 1; switch (ch) { case 1: logo.WolfLogo(1); cout << "你遇到了 狼王 \n"; break; case 2: logo.VampireLogo(1); cout << "你遇到了 吸血鬼 \n"; break; case 3: logo.YetiLogo(1); cout << "你遇到了 雪怪 \n"; break; case 4: logo.ElfLogo(1); cout << "你遇到了 妖精王 \n";break; default:break; } win_or_lose(5); cout << "你擊敗了他並獲得" << getcoin << "金幣" << endl; switch (ch) { case 1: logo.WolfLogo(2); break; case 2: logo.VampireLogo(2); break; case 3: logo.YetiLogo(2); break; case 4: logo.ElfLogo(2); break; default:break; } int tk =rand()%10000 + 1; if (tk < 5){ ticket = ticket +1; logo.tk(); cout << "\n是...是票欸\n"; } coin = coins + getcoin; return coin,ticket; } int adventure(int coins){ Art logo; srand(time(NULL)); int ch =rand()%4 + 1; int getcoin =rand()%10000 + 1; switch (ch) { case 1: logo.SlimeLogo(1); cout << "你遇到了 史萊姆 \n"; break; case 2: logo.MushroomLogo(1); cout << "你遇到了 蘑菇怪\n"; break; case 3: logo.GoblinLogo(1); cout << "你遇到了 哥布林 \n"; break; case 4: logo.BoneLogo(1); cout << "你遇到了 骷嚕 \n";break; default:break; } win_or_lose(67); cout << "你擊敗了他並獲得" << getcoin << "金幣" << endl; coin = coins + getcoin; switch (ch) { case 1: logo.SlimeLogo(2); break; case 2: logo.MushroomLogo(2); break; case 3: logo.GoblinLogo(2); break; case 4: logo.BoneLogo(2); break; default:break; } int tk =rand()%10000 + 1; if (tk < 15){ ticket = ticket +1; logo.tk(); cout << "\n是...是票欸\n"; } return coin,ticket; } }; ``` --- # 程式-賭博的部分 ```cpp= class play: public Hunter { public: void bust(int coins){ if (coins < 0 ){ cout << ":賭到破產還敢來(#`Д´)ノ\n"; cout << " (抓去打怪)\n"; //adventure(coins); } } int PlayDice(int coins){ rs: bust(coins); cls(); Art logo; logo.DiceArt(); srand(time(NULL)); int ur_st_dice =rand()%6 + 1; int ur_nd_dice =rand()%6 + 1; int bot_st_dice =rand()%6 + 1; int bot_nd_dice =rand()%6 + 1; int ur_point,bot_point=0; cout << "coins: " << coin << endl; int bet; cout << "bet: "; cin >> bet ; if (bet > coin){ cout << "你沒那麼多 == \n\n"; goto rs; } else if (bet < 0){ cout << "想鑽漏洞 == \n\n"; goto rs; } else{ ur_point = ur_st_dice + ur_nd_dice; bot_point = bot_st_dice + bot_nd_dice; if ((ur_st_dice == 6 && ur_nd_dice == 6)){ ShowDice(6); ShowDice(6); cout << " 骰出了兩個6! 對手害怕並且放棄了。\n" ; coin = coins + (bet)*3; return coin ; } else { ShowDice(ur_nd_dice); ShowDice(ur_st_dice); cout << " 您骰出了" << ur_st_dice << " " << ur_nd_dice << endl; ShowDice(bot_st_dice); ShowDice(bot_nd_dice); cout << " 對手骰出了" << bot_st_dice << " " << bot_nd_dice << endl; if (ur_point > bot_point){ cout << "你贏了" << bet << "金幣\n" << endl; coin = coins + bet; return coin; } else if (ur_point == bot_point){ cout << "平手" << endl; coin = coins + 0; return coin; } else { cout << "你輸了" << bet << "金幣\n" << endl; coin = coins - bet; return coin; } } } } int PlayRps(int coins){ rs: bust(coins); cls(); Art logo; logo.RpsArt(); int bot; int player; int bet; cout << "coins: " << coin << endl; cout << "bet: "; cin >> bet; if (bet > coin){ cout << "你沒那麼多 == \n\n"; goto rs; } else if (bet < 0){ cout << "想鑽漏洞 == \n\n"; goto rs; } else{ srand(time(NULL)); bot=rand()%3+1; start: cout<<"請輸入你要出的拳 [1]剪刀 [2]石頭 [3]布"<<endl; cin>>player; if(bot==1){ if(player==1){ cout << "\n///////////////////\n"; cout<<"你出剪刀, 電腦也出剪刀!"<<endl<<"平手!"; cout << "\n///////////////////\n\n"; return coin; } else if(player==2){ cout << "\n///////////////////\n"; cout<<"你出石頭, 電腦出剪刀!"<<endl<<"你贏了" << bet << "金幣\n"; cout << "\n///////////////////\n\n"; coin = coins + bet; return coin; } else if(player==3){ cout << "\n///////////////////\n"; cout<<"你出布, 電腦出剪刀!"<<endl<<"你輸了" << bet << "金幣\n"; cout << "\n///////////////////\n\n"; coin = coins - bet; return coin; } else{ cout << "\n///////\n"; cout<< "到底賭不賭!\n"; cout << "///////\nn"; goto start; } } if(bot==2){ if(player==1){ cout << "\n///////////////////\n"; cout<<"你出剪刀, 電腦出石頭!"<<endl<<"你輸了" << bet << "金幣\n"; cout << "\n///////////////////\n\n"; coin = coins - bet; return coin; } else if(player==2){ cout << "\n///////////////////\n"; cout<<"你出石頭, 電腦也出石頭!"<<endl<<"平手!"; cout << "\n///////////////////\n\n"; return coin; } else if(player==3){ cout << "\n///////////////////\n"; cout<<"你出布, 電腦出石頭!"<<endl<<"你贏了" << bet << "金幣\n"; cout << "\n///////////////////\n\n"; coin = coins + bet; return coin; } else{ cout << "\n///////\n"; cout<< "到底賭不賭!\n"; cout << "///////\nn"; goto start; } } if(bot==3){ if(player==1){ cout << "\n///////////////////\n"; cout<<"你出剪刀, 電腦出布!"<<endl<<"你贏了" << bet << "金幣\n"; cout << "\n///////////////////\n\n"; coin = coins + bet; return coin; } else if(player==2){ cout << "\n///////////////////\n"; cout<<"你出石頭, 電腦出布!"<<endl<<"你輸了!" << bet << "金幣\n"; cout << "\n///////////////////\n\n"; coin = coins - bet; return coin; } else if(player==3){ cout << "\n///////////////////\n"; cout<<"你出布, 電腦也出布!"<< endl <<"平手!"; cout << "\n///////////////////\n\n"; return coin; } else{ cout << "\n///////\n"; cout<< "到底賭不賭!\n"; cout << "///////\nn"; goto start; } } return coin; } } void ShowBJ(int player, int bot){ cout << "\n///////////////////////////////////\n"; cout << " player: " << player ; cout << "\n bot: " << bot ; cout << "\n///////////////////////////////////\n\n"; } int PlayBlackJack(int coins){ rs: bust(coins); int bot=0; int player=0; int GetCard,Card; int bet,temp,tmp,STCard,NDCard,ChOne,BotGotOne = 0; int i=1; cls(); Art logo; logo.BJArt(); cout << "coins: " << coin << endl; cout << "bet: "; cin >> bet; if (bet > coin){ cout << "你沒那麼多 == \n\n"; goto rs; } else if (bet < 0){ cout << "想鑽漏洞 == \n\n"; goto rs; } else{ ///////////////////////////////////////////////// srand(time(NULL)); Card = rand()%13+1; // Card = 1; if (Card>10){ Card = 10; bot = bot + Card; }else if (Card == 1){ cout << "莊家牌 '1' 保險? y/n [1]/[0] "; cin >> BotGotOne; cout << endl; bot = bot + Card; } else bot = bot + Card; srand(time(NULL)); STCard = rand()%13+1; srand(time(NULL)); NDCard = rand()%13+1; if (STCard>10){ STCard = 10; } if (STCard == 1){ cout << "第二張是" << NDCard << "要換牌成 '11' 嗎 y/n [1]/[0] "; cin >> ChOne; cout << endl; if (ChOne == 1){ player = player + 11; } else player = player + 1; } else player = player + STCard; //// if (NDCard>10){ NDCard = 10; } if (NDCard == 1){ cout << "第一張是" << STCard << "要換成 '11' 嗎 y/n [1]/[0] "; cin >> ChOne; cout << endl; if (ChOne == 1){ player = player + 11; } else player = player + 1; } else player = player + NDCard; //player = 21; if (player == 21){ BlackJactArt(); ShowBJ(player,bot); cout << " 21點 閒家勝\n"; coin = coins + bet*1.5; return coin; } ShowBJ(player,bot); //// double bet if (player != 21){ cout << "雙倍下注? y/n [1]/[0] "; cin >> ChOne; switch (ChOne) { case 0: break; case 1:{ bet = bet + bet; if (GetCard == 0){ goto BotGetCard; } else { srand(time(NULL)); Card = rand()%13+1; if (Card>10){ Card = 10; } if (Card == 1){ cout << "要換牌成 '11' 嗎 y/n [1]/[0] "; cout << endl; cin >> ChOne; if (ChOne == 1){ player = player + 11; } else player = player + 1; } else player = player + Card; ShowBJ(player,bot); if (player == 21){ ShowBJ(player,bot); cout << " 21點 閒家勝\n"; coin = coins + bet; return coin; } if (player > 21){ cout << "閒家爆牌,莊家勝\n"; coin = coins - bet; return coin; } } goto BotGetCard; break; } default: break; } } while (1){/////player getcard cout << "\n要牌? y/n [1]/[0] "; cin >> GetCard; cout << endl; i++; if (GetCard == 0){ break; } else { srand(time(NULL)); Card = rand()%13+1; if (Card>10){ Card = 10; } if (Card == 1){ cout << "要換牌成 '11' 嗎 y/n [1]/[0] "; cout << endl; cin >> ChOne; if (ChOne == 1){ player = player + 11; } else player = player + 1; } else player = player + Card; if (player == 21){ ShowBJ(player,bot); cout << " 21點 閒家勝\n"; coin = coins + bet; return coin; } } ShowBJ(player,bot); if (player > 21){ cout << "閒家爆牌,莊家勝\n"; coin = coins - bet; return coin; } if (i == 5 && player < 22){ cout << "過五關 閒家勝\n"; coin = coins + bet*3; return coin; } } BotGetCard: while (1){/////bot getcard if (bot > 16){ break; } else{ srand(time(NULL)); Card = rand()%13+1; if (Card>10){ Card = 10; } if (BotGotOne == 1 && Card > 10){ cout << "莊家21點"; coin = coins - bet + bet *1.5; return coin; } if (Card == 1){ tmp = bot + 1; temp = bot +11; if (temp > tmp && temp < 22){ bot = bot + 11; } else bot = bot + 1; } else bot = bot + Card; } ShowBJ(player,bot); if (bot == 21){ cout << " 21點 莊家贏\n"; coin = coins - bet; return coin; } if (bot > 21){ cout << "莊家爆牌,閒家贏\n"; coin = coins + bet; return coin; } } ShowBJ(player,bot); if (player > bot){ cout << "閒家贏\n"; coin = coins + bet; return coin; } else if(bot > player){ cout << "莊家勝\n"; coin = coins - bet; return coin; } else if (bot == player){ cout << "平手\n"; coin = coins - 0; return coin; } } } int PlayRussianRoulette(int coins){ rs: bust(coins); cls(); Art logo; logo.RevolverArt(); srand(time(NULL)); int shot =rand()%6 + 1; int i=0; cout << "coins: " << coin << endl; int bet; cout << "bet: "; cin >> bet ; if (bet > coin){ cout << "你沒那麼多 == \n\n"; goto rs; } else if (bet < 0){ cout << "想鑽漏洞 == \n\n"; goto rs; } else{ i++; if (i == shot){ win_or_lose(100); } else cout << "你開了第'" << i << "'發,很幸運的你活下來了\n "; int ch; while (1){ if(i == 5){ cout <<"你贏了\n"; coin = coins + bet*50; return coin; } i++; cout << "繼續 y/n [1]/[0]"; cin >> ch; switch (ch) { case 1:{ if (i == shot){ win_or_lose(100); } else cout << "你開了第'" << i << "'發,很幸運的你活下來了\n "; break; } case 0:{ cout << "你放下了手槍\n"; coin = coins + bet*i*2; return coin; break; } default: break; } } } } }; ``` --- # 程式-去賭博的路上 ```cpp= class gamblingCH:public play { public: int dice(int coins){ if (coins < 0){ cout << "\n/////////////\n"; cout << "負載還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } else if (coins == 0) { cout << "\n///////////////\n"; cout << "沒錢還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } int ch; PlayDice(coin); while (1) { cout << "play? 0/1 [結束]/[繼續]"; cin >> ch; if (ch == 0){ break; } else PlayDice(coin); } return coin; } int BlackJack(int coins){ if (coins < 0){ cout << "\n/////////////\n"; cout << "負載還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } else if (coins == 0) { cout << "\n///////////////\n"; cout << "沒錢還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } int ch; PlayBlackJack(coin); while (1) { cout << "\nplay? 0/1 [結束]/[繼續]"; cin >> ch; cout << endl << endl; if (ch == 0){ break; } else PlayBlackJack(coin); } return coin; } int rps(int coins){ if (coins < 0){ cout << "\n/////////////\n"; cout << "負載還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } else if (coins == 0) { cout << "\n///////////////\n"; cout << "沒錢還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } int ch; PlayRps(coin); while (1) { cout << "play? 0/1 [結束]/[繼續]"; cin >> ch; if (ch == 0){ break; } else PlayRps(coin); } return coin; } int RussianRoulette(int coins){ if (coins < 0){ cout << "\n/////////////\n"; cout << "負載還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } else if (coins == 0) { cout << "\n///////////////\n"; cout << "沒錢還敢來 ==\n"; cout << "///////////////\n\n"; return coin; } int ch; PlayRussianRoulette(coin); while (1) { cout << "play? 0/1 [結束]/[繼續]"; cin >> ch; if (ch == 0){ break; } else PlayRussianRoulette(coin); } return coin; } }; ``` --- # 程式-選擇清單 ```cpp= class ShowChoose { public: int GoWhere(){ int choose; cout << "[1]主城" << endl; cout << "[2]野外冒險" << endl; cout << "[3]菁英怪" << endl; cout << "[4]賭博" << endl; cout << "[0]登出" << endl; cin >> choose ; cls(); return choose; } void gambling(){ int choose; Art logo; cls(); while (1){ logo.cash(); cout << "[1]骰子比大小 \n"; cout << "[2]21點 \n"; cout << "[3]猜拳 \n"; cout << "[4]俄羅斯輪盤 \n"; cout << "[5]錢包 \n"; cout << "[0]離開 \n"; cin >> choose ; if (choose == 0){ break; } else {Cgambling(choose);} } } }; ``` --- # 程式-開頭的部分 ```cpp= void welcome(){ int i; char c[]="在充滿機率世界不務正業的冒險者!"; for ( i = 0; c[i]!='\0'; i++){ cout << c[i] ; Sleep(times); } cout << endl; char cb[]="\n你在一次意外中不小心被傳送到另一個世界,本以為沒有機會回家了,不過聽當地居民說【在當地的商店是可以買到傳送們的票的,不過相當的貴】,但為了回到原本的世界,你決定想辦法賺錢買票。\n\n"; for ( i = 0; cb[i]!='\0'; i++){ if (cb[i-1]== ','){ Sleep(times*10); } cout << cb[i] ; Sleep(times*0.25); } cout << endl; //system("pause"); } ``` --- # 完整程式碼 [code連結](https://github.com/AlvinX3/GamblingRPG) --- # 結果 [結果連結](https://youtu.be/hMmc8-Ts3-w) --- # 參考資料 - [ascii art](https://www.asciiart.eu/) --- # 報告結束
{"metaMigratedAt":"2023-06-17T02:14:28.310Z","metaMigratedFrom":"Content","title":"期末專題","breaks":true,"description":"主題說明","contributors":"[{\"id\":\"71fe2330-40d6-40b2-a2cd-a443eaa9dcf9\",\"add\":213373,\"del\":173230}]"}
    347 views