From 94c6289cc1b220da59e7e8fc01375599fcd609ea Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Tue, 28 Jul 2020 22:10:23 +0200 Subject: [PATCH] :construction: Started on 4 in a row game --- .gitignore | 3 +- Gwendolyn.py | 14 ++++++-- funcs/__init__.py | 2 +- funcs/games/__init__.py | 3 +- funcs/games/blackjack.py | 2 +- funcs/games/blackjackDraw.py | 2 +- funcs/games/draw4InARow.py | 61 ++++++++++++++++++++++++++++++++ funcs/games/fourInARow.py | 65 +++++++++++++++++++++++++++++++++++ funcs/games/test.png | Bin 0 -> 77144 bytes funcs/gwendolynFuncs.py | 6 ++-- 10 files changed, 148 insertions(+), 10 deletions(-) create mode 100644 funcs/games/draw4InARow.py create mode 100644 funcs/games/fourInARow.py create mode 100644 funcs/games/test.png diff --git a/.gitignore b/.gitignore index efdaf6b..2e92a77 100644 --- a/.gitignore +++ b/.gitignore @@ -154,5 +154,6 @@ resources/swcharacters.json resources/games/games.json resources/games/blackjackCards.txt resources/destinyPoints.txt -resources/games/tables/ +resources/games/blackjackTables/ +resources/games/4InARowBoards/ gwendolynTest.py diff --git a/Gwendolyn.py b/Gwendolyn.py index e462fa3..b2da851 100644 --- a/Gwendolyn.py +++ b/Gwendolyn.py @@ -63,6 +63,7 @@ async def on_message(message): data["trivia questions"] = {} data["blackjack games"] = {} + data["4 in a row games"] = {} with open("resources/games/games.json","w") as f: json.dump(data,f,indent=4) @@ -326,7 +327,7 @@ async def on_message(message): new_message = "Blackjack game started. Use \"!blackjack bet [amount]\" to enter the game within the next 30 seconds." await message.channel.send(new_message) - old_image = await message.channel.send(file = discord.File("resources/games/tables/blackjackTable"+str(message.channel)+".png")) + old_image = await message.channel.send(file = discord.File("resources/games/blackjackTables/blackjackTable"+str(message.channel)+".png")) await asyncio.sleep(30) @@ -344,7 +345,7 @@ async def on_message(message): await message.channel.send(new_message) if gamedone == False: await old_image.delete() - old_image = await message.channel.send(file = discord.File("resources/games/tables/blackjackTable"+str(message.channel)+".png")) + old_image = await message.channel.send(file = discord.File("resources/games/blackjackTables/blackjackTable"+str(message.channel)+".png")) if allStanding: await asyncio.sleep(5) else: @@ -412,6 +413,15 @@ async def on_message(message): else: await message.channel.send("I didn't quite understand that") + + elif message.content.lower().startswith("!fourinarow"): + funcs.logThis(message.author.display_name+" ran \""+message.content+"\"") + response, showImage = funcs.decipherCommand(message.content.lower().replace("!fourinarow",""),str(message.channel),message.author.display_name) + await message.channel.send(response) + funcs.logThis(response) + if showImage: + await message.channel.send(file = discord.File("resources/games/4InARowBoards/board"+str(message.channel)+".png")) + # Is a bit sassy sometimes meanWords = ["stupid", "bitch", "fuck", "dumb", "idiot"] diff --git a/funcs/__init__.py b/funcs/__init__.py index 5d55d8a..e6d427b 100644 --- a/funcs/__init__.py +++ b/funcs/__init__.py @@ -6,6 +6,6 @@ from .lookup import spellFunc, monsterFunc from .other import nameGen, tavernGen, movieFunc -from .games import triviaStart, triviaOtherThing, triviaCountPoints, checkBalance, addMoney, giveMoney, shuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackStand, blackjackHit,blackjackDouble,blackjackSplit +from .games import triviaStart, triviaOtherThing, triviaCountPoints, checkBalance, addMoney, giveMoney, shuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackStand, blackjackHit,blackjackDouble,blackjackSplit, decipherCommand from .roll import roll_dice \ No newline at end of file diff --git a/funcs/games/__init__.py b/funcs/games/__init__.py index 1df43f7..399e3bf 100644 --- a/funcs/games/__init__.py +++ b/funcs/games/__init__.py @@ -1,3 +1,4 @@ from .money import checkBalance, giveMoney, addMoney from .trivia import triviaCountPoints, triviaStart, triviaOtherThing -from .blackjack import shuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit \ No newline at end of file +from .blackjack import shuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit +from .fourInARow import decipherCommand \ No newline at end of file diff --git a/funcs/games/blackjack.py b/funcs/games/blackjack.py index d8627f3..804f3f1 100644 --- a/funcs/games/blackjack.py +++ b/funcs/games/blackjack.py @@ -449,7 +449,7 @@ def blackjackStart(channel:str): with open("resources/games/games.json", "w") as f: json.dump(data,f,indent=4) - copyfile("resources/games/blackjackTable.png","resources/games/tables/blackjackTable"+channel+".png") + copyfile("resources/games/blackjackTable.png","resources/games/blackjackTables/blackjackTable"+channel+".png") return "started" else: diff --git a/funcs/games/blackjackDraw.py b/funcs/games/blackjackDraw.py index 598d1a0..639e97a 100644 --- a/funcs/games/blackjackDraw.py +++ b/funcs/games/blackjackDraw.py @@ -41,7 +41,7 @@ def drawImage(channel): textImage.text((32+(384*placement[x])+117-int(textWidth/2)+3,1010+3),key,fill=(0,0,0), font=fnt) textImage.text((32+(384*placement[x])+117-int(textWidth/2),1005),key,fill=(255,255,255), font=fnt) - table.save("resources/games/tables/blackjackTable"+channel+".png") + table.save("resources/games/blackjackTables/blackjackTable"+channel+".png") return diff --git a/funcs/games/draw4InARow.py b/funcs/games/draw4InARow.py new file mode 100644 index 0000000..a70ff78 --- /dev/null +++ b/funcs/games/draw4InARow.py @@ -0,0 +1,61 @@ +import json +import math + +from PIL import Image, ImageDraw, ImageFont +from funcs import logThis + +def drawImage(channel): + logThis("Drawing four in a row board") + with open("resources/games/games.json", "r") as f: + data = json.load(f) + + board = data["4 in a row games"][channel]["board"] + + border = 40 + gridBorder = 40 + cornerSize = 100 + outlineSize = 10 + w, h = 2800,2000 + backgroundColor = (128,128,128,255) + boardColor = (0,0,170) + + placeSize = 270 + boardSize = [w-(2*(border+gridBorder)),h-(2*(border+gridBorder))] + placeGridSize = [math.floor(boardSize[0]/7),math.floor(boardSize[1]/6)] + pieceStartx = (border+gridBorder)+math.floor(placeGridSize[0]/2)-math.floor(placeSize/2) + pieceStarty = (border+gridBorder)+math.floor(placeGridSize[1]/2)-math.floor(placeSize/2) + + + background = Image.new("RGBA", (w,h),backgroundColor) + d = ImageDraw.Draw(background) + + d.ellipse([(border,border),(border+cornerSize,border+cornerSize)],fill=boardColor,outline=(0,0,0),width=outlineSize) + d.ellipse([(w-(border+cornerSize),h-(border+cornerSize)),(w-border,h-border)],fill=boardColor,outline=(0,0,0),width=outlineSize) + d.ellipse([(border,h-(border+cornerSize)),(border+cornerSize,h-border)],fill=boardColor,outline=(0,0,0),width=outlineSize) + d.ellipse([(w-(border+cornerSize),border),(w-border,border+cornerSize)],fill=boardColor,outline=(0,0,0),width=outlineSize) + + d.rectangle([(border+math.floor(cornerSize/2),border),(w-(border+math.floor(cornerSize/2)),h-border)],fill=boardColor,outline=(0,0,0),width=outlineSize) + d.rectangle([(border,border+math.floor(cornerSize/2)),(w-border,h-(border+math.floor(cornerSize/2)))],fill=boardColor,outline=(0,0,0),width=outlineSize) + d.rectangle([(border+math.floor(cornerSize/2),border+math.floor(cornerSize/2)),(w-(border+math.floor(cornerSize/2)),h-(border+math.floor(cornerSize/2)))],fill=boardColor) + d.ellipse([(border+outlineSize,border+outlineSize),(border+cornerSize-outlineSize,border+cornerSize-outlineSize)],fill=boardColor) + d.ellipse([(w-(border+cornerSize)+outlineSize,h-(border+cornerSize)+outlineSize),(w-border-outlineSize,h-border-outlineSize)],fill=boardColor) + d.ellipse([(border+outlineSize,h-(border+cornerSize)+outlineSize),(border+cornerSize-outlineSize,h-border-outlineSize)],fill=boardColor) + d.ellipse([(w-(border+cornerSize)+outlineSize,border+outlineSize),(w-border-outlineSize,border+cornerSize-outlineSize)],fill=boardColor) + + for line in range(len(board)): + for place in range(len(board[line])): + piece = board[line][place] + + if piece == 1: + pieceColor = (255,255,0) + elif piece == 2: + pieceColor = (200,0,0) + else: + pieceColor = backgroundColor + + startx = pieceStartx + placeGridSize[0]*place + starty = pieceStarty + placeGridSize[1]*line + + d.ellipse([(startx,starty),(startx+placeSize,starty+placeSize)],fill=pieceColor,outline=(0,0,0),width=outlineSize) + + background.save("resources/games/4InARowBoards/board"+channel+".png") diff --git a/funcs/games/fourInARow.py b/funcs/games/fourInARow.py new file mode 100644 index 0000000..69f9ffc --- /dev/null +++ b/funcs/games/fourInARow.py @@ -0,0 +1,65 @@ +import json + +from . import draw4InARow + +def fourInARowStart(channel): + with open("resources/games/games.json", "r") as f: + data = json.load(f) + + if channel not in data["4 in a row games"]: + + board = [ [ 0 for i in range(7) ] for j in range(6) ] + + data["4 in a row games"][channel] = {"board": board} + + with open("resources/games/games.json", "w") as f: + json.dump(data,f,indent=4) + + draw4InARow.drawImage(channel) + + return "Started game", True + else: + return "There's already a 4 in a row game going on in this channel", False + + +def placePiece(channel : str,player : int,column : int): + with open("resources/games/games.json", "r") as f: + data = json.load(f) + + if channel in data["4 in a row games"]: + board = data["4 in a row games"][channel]["board"] + + placementx, placementy = -1, column + + for x in range(len(board)): + if board[x][column] == 0: + placementx = x + + + if placementx != -1: + board[placementx][placementy] = player + data["4 in a row games"][channel]["board"] = board + + with open("resources/games/games.json", "w") as f: + json.dump(data,f,indent=4) + + draw4InARow.drawImage(channel) + return "Placed the piece", True + else: + return "There isn't any room in that column", True + else: + return "There's no game in this channel", False + + + +def decipherCommand(command, channel, user): + if command == "" or command == " ": + return fourInARowStart(channel) + elif command.startswith(" place"): + commands = command.split(" ") + try: + return placePiece(channel,int(commands[2]),int(commands[3])-1) + except: + return "I didn't quite get that", False + else: + return "I didn't get that", False \ No newline at end of file diff --git a/funcs/games/test.png b/funcs/games/test.png new file mode 100644 index 0000000000000000000000000000000000000000..1232a1fecf6ab63603087ebd9c24c8c99cd5f598 GIT binary patch literal 77144 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 literal 0 HcmV?d00001 diff --git a/funcs/gwendolynFuncs.py b/funcs/gwendolynFuncs.py index 85ecc6c..a363acd 100644 --- a/funcs/gwendolynFuncs.py +++ b/funcs/gwendolynFuncs.py @@ -143,7 +143,7 @@ def makeFiles(): f = open("resources/games/games.json","r") except: logThis("games.json didn't exist. Making it now.") - data = {"trivia questions":{},"blackjack games":{},"users":{}} + data = {"trivia questions":{},"blackjack games":{},"4 in a row games": {},"users":{}} with open("resources/games/games.json","w") as f: json.dump(data,f,indent = 4) finally: @@ -183,8 +183,8 @@ def makeFiles(): finally: f.close() - if os.path.isdir("resources/games/tables") == False: - os.makedirs("resources/games/tables") + if os.path.isdir("resources/games/blackjackTables") == False: + os.makedirs("resources/games/blackjackTables") logThis("The tables directory didn't exist") def replaceMultiple(mainString, toBeReplaces, newString):