불화 게임 만들기 파트 2
그래서 오늘 우리는 디스코드 봇 게임 경제 게임을 시작하지만 저는 그것을 "경제 게임"이라고 부르기로 선택합니다.
이제 중요한 라이브러리를 가져와 시작합니다.
from gevent import monkey
import os
import random
import json
import discord
from automate import automate
from discord.ext import commands
intents = discord.Intents.all()
intents.members = True
Json 파일 열기 이 JSON 파일은 은행 계좌 정보를 위한 것입니다.
# open json file
f = open('bank.json')
봇 접두사 이것은 ($balance to create an account)와 같은 봇 구문에 도움이 됩니다.
client = commands.Bot(command_prefix="$", intents=intents)
게임 서버 시작
@client.event
async def on_ready():
print('NFT Monopoly Ready!')
계정 생성 Discord 사용자가 개인 은행 계좌를 생성하려면 코드가 필요합니다.
# Account function
async def open_account(user):
users = await get_bank_data()
if str(user.id) in users:
return False
else:
users[str(user.id)] = {}
users[str(user.id)]["NFT Wallet"] = 0
users[str(user.id)]["Bank"] = 0
with open("bank.json", "w") as f:
json.dump(users, f)
return True
은행 세부 정보 가져오기 은행 업데이트를 가져오는 코드입니다.
async def get_bank_data():
with open("bank.json", "r") as f:
users = json.load(f)
return users
은행 세부 정보 업데이트 이 코드는 Discord 플레이어가 은행 세부 정보를 업데이트하는 데 도움이 됩니다.
async def update_bank(user, change=0, mode="NFT Wallet"):
users = await get_bank_data()
change = int(change)
users[str(user.id)][mode] += change
with open("bank.json", "w") as f:
json.dump(users, f)
balance = [users[str(user.id)]["NFT Wallet"], users[str(user.id)]["Bank"]]
return balance
게임 균형 구문 - $balance
# Game balance
@client.command()
async def balance(ctx):
await open_account(ctx.author)
user = ctx.author
users = await get_bank_data()
wallet_amount = users[str(user.id)]["NFT Wallet"]
bank_amount = users[str(user.id)]["Bank"]
em = discord.Embed(title=f"{ctx.author.name}'s balance",
color=discord.Color.red())
em.add_field(name="NFT Wallet Balance", value=wallet_amount)
em.add_field(name="Bank Balance", value=bank_amount)
await ctx.send(embed=em)
인출 코드 구문 - $withdraw
# Withdraw coin
@client.command()
async def withdraw(ctx, amount=None):
await open_account(ctx.author)
if amount == None:
await ctx.send("Please enter the amount")
return
balance = await update_bank(ctx.author)
amount = int(amount)
if amount > balance[1]:
await ctx.send("You don't have that much money!")
return
if amount < 0:
await ctx.send("Amount must be positive!")
return
await update_bank(ctx.author, amount)
await update_bank(ctx.author, -1 * amount, "Bank")
await ctx.send(f"You withdrew {amount} coins!")
입금 코드 구문 - $deposit
# Deposit coin
@client.command()
async def deposit(ctx, amount=None):
await open_account(ctx.author)
if amount == None:
await ctx.send("Please enter the amount")
return
balance = await update_bank(ctx.author)
amount = int(amount)
if amount > balance[0]:
await ctx.send("You don't have that much money!")
return
if amount < 0:
await ctx.send("Amount must be positive!")
return
await update_bank(ctx.author, -1 * amount)
await update_bank(ctx.author, amount, "Bank")
await ctx.send(f"You deposited {amount} coins!")
다른 플레이어에게 코인 보내기 코드 구문 - $send
# Send coin
@client.command()
async def send(ctx, member: discord.Member, amount=None):
await open_account(ctx.author)
await open_account(member)
if amount == None:
await ctx.send("Please enter the amount")
return
balance = await update_bank(ctx.author)
if amount == "all":
amount = balance[0]
amount = int(amount)
if amount > balance[1]:
await ctx.send("You don't have that much money!")
return
if amount < 0:
await ctx.send("Amount must be positive!")
return
await update_bank(ctx.author, -1 * amount, "Bank")
await update_bank(member, amount, "Bank")
await ctx.send(f"You gave {member} {amount} coins!")
플레이어가 일하고 돈을 벌기 위한 코드 구문 - $work
# Work
@client.command()
async def work(ctx):
await open_account(ctx.author)
user = ctx.author
users = await get_bank_data()
earnings = random.randrange(100)
work = 'Scientist', 'Bouncer', 'a Designer', 'a Musician', 'a' 'an Analyst'
career = random.choice(work)
await ctx.send(f"You Worked as {career} and earned {earnings} coins!!!")
users[str(user.id)]["NFT Wallet"] += earnings
with open("bank.json", "w") as f:
json.dump(users, f)
플레이어가 코인을 위해 도박을 하는 코드 구문 - $slots
@client.command()
async def slots(ctx, amount=None):
await open_account(ctx.author)
if amount == None:
await ctx.send("Please enter the amount")
return
balance = await update_bank(ctx.author)
amount = int(amount)
if amount > balance[0]:
await ctx.send("You don't have that much money!")
return
if amount < 0:
await ctx.send("Amount must be positive!")
return
final = []
for i in range(3):
a = random.choice(["X", "0", "Q"])
final.append(a)
await ctx.send(str(final))
if final[0] == final[1] or final[0] == final[2] or final[2] == final[1]:
await update_bank(ctx.author, 2 * amount)
await ctx.send("You won!!!")
else:
await update_bank(ctx.author, -1 * amount)
await ctx.send("You lost!!!")
3부에서는 봇 게임 상점, 쇼핑백, 구매 및 판매를 구축합니다.
Reference
이 문제에 관하여(불화 게임 만들기 파트 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/designegycreatives/building-discord-game-part-2-164e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)