Merge branch 'master' of https://github.com/NikolajDanger/Gwendolyn
This commit is contained in:
@ -1,8 +1,8 @@
|
||||
"""A collection of all Gwendolyn functions."""
|
||||
|
||||
__all__ = ["helloFunc", "cap", "imageFunc", "logThis", "findWikiPage", "makeFiles", "emojiToNumber", "fiarReactionTest", "deleteGame", "stopServer", "checkBalance", "giveMoney", "addMoney", "triviaCountPoints", "triviaStart", "triviaAnswer", "blackjackShuffle", "blackjackStart", "blackjackPlayerDrawHand", "blackjackContinue", "blackjackFinish", "blackjackHit", "blackjackStand", "blackjackDouble", "blackjackSplit", "parseFourInARow", "fourInARowAI", "spellFunc", "monsterFunc", "nameGen", "tavernGen", "movieFunc", "roll_dice", "parseChar", "parseRoll", "critRoll", "parseDestiny","parseHex"]
|
||||
__all__ = ["helloFunc", "cap", "imageFunc", "logThis", "findWikiPage", "makeFiles", "emojiToNumber", "fiarReactionTest", "deleteGame", "stopServer", "checkBalance", "giveMoney", "addMoney", "triviaCountPoints", "triviaStart", "triviaAnswer", "blackjackShuffle", "blackjackStart", "blackjackPlayerDrawHand", "blackjackContinue", "blackjackFinish", "blackjackHit", "blackjackStand", "blackjackDouble", "blackjackSplit", "parseFourInARow", "fourInARowAI", "spellFunc", "monsterFunc", "nameGen", "tavernGen", "movieFunc", "roll_dice", "parseChar", "parseRoll", "critRoll", "parseDestiny", "parseHex", "addToDict", "getName", "getID"]
|
||||
|
||||
from .miscFuncs import helloFunc, cap, imageFunc, logThis, findWikiPage, makeFiles, replaceMultiple, emojiToNumber, fiarReactionTest, deleteGame, stopServer
|
||||
from .miscFuncs import helloFunc, cap, imageFunc, logThis, findWikiPage, makeFiles, replaceMultiple, emojiToNumber, fiarReactionTest, deleteGame, stopServer, addToDict, getName, getID
|
||||
|
||||
from .games import checkBalance, giveMoney, addMoney, triviaCountPoints, triviaStart, triviaAnswer, blackjackShuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit, parseFourInARow, fourInARowAI, parseHex
|
||||
|
||||
|
@ -5,7 +5,7 @@ import datetime
|
||||
|
||||
from shutil import copyfile
|
||||
|
||||
from funcs import logThis, replaceMultiple
|
||||
from funcs import logThis, replaceMultiple, getName
|
||||
from . import money, blackjackDraw
|
||||
|
||||
# Shuffles the blackjack cards
|
||||
@ -132,61 +132,12 @@ def blackjackContinue(channel):
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
logThis("Testing if all are standing")
|
||||
for user in data["blackjack games"][channel]["user hands"]:
|
||||
if data["blackjack games"][channel]["user hands"][user]["hit"] == False:
|
||||
data["blackjack games"][channel]["user hands"][user]["standing"] = True
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["standing"] == False:
|
||||
allStanding = False
|
||||
|
||||
if calcHandValue(data["blackjack games"][channel]["user hands"][user]["hand"]) >= 21 or data["blackjack games"][channel]["user hands"][user]["doubled"]:
|
||||
data["blackjack games"][channel]["user hands"][user]["standing"] = True
|
||||
else:
|
||||
preAllStanding = False
|
||||
|
||||
data["blackjack games"][channel]["user hands"][user]["hit"] = False
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["split"] > 0:
|
||||
if data["blackjack games"][channel]["user hands"][user]["other hand"]["hit"] == False:
|
||||
data["blackjack games"][channel]["user hands"][user]["other hand"]["standing"] = True
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["other hand"]["standing"] == False:
|
||||
allStanding = False
|
||||
|
||||
if calcHandValue(data["blackjack games"][channel]["user hands"][user]["other hand"]["hand"]) >= 21 or data["blackjack games"][channel]["user hands"][user]["other hand"]["doubled"]:
|
||||
data["blackjack games"][channel]["user hands"][user]["other hand"]["standing"] = True
|
||||
else:
|
||||
preAllStanding = False
|
||||
|
||||
data["blackjack games"][channel]["user hands"][user]["other hand"]["hit"] = False
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["split"] > 1:
|
||||
if data["blackjack games"][channel]["user hands"][user]["third hand"]["hit"] == False:
|
||||
data["blackjack games"][channel]["user hands"][user]["third hand"]["standing"] = True
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["third hand"]["standing"] == False:
|
||||
allStanding = False
|
||||
|
||||
if calcHandValue(data["blackjack games"][channel]["user hands"][user]["third hand"]["hand"]) >= 21 or data["blackjack games"][channel]["user hands"][user]["third hand"]["doubled"]:
|
||||
data["blackjack games"][channel]["user hands"][user]["third hand"]["standing"] = True
|
||||
else:
|
||||
preAllStanding = False
|
||||
|
||||
data["blackjack games"][channel]["user hands"][user]["third hand"]["hit"] = False
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["split"] > 2:
|
||||
if data["blackjack games"][channel]["user hands"][user]["fourth hand"]["hit"] == False:
|
||||
data["blackjack games"][channel]["user hands"][user]["fourth hand"]["standing"] = True
|
||||
|
||||
if data["blackjack games"][channel]["user hands"][user]["fourth hand"]["standing"] == False:
|
||||
allStanding = False
|
||||
|
||||
if calcHandValue(data["blackjack games"][channel]["user hands"][user]["fourth hand"]["hand"]) >= 21 or data["blackjack games"][channel]["user hands"][user]["fourth hand"]["doubled"]:
|
||||
data["blackjack games"][channel]["user hands"][user]["fourth hand"]["standing"] = True
|
||||
else:
|
||||
preAllStanding = False
|
||||
|
||||
data["blackjack games"][channel]["user hands"][user]["fourth hand"]["hit"] = False
|
||||
try:
|
||||
data["blackjack games"][channel]["user hands"][user], allStanding, preAllStanding = testIfStanding(data["blackjack games"][channel]["user hands"][user],allStanding,preAllStanding,True)
|
||||
except:
|
||||
logThis("Error in testing if all are standing (error code 1331)")
|
||||
|
||||
if allStanding:
|
||||
data["blackjack games"][channel]["all standing"] = True
|
||||
@ -196,7 +147,10 @@ def blackjackContinue(channel):
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
||||
blackjackDraw.drawImage(channel)
|
||||
try:
|
||||
blackjackDraw.drawImage(channel)
|
||||
except:
|
||||
logThis("Error drawing blackjack table (error code 1340)")
|
||||
|
||||
if allStanding:
|
||||
if done == False:
|
||||
@ -212,6 +166,31 @@ def blackjackContinue(channel):
|
||||
firstRoundMessage = ""
|
||||
return "You have 2 minutes to either hit or stand with \"!blackjack hit\" or \"!blackjack stand\""+firstRoundMessage+". It's assumed you're standing if you don't make a choice.", False, done
|
||||
|
||||
def testIfStanding(hand,allStanding,preAllStanding,topLevel):
|
||||
if hand["hit"] == False:
|
||||
hand["standing"] = True
|
||||
|
||||
if hand["standing"] == False:
|
||||
allStanding = False
|
||||
|
||||
if calcHandValue(hand["hand"]) >= 21 or hand["doubled"]:
|
||||
hand["standing"] = True
|
||||
else:
|
||||
preAllStanding = False
|
||||
|
||||
hand["hit"] = False
|
||||
|
||||
if topLevel:
|
||||
if hand["split"] >= 1:
|
||||
hand["other hand"], allstanding, preAllStanding = testIfStanding(hand["other hand"],allStanding,preAllStanding,False)
|
||||
if hand["split"] >= 2:
|
||||
hand["third hand"], allstanding, preAllStanding = testIfStanding(hand["third hand"],allStanding,preAllStanding,False)
|
||||
if hand["split"] >= 3:
|
||||
hand["fourth hand"], allstanding, preAllStanding = testIfStanding(hand["fourth hand"],allStanding,preAllStanding,False)
|
||||
|
||||
return hand, allStanding, preAllStanding
|
||||
|
||||
|
||||
# When players try to hit
|
||||
def blackjackHit(channel,user,handNumber = 0):
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
@ -311,7 +290,7 @@ def blackjackDouble(channel,user,handNumber = 0):
|
||||
hand = data["blackjack games"][channel]["user hands"][user]["other hand"]
|
||||
elif handNumber == 3:
|
||||
hand = data["blackjack games"][channel]["user hands"][user]["third hand"]
|
||||
elif handNumber == 3:
|
||||
elif handNumber == 4:
|
||||
hand = data["blackjack games"][channel]["user hands"][user]["fourth hand"]
|
||||
else:
|
||||
logThis(user+" tried to double without specifying which hand")
|
||||
@ -373,7 +352,7 @@ def blackjackDouble(channel,user,handNumber = 0):
|
||||
roundDone = False
|
||||
|
||||
|
||||
return "Adding another "+str(bet)+" GwendoBucks to "+user+"'s bet and drawing another card.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"])
|
||||
return "Adding another "+str(bet)+" GwendoBucks to "+getName(user)+"'s bet and drawing another card.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"])
|
||||
else:
|
||||
logThis(user+" doesn't have enough GwendoBucks")
|
||||
return "You don't have enough GwendoBucks",""
|
||||
@ -565,7 +544,7 @@ def blackjackSplit(channel,user,handNumber = 0):
|
||||
if person["fourth hand"]["hit"] == False and person["fourth hand"]["standing"] == False:
|
||||
roundDone = False
|
||||
|
||||
return "Splitting "+user+"'s hand into 2. Adding their original bet to the second hand. You can use \"!Blackjack hit/stand/double 1\" and \"!Blackjack hit/stand/double 2\" to play the different hands.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"])
|
||||
return "Splitting "+getName(user)+"'s hand into 2. Adding their original bet to the second hand. You can use \"!Blackjack hit/stand/double 1\" and \"!Blackjack hit/stand/double 2\" to play the different hands.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"])
|
||||
else:
|
||||
logThis(user+" doesn't have enough GwendoBucks")
|
||||
return "You don't have enough GwendoBucks",""
|
||||
@ -593,7 +572,7 @@ def blackjackPlayerDrawHand(channel,user,bet):
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
logThis(user+" is trying to join the game in "+channel)
|
||||
logThis(getName(user)+" is trying to join the game in "+channel)
|
||||
|
||||
if channel in data["blackjack games"]:
|
||||
if user not in data["blackjack games"][channel]["user hands"]:
|
||||
@ -621,8 +600,8 @@ def blackjackPlayerDrawHand(channel,user,bet):
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
||||
logThis(user+" entered the game")
|
||||
return user+" entered the game"
|
||||
logThis(getName(user)+" entered the game")
|
||||
return getName(user)+" entered the game"
|
||||
else:
|
||||
logThis(user+" doesn't have enough GwendoBucks")
|
||||
return "You don't have enough GwendoBucks to place that bet"
|
||||
@ -690,14 +669,14 @@ def blackjackFinish(channel):
|
||||
|
||||
if winnings < 0:
|
||||
if winnings == -1:
|
||||
finalWinnings += user+" lost "+str(-1 * winnings)+" GwendoBuck "+reason+"\n"
|
||||
finalWinnings += getName(user)+" lost "+str(-1 * winnings)+" GwendoBuck "+reason+"\n"
|
||||
else:
|
||||
finalWinnings += user+" lost "+str(-1 * winnings)+" GwendoBucks "+reason+"\n"
|
||||
finalWinnings += getName(user)+" lost "+str(-1 * winnings)+" GwendoBucks "+reason+"\n"
|
||||
else:
|
||||
if winnings == 1:
|
||||
finalWinnings += user+" won "+str(winnings)+" GwendoBuck "+reason+"\n"
|
||||
finalWinnings += getName(user)+" won "+str(winnings)+" GwendoBuck "+reason+"\n"
|
||||
else:
|
||||
finalWinnings += user+" won "+str(winnings)+" GwendoBucks "+reason+"\n"
|
||||
finalWinnings += getName(user)+" won "+str(winnings)+" GwendoBucks "+reason+"\n"
|
||||
|
||||
money.addMoney(user,netWinnings)
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
import json
|
||||
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
from funcs import logThis, getName
|
||||
|
||||
border = 100
|
||||
placement = [0,0]
|
||||
rotation = 0
|
||||
|
||||
def drawImage(channel):
|
||||
logThis("Drawing blackjack table",channel)
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
@ -22,37 +23,44 @@ def drawImage(channel):
|
||||
dealerBusted = data["blackjack games"][channel]["dealer busted"]
|
||||
dealerBlackjack = data["blackjack games"][channel]["dealer blackjack"]
|
||||
|
||||
if data["blackjack games"][channel]["all standing"] == False:
|
||||
dealerHand = drawHand(data["blackjack games"][channel]["dealer hand"],True,False,False)
|
||||
else:
|
||||
dealerHand = drawHand(data["blackjack games"][channel]["dealer hand"],False,dealerBusted,dealerBlackjack)
|
||||
try:
|
||||
if data["blackjack games"][channel]["all standing"] == False:
|
||||
dealerHand = drawHand(data["blackjack games"][channel]["dealer hand"],True,False,False)
|
||||
else:
|
||||
dealerHand = drawHand(data["blackjack games"][channel]["dealer hand"],False,dealerBusted,dealerBlackjack)
|
||||
except:
|
||||
logThis("Error drawing dealer hand (error code 1341a)")
|
||||
|
||||
table.paste(dealerHand,(800-borderSmol,20-borderSmol),dealerHand)
|
||||
|
||||
for x in range(len(hands)):
|
||||
key, value = list(hands.items())[x]
|
||||
key = getName(key)
|
||||
logThis("drawing "+key+"'s hand")
|
||||
userHand = drawHand(value["hand"],False,value["busted"],value["blackjack"])
|
||||
|
||||
if value["split"] == 3:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),280-borderSmol),userHand)
|
||||
userOtherHand = drawHand(value["other hand"]["hand"],False,value["other hand"]["busted"],value["other hand"]["blackjack"])
|
||||
table.paste(userOtherHand,(32-borderSmol+(384*placement[x]),420-borderSmol),userOtherHand)
|
||||
userThirdHand = drawHand(value["third hand"]["hand"],False,value["third hand"]["busted"],value["third hand"]["blackjack"])
|
||||
table.paste(userThirdHand,(32-borderSmol+(384*placement[x]),560-borderSmol),userOtherHand)
|
||||
userFourthHand = drawHand(value["fourth hand"]["hand"],False,value["fourth hand"]["busted"],value["fourth hand"]["blackjack"])
|
||||
table.paste(userFourthHand,(32-borderSmol+(384*placement[x]),700-borderSmol),userOtherHand)
|
||||
elif value["split"] == 2:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),420-borderSmol),userHand)
|
||||
userOtherHand = drawHand(value["other hand"]["hand"],False,value["other hand"]["busted"],value["other hand"]["blackjack"])
|
||||
table.paste(userOtherHand,(32-borderSmol+(384*placement[x]),560-borderSmol),userOtherHand)
|
||||
userThirdHand = drawHand(value["third hand"]["hand"],False,value["third hand"]["busted"],value["third hand"]["blackjack"])
|
||||
table.paste(userThirdHand,(32-borderSmol+(384*placement[x]),700-borderSmol),userOtherHand)
|
||||
elif value["split"] == 1:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),560-borderSmol),userHand)
|
||||
userOtherHand = drawHand(value["other hand"]["hand"],False,value["other hand"]["busted"],value["other hand"]["blackjack"])
|
||||
table.paste(userOtherHand,(32-borderSmol+(384*placement[x]),700-borderSmol),userOtherHand)
|
||||
else:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),680-borderSmol),userHand)
|
||||
try:
|
||||
if value["split"] == 3:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),280-borderSmol),userHand)
|
||||
userOtherHand = drawHand(value["other hand"]["hand"],False,value["other hand"]["busted"],value["other hand"]["blackjack"])
|
||||
table.paste(userOtherHand,(32-borderSmol+(384*placement[x]),420-borderSmol),userOtherHand)
|
||||
userThirdHand = drawHand(value["third hand"]["hand"],False,value["third hand"]["busted"],value["third hand"]["blackjack"])
|
||||
table.paste(userThirdHand,(32-borderSmol+(384*placement[x]),560-borderSmol),userThirdHand)
|
||||
userFourthHand = drawHand(value["fourth hand"]["hand"],False,value["fourth hand"]["busted"],value["fourth hand"]["blackjack"])
|
||||
table.paste(userFourthHand,(32-borderSmol+(384*placement[x]),700-borderSmol),userFourthHand)
|
||||
elif value["split"] == 2:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),420-borderSmol),userHand)
|
||||
userOtherHand = drawHand(value["other hand"]["hand"],False,value["other hand"]["busted"],value["other hand"]["blackjack"])
|
||||
table.paste(userOtherHand,(32-borderSmol+(384*placement[x]),560-borderSmol),userOtherHand)
|
||||
userThirdHand = drawHand(value["third hand"]["hand"],False,value["third hand"]["busted"],value["third hand"]["blackjack"])
|
||||
table.paste(userThirdHand,(32-borderSmol+(384*placement[x]),700-borderSmol),userThirdHand)
|
||||
elif value["split"] == 1:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),560-borderSmol),userHand)
|
||||
userOtherHand = drawHand(value["other hand"]["hand"],False,value["other hand"]["busted"],value["other hand"]["blackjack"])
|
||||
table.paste(userOtherHand,(32-borderSmol+(384*placement[x]),700-borderSmol),userOtherHand)
|
||||
else:
|
||||
table.paste(userHand,(32-borderSmol+(384*placement[x]),680-borderSmol),userHand)
|
||||
except:
|
||||
logThis("Error drawing player hands (error code 1341b)")
|
||||
|
||||
textWidth = fnt.getsize(key)[0]
|
||||
if textWidth < 360:
|
||||
@ -69,11 +77,13 @@ def drawImage(channel):
|
||||
textImage.text((32+(384*placement[x])+117-int(textWidth/2)+2,1020+2),key,fill=(0,0,0), font=fntSmol)
|
||||
textImage.text((32+(384*placement[x])+117-int(textWidth/2),1015),key,fill=(255,255,255), font=fntSmol)
|
||||
|
||||
logThis("Saving table image")
|
||||
table.save("resources/games/blackjackTables/blackjackTable"+channel+".png")
|
||||
|
||||
return
|
||||
|
||||
def drawHand(hand, dealer, busted, blackjack):
|
||||
logThis("Drawing hand "+str(hand))
|
||||
fnt = ImageFont.truetype('resources/futura-bold.ttf', 200)
|
||||
fnt2 = ImageFont.truetype('resources/futura-bold.ttf', 120)
|
||||
length = len(hand)
|
||||
@ -102,6 +112,7 @@ def drawHand(hand, dealer, busted, blackjack):
|
||||
w, h = background.size
|
||||
textHeight = 290+border
|
||||
|
||||
#logThis("Drawing busted/blackjack")
|
||||
if busted:
|
||||
textWidth = fnt.getsize("BUSTED")[0]
|
||||
textImage.text((int(w/2)-int(textWidth/2)-10,textHeight+20-10),"BUSTED",fill=(0,0,0), font=fnt)
|
||||
@ -125,4 +136,5 @@ def drawHand(hand, dealer, busted, blackjack):
|
||||
textImage.text((int(w/2)-int(textWidth/2)+3,textHeight+3),"BLACKJACK",fill=(255,255,255), font=fnt2)
|
||||
textImage.text((int(w/2)-int(textWidth/2),textHeight),"BLACKJACK",fill=(155,123,0), font=fnt2)
|
||||
|
||||
#logThis("Returning resized image")
|
||||
return background.resize((int(w/3.5),int(h/3.5)),resample=Image.BILINEAR)
|
||||
|
@ -4,7 +4,7 @@ import copy
|
||||
import math
|
||||
|
||||
from . import fourInARowDraw
|
||||
from funcs import logThis
|
||||
from funcs import logThis, getName, getID
|
||||
|
||||
AIScores = {
|
||||
"middle": 3,
|
||||
@ -26,48 +26,52 @@ def fourInARowStart(channel, user, opponent):
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if user.lower() != opponent.lower():
|
||||
if channel not in data["4 in a row games"]:
|
||||
if channel not in data["4 in a row games"]:
|
||||
|
||||
if opponent in ["1","2","3","4","5"]:
|
||||
difficulty = int(opponent)
|
||||
diffText = " with difficulty "+opponent
|
||||
opponent = "Gwendolyn"
|
||||
elif opponent.lower() == "gwendolyn":
|
||||
difficulty = 3
|
||||
diffText = " with difficulty 3"
|
||||
opponent = "Gwendolyn"
|
||||
else:
|
||||
try:
|
||||
int(opponent)
|
||||
return "That difficulty doesn't exist", False, False, False, False
|
||||
except:
|
||||
# Opponent is another player
|
||||
if opponent in ["1","2","3","4","5"]:
|
||||
difficulty = int(opponent)
|
||||
diffText = " with difficulty "+opponent
|
||||
opponent = "Gwendolyn"
|
||||
elif opponent.lower() == "gwendolyn":
|
||||
difficulty = 3
|
||||
diffText = " with difficulty 3"
|
||||
opponent = "Gwendolyn"
|
||||
else:
|
||||
try:
|
||||
int(opponent)
|
||||
return "That difficulty doesn't exist", False, False, False, False
|
||||
except:
|
||||
# Opponent is another player
|
||||
opponent = getID(opponent)
|
||||
if opponent != None:
|
||||
difficulty = 5
|
||||
diffText = ""
|
||||
else:
|
||||
return "I can't find that user", False, False, False, False
|
||||
|
||||
if user == opponent:
|
||||
return "You can't play against yourself", False, False, False, False
|
||||
|
||||
board = [ [ 0 for i in range(columnCount) ] for j in range(rowCount) ]
|
||||
players = [user,opponent]
|
||||
random.shuffle(players)
|
||||
board = [ [ 0 for i in range(columnCount) ] for j in range(rowCount) ]
|
||||
players = [user,opponent]
|
||||
random.shuffle(players)
|
||||
|
||||
data["4 in a row games"][channel] = {"board": board,"winner":0,"win direction":"",
|
||||
"win coordinates":[0,0],"players":players,"turn":0,"difficulty":difficulty}
|
||||
data["4 in a row games"][channel] = {"board": board,"winner":0,"win direction":"",
|
||||
"win coordinates":[0,0],"players":players,"turn":0,"difficulty":difficulty}
|
||||
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
||||
fourInARowDraw.drawImage(channel)
|
||||
fourInARowDraw.drawImage(channel)
|
||||
|
||||
gwendoTurn = False
|
||||
gwendoTurn = False
|
||||
|
||||
if players[0] == "Gwendolyn":
|
||||
gwendoTurn = True
|
||||
if players[0] == "Gwendolyn":
|
||||
gwendoTurn = True
|
||||
|
||||
return "Started game against "+opponent+diffText+". It's "+players[0]+"'s turn", True, False, False, gwendoTurn
|
||||
else:
|
||||
return "There's already a 4 in a row game going on in this channel", False, False, False, False
|
||||
return "Started game against "+getName(opponent)+diffText+". It's "+getName(players[0])+"'s turn", True, False, False, gwendoTurn
|
||||
else:
|
||||
return "You can't play against yourself", False, False, False, False
|
||||
return "There's already a 4 in a row game going on in this channel", False, False, False, False
|
||||
|
||||
# Places a piece at the lowest available point in a specific column
|
||||
def placePiece(channel : str,player : int,column : int):
|
||||
@ -97,7 +101,7 @@ def placePiece(channel : str,player : int,column : int):
|
||||
data["4 in a row games"][channel]["win direction"] = winDirection
|
||||
data["4 in a row games"][channel]["win coordinates"] = winCoordinates
|
||||
|
||||
message = data["4 in a row games"][channel]["players"][won-1]+" won."
|
||||
message = getName(data["4 in a row games"][channel]["players"][won-1])+" won."
|
||||
winAmount = int(data["4 in a row games"][channel]["difficulty"])^2+5
|
||||
if data["4 in a row games"][channel]["players"][won-1] != "Gwendolyn":
|
||||
message += " Adding "+str(winAmount)+" GwendoBucks to their account."
|
||||
@ -106,7 +110,7 @@ def placePiece(channel : str,player : int,column : int):
|
||||
message = "It's a draw!"
|
||||
else:
|
||||
gameWon = False
|
||||
message = data["4 in a row games"][channel]["players"][player-1]+" placed a piece in column "+str(column+1)+". It's now "+data["4 in a row games"][channel]["players"][turn]+"'s turn."
|
||||
message = getName(data["4 in a row games"][channel]["players"][player-1])+" placed a piece in column "+str(column+1)+". It's now "+getName(data["4 in a row games"][channel]["players"][turn])+"'s turn."
|
||||
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
@ -2,7 +2,7 @@ import json
|
||||
import math
|
||||
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
from funcs import logThis
|
||||
from funcs import logThis, getName
|
||||
|
||||
# Draws the whole thing
|
||||
def drawImage(channel):
|
||||
@ -32,6 +32,16 @@ def drawImage(channel):
|
||||
pieceStartx = (border+gridBorder)+math.floor(placeGridSize[0]/2)-math.floor(placeSize/2)
|
||||
pieceStarty = (border+gridBorder)+math.floor(placeGridSize[1]/2)-math.floor(placeSize/2)
|
||||
|
||||
if data["4 in a row games"][channel]["players"][0] == "Gwendolyn":
|
||||
player1 = "Gwendolyn"
|
||||
else:
|
||||
player1 = getName(data["4 in a row games"][channel]["players"][0])
|
||||
|
||||
if data["4 in a row games"][channel]["players"][1] == "Gwendolyn":
|
||||
player2 = "Gwendolyn"
|
||||
else:
|
||||
player2 = getName(data["4 in a row games"][channel]["players"][1])
|
||||
|
||||
|
||||
background = Image.new("RGB", (w,h+bottomBorder),backgroundColor)
|
||||
d = ImageDraw.Draw(background,"RGBA")
|
||||
@ -124,11 +134,11 @@ def drawImage(channel):
|
||||
|
||||
exampleHeight = h - border + int((bottomBorder+border)/2) - int(exampleCircles/2)
|
||||
d.ellipse([(border,exampleHeight),(border+exampleCircles),(exampleHeight+exampleCircles)],fill=(255,255,0),outline=(0,0,0),width=3)
|
||||
d.text((border+exampleCircles+textPadding,exampleHeight),data["4 in a row games"][channel]["players"][0],font=fnt,fill=(0,0,0))
|
||||
d.text((border+exampleCircles+textPadding,exampleHeight),player1,font=fnt,fill=(0,0,0))
|
||||
|
||||
textWidth = fnt.getsize(data["4 in a row games"][channel]["players"][1])[0]
|
||||
textWidth = fnt.getsize(player2)[0]
|
||||
d.ellipse([(w-border-exampleCircles-textWidth-textPadding,exampleHeight),(w-border-textWidth-textPadding),(exampleHeight+exampleCircles)],fill=(255,0,0),outline=(0,0,0),width=3)
|
||||
d.text((w-border-textWidth,exampleHeight),data["4 in a row games"][channel]["players"][1],font=fnt,fill=(0,0,0))
|
||||
d.text((w-border-textWidth,exampleHeight),player2,font=fnt,fill=(0,0,0))
|
||||
|
||||
|
||||
background.save("resources/games/4InARowBoards/board"+channel+".png")
|
||||
|
@ -1,47 +1,56 @@
|
||||
import json
|
||||
|
||||
from funcs import logThis
|
||||
from funcs import logThis, getID, getName
|
||||
|
||||
# Returns the account balance for a user
|
||||
def checkBalance(user):
|
||||
user = user.lower()
|
||||
logThis("checking "+user+"'s account balance")
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
with open("resources/users.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if user in data["users"]:
|
||||
return data["users"][user]
|
||||
if user in data:
|
||||
return data[user]["money"]
|
||||
else: return 0
|
||||
|
||||
# Adds money to the account of a user
|
||||
def addMoney(user,amount):
|
||||
user = user.lower()
|
||||
logThis("adding "+str(amount)+" to "+user+"'s account")
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
with open("resources/users.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if user in data["users"]:
|
||||
points = data["users"][user]
|
||||
data["users"][user] = points + amount
|
||||
if user in data:
|
||||
points = data[user]["money"]
|
||||
data[user]["money"] = points + amount
|
||||
else:
|
||||
data["users"][user] = amount
|
||||
logThis("Error adding money")
|
||||
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
with open("resources/users.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
||||
# Transfers money from one user to another
|
||||
def giveMoney(user,targetUser,amount):
|
||||
with open("resources/games/games.json", "r") as f:
|
||||
with open("resources/users.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if user in data["users"]:
|
||||
if data["users"][user] >= amount:
|
||||
addMoney(user,-1 * amount)
|
||||
addMoney(targetUser,amount)
|
||||
return "Transferred "+str(amount)+" GwendoBucks to "+targetUser
|
||||
targetUser = getID(targetUser)
|
||||
|
||||
if amount > 0:
|
||||
if targetUser.startswith("#"):
|
||||
if user in data:
|
||||
if data[user]["money"] >= amount:
|
||||
addMoney(user,-1 * amount)
|
||||
addMoney(targetUser,amount)
|
||||
return "Transferred "+str(amount)+" GwendoBucks to "+getName(targetUser)
|
||||
else:
|
||||
logThis("They didn't have enough GwendoBucks (error code 1223b)")
|
||||
return "You don't have that many GwendoBucks (error code 1223b)"
|
||||
else:
|
||||
logThis("They didn't have enough GwendoBucks (error code 1223a)")
|
||||
return "You don't have that many GwendoBucks (error code 1223a)"
|
||||
else:
|
||||
logThis("They didn't have enough GwendoBucks (error code 1223b)")
|
||||
return "You don't have that many GwendoBucks (error code 1223b)"
|
||||
logThis("They weren't in the system")
|
||||
return "The target doesn't exist"
|
||||
else:
|
||||
logThis("They didn't have enough GwendoBucks (error code 1223a)")
|
||||
return "You don't have that many GwendoBucks (error code 1223a)"
|
||||
logThis("They tried to steal")
|
||||
return "Yeah, no. You can't do that"
|
||||
|
@ -180,6 +180,17 @@ def makeFiles():
|
||||
json.dump(data,f,indent = 4)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
# Creates users.json if it doesn't exist
|
||||
try:
|
||||
f = open("resources/users.json","r")
|
||||
except:
|
||||
logThis("users.json didn't exist. Making it now.")
|
||||
data = {}
|
||||
with open("resources/users.json","w") as f:
|
||||
json.dump(data,f,indent = 4)
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
# Creates destinyPoints.txt if it doesn't exist
|
||||
try:
|
||||
@ -291,11 +302,9 @@ def fiarReactionTest(channel,message,user):
|
||||
if message.id == oldImage:
|
||||
logThis("They reacted to the fourinarow game")
|
||||
turn = data["4 in a row games"][str(channel)]["turn"]
|
||||
if user.lower() == data["4 in a row games"][str(channel)]["players"][turn].lower():
|
||||
if user != data["4 in a row games"][str(channel)]["players"][turn]:
|
||||
data["4 in a row games"][str(channel)]["players"][turn] = user
|
||||
with open("resources/games/games.json","w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
print(user)
|
||||
print(data["4 in a row games"][str(channel)]["players"][turn])
|
||||
if user == data["4 in a row games"][str(channel)]["players"][turn]:
|
||||
return True, turn+1
|
||||
else:
|
||||
logThis("It wasn't their turn")
|
||||
@ -321,3 +330,61 @@ def deleteGame(gameType,channel):
|
||||
del data[gameType][channel]
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
||||
def addToDict(userID,userName):
|
||||
with open("resources/users.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if userID in data:
|
||||
if data[userID]["user name"] != userName:
|
||||
logThis("changing name for "+userName)
|
||||
data[userID]["user name"] = userName
|
||||
with open("resources/users.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
else:
|
||||
logThis("creating "+userName+" in the system")
|
||||
|
||||
with open("resources/games/games.json","r") as f:
|
||||
games = json.load(f)
|
||||
|
||||
if userName.lower() in games["users"]:
|
||||
money = games["users"][userName.lower()]
|
||||
del games["users"][userName.lower()]
|
||||
with open("resources/games/games.json", "w") as f:
|
||||
json.dump(games,f,indent=4)
|
||||
else:
|
||||
money = 0
|
||||
|
||||
data[userID] = {"user name" : userName, "money" : money}
|
||||
with open("resources/users.json", "w") as f:
|
||||
json.dump(data,f,indent=4)
|
||||
|
||||
def getName(userID):
|
||||
try:
|
||||
with open("resources/users.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
if userID in data:
|
||||
logThis("yeet")
|
||||
return data[userID]["user name"]
|
||||
else:
|
||||
logThis("Couldn't find user")
|
||||
return userID
|
||||
except:
|
||||
logThis("Error getting name")
|
||||
|
||||
def getID(userName):
|
||||
try:
|
||||
with open("resources/users.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
userID = None
|
||||
|
||||
for key, value in data.items():
|
||||
if userName.lower() == value["user name"].lower():
|
||||
userID = key
|
||||
break
|
||||
|
||||
return userID
|
||||
except:
|
||||
logThis("Error getting ID")
|
@ -1,10 +1,10 @@
|
||||
import json
|
||||
import string
|
||||
|
||||
from funcs import logThis
|
||||
from funcs import logThis, getName
|
||||
|
||||
def getName(user : str):
|
||||
logThis("Getting name for "+user+"'s character")
|
||||
def getCharName(user : str):
|
||||
logThis("Getting name for "+getName(user)+"'s character")
|
||||
with open("resources/starWars/swcharacters.json", "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
@ -12,8 +12,8 @@ def getName(user : str):
|
||||
logThis("Name is "+data[user]["Name"])
|
||||
return data[user]["Name"]
|
||||
else:
|
||||
logThis("Just using "+user)
|
||||
return user
|
||||
logThis("Just using "+getName(user))
|
||||
return getName(user)
|
||||
|
||||
def setUpDict(cmd : dict):
|
||||
logThis("Setting up a dictionary in a nice way")
|
||||
@ -251,7 +251,7 @@ def charData(user : str,cmd : str):
|
||||
if cmd == "":
|
||||
break
|
||||
|
||||
logThis("Looking for "+user+"'s character")
|
||||
logThis("Looking for "+getName(user)+"'s character")
|
||||
if user in data:
|
||||
logThis("Foundt it! Looking for "+key+" in the data")
|
||||
if key in data[user]:
|
||||
@ -498,27 +498,29 @@ def parseChar(user : str, cmd : str):
|
||||
if cmd == "":
|
||||
break
|
||||
|
||||
|
||||
if cmd == "":
|
||||
if user in data:
|
||||
text1, text2 = characterSheet(data[user])
|
||||
return text1, replaceWithSpaces(text2)
|
||||
else:
|
||||
logThis("Makin' a character for "+user)
|
||||
logThis("Makin' a character for "+getName(user))
|
||||
with open("resources/starWars/swtemplates.json", "r") as f:
|
||||
templates = json.load(f)
|
||||
newChar = templates["Character"]
|
||||
data[user] = newChar
|
||||
with open("resources/starWars/swcharacters.json", "w") as f:
|
||||
json.dump(data,f,indent = 4)
|
||||
return "", "Character for " + user + " created"
|
||||
return "", "Character for " + getName(user) + " created"
|
||||
else:
|
||||
if cmd == "Purge":
|
||||
logThis("Deleting "+user+"'s character")
|
||||
logThis("Deleting "+getName(user)+"'s character")
|
||||
del data[user]
|
||||
with open("resources/starWars/swcharacters.json", "w") as f:
|
||||
json.dump(data,f,indent = 4)
|
||||
return "", "Character for " + user + " deleted"
|
||||
return "", replaceWithSpaces(str(charData(user,cmd)))
|
||||
return "", "Character for " + getName(user) + " deleted"
|
||||
else:
|
||||
return "", replaceWithSpaces(str(charData(user,cmd)))
|
||||
|
||||
def lightsaberChar(user : str):
|
||||
with open("resources/starWars/swcharacters.json", "r") as f:
|
||||
|
@ -367,7 +367,7 @@ def parseRoll(user : str,cmd : str = ""):
|
||||
|
||||
simplified = simplify(rollResults)
|
||||
|
||||
name = swchar.getName(user)
|
||||
name = swchar.getCharName(user)
|
||||
|
||||
logThis("Returns results and simplified results")
|
||||
|
||||
|
Reference in New Issue
Block a user