## 環境說明 作業系統 : ubuntu 22.04.3 Live Server 適用服務:dialog –version #Version: 1.3-20211214 程式作者:EvelynChen、RichChang、WeiTseng、MinaKao 最後更新:2024/2/29 17:51 ## 代碼 pompom.sh ```bash= #!/bin/bash # 安裝環境 sudo apt install dialog mariadb-server -y # 建立資料集 sudo mysql -uroot -p123456 -e "create database pudding;" # 建立資料表 sudo mysql -uroot -p123456 -Dpudding -e "USE pudding; create table player_record (player_name VARCHAR(40), power int, coin int);" restart_game() { dialog --title "重新開始遊戲" --yesno "是否要重新開始遊戲?" 10 70 RESTART_OPTION=$? if [ "$RESTART_OPTION" -eq 0 ]; then # 重新執行遊戲的主要部分 bash pudding2.sh else # 如果玩家選擇不重新開始,則顯示結束訊息並退出 dialog --title "遊戲結束" --msgbox "感謝您的遊玩!再見!" 10 70 exit 0 fi } # 遊戲介紹 dialog --title "歡迎來到布丁狗夢工廠" --msgbox "在這個五分鐘小遊戲裡,你可以收養一支專屬於你的布丁狗,\n並且在他的人生道路上做出選擇,\n創造出屬於你的布丁狗吧!" 10 70 # 定義變數 name="" power=100 coin=500 # 玩家名稱輸入 name=$(dialog --inputbox "請輸入您的名稱:" 10 70 3>&1 1>&2 2>&3) # 資料庫 新增飼主名稱 sudo mysql -uroot -p123456 -Dpudding -e "USE pudding; INSERT INTO player_record (player_name, power, coin) VALUES ('$name', '$power', '$coin');" # 進度條 { for ((i = 0 ; i <= 100 ; i+=20)); do # 發送新的進度條百分比 echo $i sleep 0.2 done } | dialog --gauge "布丁狗正在努力加載..." 10 70 0 # 收養布丁狗 dialog --title "收養一隻布丁狗" --yesno "有一天,你在下班的路上,看到一個髒兮兮的紙箱,\n湊近一看,發現居然是一隻小布丁狗,\n他也正好抬起頭來看向你。\n\n你是否願意收養這隻布丁狗呢?" 10 70 YESNO=$? if [ "$YESNO" -ne 0 ]; then dialog --title "結局" --msgbox "你看著可憐的布丁狗,雖然心生憐憫,\n但一想到自己家裡根本沒有條件再養一隻狗狗,\n雖然不捨,也只能含淚拒絕布丁狗的眼神攻勢。\n\n幾年後的今天,你再次回想起那個雨夜,心裡生起一陣婉惜。" 10 70 restart_game else choice=$(dialog --title "收養一隻布丁狗" --menu "因為不忍心布丁狗被遺棄,你將紙箱抱了回家,\n在回家的路上你路過了寵物店,但手上的錢只夠你買一樣商品,\n你會選擇購買:" 17 70 4 \ 1 "柔軟的寵物床(200元)" \ 2 "狗狗罐頭(50元)" \ 3 "狗狗衣服(100元)" \ 4 "狗狗項圈(80元)" 3>&1 1>&2 2>&3) case $choice in 1) item="柔軟的寵物床(200元)" cost=200 ;; 2) item="狗狗罐頭(50元)" cost=50 ;; 3) item="狗狗衣服(100元)" cost=100 ;; 4) item="狗狗項圈(80元)" cost=80 ;; esac # 檢查金額是否足夠購買商品 if [ $coin -lt $cost ]; then dialog --title "購買失敗" --msgbox "購買餘額不足,無法購買此商品。" 10 70 else coin=$((coin - cost)) dialog --title "購買成功" --msgbox "成功購買 $item" 10 70 fi fi dialog --title "歡迎來到布丁狗夢工廠" --msgbox "看著懷裡睡得打呼嚕的小布丁狗,\n你終於深刻體會到,自己終於不再是孤單一人,\n你下定決心,一定要給布丁狗最完善的照顧!" 10 70 # 才藝課選擇 TALENT_CHOICE=$(dialog --title "布丁狗的才藝課程" --menu "在經歷了幾年的養成,小布丁狗長大了不少,\n作為家長兼飼主的你,也是時候該為你的布丁狗思考一下他的才藝課了。\n\n在經過與布丁狗的聊天與志向討論後,你決定為他報名:" 14 70 4 \ 1 "烹飪課(消耗200元,10點體力)" \ 2 "運動課(消耗150元,15點體力)" \ 3 "藝術課(消耗180元,12點體力)" \ 4 "AI大數據狗才養成班(消耗500元,20點體力)" 3>&1 1>&2 2>&3) # 才藝課消耗金錢和體力 case $TALENT_CHOICE in 1) cost=200; energy=10 ;; 2) cost=150; energy=15 ;; 3) cost=180; energy=12 ;; 4) cost=500; energy=20 ;; esac # 檢查金額是否足夠購買才藝課程 if [ $coin -lt $cost ]; then dialog --title "購買失敗" --msgbox "購買餘額不足,無法購買此才藝課程。" 10 70 else coin=$((coin - cost)) power=$((power - energy)) dialog --title "購買成功" --msgbox "成功購買 $talent" 10 70 fi # 打工的選擇 if [ "$TALENT_CHOICE" -eq 4 ]; then # 如果選擇了AI大數據狗才養成班,顯示所有五個打工選項 WORK_CHOICE=$(dialog --title "打工選擇" --menu "布丁狗完成才藝課程後,您決定為他選擇一份工作:" 14 70 5 \ 1 "女僕咖啡廳" \ 2 "健身教練" \ 3 "街頭賣藝" \ 4 "爬蟲搶票黃牛" \ 5 "Python接案工程師" 3>&1 1>&2 2>&3) else # 如果選擇了其他才藝課程,只顯示前三個打工選項 WORK_CHOICE=$(dialog --title "打工選擇" --menu "布丁狗完成才藝課程後,您決定為他選擇一份工作:" 14 70 3 \ 1 "女僕咖啡廳" \ 2 "健身教練" \ 3 "街頭賣藝" 3>&1 1>&2 2>&3) fi # 顯示結局與剩餘金錢和體力 case $WORK_CHOICE in 1) if [ "$TALENT_CHOICE" -eq 1 ]; then # 女僕咖啡廳成功 MSG="布丁狗最終選擇去女僕咖啡廳打工:\n\n布丁狗在進入女僕咖啡廳後,迅速拿出他最拿手的一道料理:\n布丁狗蛋糕(布丁口味的布丁狗造型蛋糕)。\n並憑藉可愛的女僕料理魔法吸引許多客人,\n最終成為了女僕咖啡廳的招牌女僕。" else # 女僕咖啡廳失敗 MSG="布丁狗最終選擇去女僕咖啡廳打工:\n\n由於一開始缺乏打工的經驗,布丁狗打破了好幾個盤子,\n可憐的布丁狗,為了要賠償咖啡廳的損失,不得不留下來洗碗,\n不幸的是,在洗碗的過程中,布丁狗又不小心打破了更多的盤子。\n最終布丁狗不得不辭職離開。" fi ;; 2) if [ "$TALENT_CHOICE" -eq 2 ]; then # 健身教練成功 MSG="布丁狗最終選擇去健身房擔任教練:\n\n布丁狗在加入健身房後,練成了肌肉猛男,\n憑藉他的體育專業,以及可愛的外表,\n迅速吸引了大批學員前來報名他的1對1教練課,\n健身房老闆為了留住布丁這個狗才,發放了5%的股權給了布丁狗。" else # 健身教練失敗 MSG="布丁狗最終選擇去健身房擔任教練:\n\n因為布丁狗長得太可愛,再加上他傲人的身材,\n導致他在健身房經常被學員亂摸。\n布丁狗實在不勝其擾,有一次,他忍不住揍了亂摸他的學員一拳,\n最後被健身房開除。" fi ;; 3) if [ "$TALENT_CHOICE" -eq 3 ]; then # 街頭賣藝成功 MSG="布丁狗最終選擇去街頭賣藝:\n\n由於自身可愛的外表,以及經年累月的藝術訓練,\n布丁狗在街頭表演中大放異彩。\n\n某天居然被星探相中,受邀和大耳狗、庫洛米、酷企鵝等動物,\n組成三麗鷗偶像團體,成為了紅極一時的Idol!" else # 街頭賣藝失敗 MSG="布丁狗最終選擇去街頭賣藝:\n\n在做出這個決定之後,布丁狗苦苦思考了許久,\n仍然不知道應該要表演什麼才藝才好\n最終,他選擇表演他從小到大最擅長的事情:吃布丁!\n\n不幸的是,在某一天的下午,\n布丁狗的布丁被路邊的乞丐一把全部搶走,\n但布丁狗每天吃布丁早已是入不敷出,再也無法繼續進行街頭賣藝的工作。" fi ;; 4) MSG="布丁狗最終選擇利用他在${talent}學到的爬蟲技巧:\n\n布丁狗走上了利用機器人搶演唱會門票再以高價賣出的黃牛生意。\n\n一開始的確賺了不少錢,但是不到短短一個月,\n你與布丁狗的家就被警察造訪,布丁狗被重罰,最終導致家裡破產。" ;; 5) MSG="布丁狗最終選擇利用他在${talent}學到的Python技巧:\n\n由於布丁狗在養成班認真學習,並在接案的過程中累積了相當豐富的經驗,\n最終自己創業成功,成為了家喻戶曉的霸道總裁,\n人人見他都得尊稱他一句「布總」!\n\n身為布丁狗飼主的你,身價也跟著水漲船高,\n開始過著揮金如土的幸福生活~" ;; esac # 顯示結局與剩餘金錢和體力 dialog --title "結局" --msgbox "$MSG\n\nHI! $name 您辛苦栽培的布丁狗\n\n剩餘金錢:$coin 元\n剩餘體力:$power 點" 30 70 # 將值寫入臨時文件 echo "$name" > /tmp/name.txt echo "$power" > /tmp/power.txt echo "$coin" > /tmp/coin.txt # 讀取臨時文件中的值 player_name=$(cat /tmp/name.txt) power=$(cat /tmp/power.txt) coin=$(cat /tmp/coin.txt) # 資料庫 更新飼主數據 sudo mysql -uroot -p123456 -Dpudding -e "USE pudding; UPDATE player_record SET power = '$power', coin = '$coin' WHERE player_name = '$name';" # 刪除臨時文件 rm /tmp/name.txt /tmp/power.txt /tmp/coin.txt # 顯示成功消息 dialog --title "成功" --msgbox "資料已成功寫入 MariaDB 資料庫中!" 10 60 restart_game clear ``` ## 執行步驟: 複製以上代碼至 pompom.sh 更改檔案執行權限,chmod +x pompom.sh ./pompom.sh,即可開始遊玩 ## 執行結果:              遊戲結果已寫入mySQL資料庫 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up