iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0

今天我要來寫骰子機器人2.0,骰子遊戲除了猜數字還可以數字單雙、豹子、總和等等,所以今天我打算將單雙跟豹子加入到我的程式中

1.構思

1.大小跟前一天的一樣那單雙就可以用一樣的概念來寫
2.豹子是指3個骰子點數相同所以要在昨天的程式上多加一個骰子
3.總和就是玩家輸入他的答案去跟三個骰子點數相加想比較就可以了
4.其他東西就跟昨天的一模一樣

2.程式碼

import random
import discord
from discord.ext import commands


intents = discord.Intents.all()

bot = commands.Bot(command_prefix=‘!’,intents=intents)

def roll_dice():
    return random.randint(1, 6)

@bot.command()
async def dice(ctx, bet_type: str, bet_value: str):
    if bet_type not in ['豹子','總和','單雙','大小'] :
        await ctx.send('無效的猜測,請輸入 "豹子"、 "總和"、"單雙"或"大小"。')
        return
    if bet_type in ['總和'] not in ['3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18']:
        await ctx.send('無效的猜測,請輸入"總和"及3~18其中一數字。')
        return
    if bet_type in ['豹子'] not in ['1','2','3','4','5','6']:
        await ctx.send('無效的猜測,請輸入"豹子"及1~6其中一數字。')
        return
    if bet_type in ['單雙'] not in ['單','雙']:
        await ctx.send('無效的猜測,請輸入"單雙"及"單"或"雙"。')
        return
    if bet_type in ['大小'] not in ['大','小']:
        await ctx.send('無效的猜測,請輸入"大小"及"大"或"小"。')
        return
    
    

    dice_roll = [roll_dice(), roll_dice(), roll_dice()]
    total = sum(dice_roll)
    await ctx.send(f"骰子點數為:{dice_roll},總點數為:{total}")

    if dice_roll[0] == dice_roll[1] == dice_roll[2]:
        if bet_type == '豹子' and bet_value == str(dice_roll[0]):
            await ctx.send("恭喜,你贏了!")
        else:
            await ctx.send("很遺憾,你輸了。")
    else:
        if bet_type == '總和' and bet_value == str(total):
            await ctx.send("恭喜,你贏了!")
        elif bet_type == '大小':
            if total >= 4 and total <= 10 and bet_value == '小':
                await ctx.send("恭喜,你贏了!")
            elif total >= 11 and total <= 17 and bet_value == '大':
                await ctx.send("恭喜,你贏了!")
            else:
                await ctx.send("很遺憾,你輸了。")
        elif bet_type == '單雙':
            if total % 2 == 0 and bet_value == '雙':
                await ctx.send("恭喜,你贏了!")
            elif total % 2 == 1 and bet_value == '單':
                await ctx.send("恭喜,你贏了!")
            else:
                await ctx.send("很遺憾,你輸了。")
        else:
            await ctx.send("很遺憾,你輸了。")

bot.run('token')

3.程式碼說明

  1. 這隻程式判斷輸入跟昨天的不太一樣,昨天的輸入是“!猜大小 大 ”但今天的是 “!dice 總和 1 ”比昨天多了一個輸入,所以在判斷上除了要判斷第一個有沒有輸入對還要判斷第一個正確後第二個有沒有正確
  2. 豹子的判斷就是看三個骰子有沒有相等且玩家輸入的有沒有跟他們相等
  3. 總和是判斷三個骰子的總了有沒有跟玩家輸入的答案相同
  4. 大小跟昨天相同只是小變成大於等於4小於等於10,大變成大於等於17小於等於11
  5. 單雙是把數字總和除以2取餘數去判斷餘數是單還是雙

4.執行結果

https://ithelp.ithome.com.tw/upload/images/20231002/20161116NHyY7Vpkz2.png

https://ithelp.ithome.com.tw/upload/images/20231002/20161116i0HTu3k5rK.png

https://ithelp.ithome.com.tw/upload/images/20231002/2016111672PdvboAxS.png

https://ithelp.ithome.com.tw/upload/images/20231002/201611161PQCG3YLKo.png

豹子我一直沒有成功(玩到想哭
所以先不放執行結果


上一篇
[Day20]骰子機器人
下一篇
[Day22] 骰寶(上)
系列文
使用discord.py開發自己的機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言