コード例 #1
0
    def __init__(self, spelverloop):
        self.spelverloop = spelverloop
        self.page = Page()
        self.page.add(
            Text("Spelverloop",
                 500,
                 100,
                 500,
                 80,
                 txtSize=40,
                 txtColor=(255, 255, 255)))  #header
        self.currentDayText = Text("Dag 1",
                                   500,
                                   140,
                                   500,
                                   80,
                                   txtSize=32,
                                   txtColor=(240, 240, 240))
        self.page.add(self.currentDayText)

        self.goBackToMainMenu = False

        def onNextTurnClick(button):
            self.spelverloop.nextTurn()

        def onBackClick(button):
            self.goBackToMainMenu = True

        self.page.add(
            Button(500, 500, txt="Volgende beurt", onClick=onNextTurnClick))
        self.page.add(Button(500, 600, txt="Terug", onClick=onBackClick))

        self.turnLabelValues = {
            Turn.PLAYER_1: "Speler 1",
            Turn.PLAYER_2: "Speler 2",
            Turn.PLAYER_3: "Speler 3",
            Turn.PLAYER_4: "Speler 4",
            Turn.ACTIONCARD: "Pak een\nactiekaart",
            Turn.ENEMIES: "Tegenstanders\n gaan vooruit",
            Turn.GET_GRAIN: "Krijg\n graan",
            Turn.GET_RESOURCES: "Krijg\n resources"
        }

        self.turnLabels = [
            Text(self.turnLabelValues[i],
                 100 + 120 * i,
                 300,
                 200,
                 50,
                 txtSize=20,
                 txtColor=(self.TURN_COLOR_DEFAULT)) for i in range(Turn.END)
        ]

        for label in self.turnLabels:
            self.page.add(label)
コード例 #2
0
    def __init__(self):
        self.toMainMenu = False
        self.pages = [Page()]
        self.mainPage = Page()
        self.pages[0].add(self.mainPage)

        def onBackClick(button):
            self.toMainMenu = True

        #page items
        self.backButton = Button(960, 900, onClick=onBackClick, txt='Terug')
        self.titleText = Text('Credits',
                              960,
                              150,
                              960,
                              150,
                              txtColor=(255, 255, 255),
                              txtSize=100)
        self.bodyText = Text(
            'de Legende van Habam -Digital Companion-\neen project voor de Hogeschool Rotterdam, opleiding Informatica\nhttps://www.hogeschoolrotterdam.nl/\n(c) 2019 INF1C Groep 1\n\nOntwikkeld door:\nMahmoud Arab\nHakan Dalama\nAudi van Gog\nBastiaan te Veldhuis\n\nMet dank aan:\nAron van den Eng\nGert-Jan den Heijer\nAstrid van Duuren\n\nGemaakt met Python in Processing 3',
            960,
            540,
            1960,
            700,
            txtColor=(255, 255, 255),
            txtSize=32)
        #to add items
        self.pages[0].add(self.backButton)
        self.pages[0].add(self.titleText)
        self.pages[0].add(self.bodyText)
コード例 #3
0
    def __init__(
        self, x, y, **buttonArgs
    ):  #Constructor, this will be executed when you create an instance of this class
        self.selected = False
        self.button = Button(x, y, **buttonArgs)
        self.txt = ""
        self.placeHolder = "Fill in"
        self.textCursorTime = 500  #in milliseconds
        self.textCursorSign = "|"

        #See this link for the character encoding: https://www.rapidtables.com/code/text/unicode-characters.html
        self.allowedCharacters = {chr(i)
                                  for i in range(32, 127)}  #spatie t/m [~]
        self.maxCharacters = 12

        self.previousKey = ""
コード例 #4
0
    def __init__(self):
        def onDrawBoardClick(button):
            self.boardSetup()
            self.draw_board()

        self.button = Button(300,
                             600,
                             txt="Nieuw Bord",
                             bgColor=(255, 255, 255),
                             onClick=onDrawBoardClick,
                             w=350,
                             h=60)

        def onBackButtonClick(button):
            self.goToMainMenu = True

        self.goToMainMenu = False
        self.backButton = Button(700,
                                 600,
                                 txt="Terug",
                                 onClick=onBackButtonClick)
コード例 #5
0
 def __init__(self):
     self.toMainMenu = False
     self.pages = [Page()]
     self.mainPage = Page()
     self.pages[0].add(self.mainPage)
     def onBackClick(button):
         self.toMainMenu = True
     #page items
     self.backButton = Button(960, 700, onClick = onBackClick, txt = 'Terug')
     self.titleText = Text("Spelernamen", 960, 150, 960, 150, txtColor=(255,255,255), txtSize = 100)
     self.p1name = TextField(960, 300, placeHolder = 'Speler 1')
     self.p2name = TextField(960, 380, placeHolder = 'Speler 2')
     self.p3name = TextField(960, 460, placeHolder = 'Speler 3')
     self.p4name = TextField(960, 540, placeHolder = 'Speler 4')
     #to add items
     self.pages[0].add(self.backButton)
     self.pages[0].add(self.titleText)
     self.pages[0].add(self.p1name)
     self.pages[0].add(self.p2name)
     self.pages[0].add(self.p3name)
     self.pages[0].add(self.p4name)
コード例 #6
0
    def __init__(self, tellers):

        self.movetoMainMenu = False
        self.backButton = Button(1300,
                                 950,
                                 txt='Terug',
                                 onClick=self.onBackClick,
                                 w=250,
                                 h=50)
        self.tellers = tellers
        self.showcard = False
        self.boughtbags = 0
        self.enoughbrick = True
        self.enoughgrain = True
        self.price = 3
        self.effect14 = False
        self.clicked = False
        self.resourcename = 'nothing'
        self.enoughmats = True
        self.chosenmat = 5
        self.pressed = False
        self.enoughmatspp = True
        self.buttons = [
            Button(200,
                   150,
                   txt="EffectKaart",
                   onClick=self.chosencard,
                   w=250,
                   h=50),
            Button(200, 250, txt="Reset", onClick=self.reset, w=250, h=50),
            Button(1300, 250, txt="Rugzak", onClick=self.backpack, w=250,
                   h=50),
            Button(850,
                   470,
                   txt="Gebruik",
                   onClick=self.Effect14Used,
                   w=250,
                   h=50),
            Button(1300,
                   550,
                   txt="Krachtpunt P1",
                   onClick=self.powerup1,
                   w=250,
                   h=50),
            Button(1300,
                   650,
                   txt="Krachtpunt P2",
                   onClick=self.powerup2,
                   w=250,
                   h=50),
            Button(1300,
                   750,
                   txt="Krachtpunt P3",
                   onClick=self.powerup3,
                   w=250,
                   h=50),
            Button(1300,
                   850,
                   txt="Krachtpunt P4",
                   onClick=self.powerup4,
                   w=250,
                   h=50),
        ]

        self.resourcesbuttons = [
            Button(200,
                   600,
                   txt="Hout",
                   onClick=self.Exchangewood,
                   w=250,
                   h=50),
            Button(200,
                   700,
                   txt="Steen",
                   onClick=self.Exchangebrick,
                   w=250,
                   h=50),
            Button(200,
                   800,
                   txt="Ijzer",
                   onClick=self.Exchangemetal,
                   w=250,
                   h=50),
            Button(200,
                   900,
                   txt="Graan",
                   onClick=self.Exchangegrain,
                   w=250,
                   h=50),
        ]

        self.matsbuttons = [
            Button(550, 600, txt="Hout", onClick=self.pluswood, w=250, h=50),
            Button(550, 700, txt="Steen", onClick=self.plusstone, w=250, h=50),
            Button(550, 800, txt="Ijzer", onClick=self.plusmetal, w=250, h=50),
            Button(550, 900, txt="Graan", onClick=self.plusgrain, w=250, h=50),
        ]

        self.errorbuttons = [
            Button(1650, 350, txt="OK", onClick=self.NoBrickError, w=100,
                   h=50),
            Button(500, 300, txt="OK", onClick=self.NoGrainError, w=100, h=50),
            Button(850, 750, txt="OK", onClick=self.NoMatserror, w=100, h=50),
            Button(1600,
                   730,
                   txt="OK",
                   onClick=self.NoMatsppError,
                   w=100,
                   h=50),
        ]
コード例 #7
0
class Markt:
    def __init__(self, tellers):

        self.movetoMainMenu = False
        self.backButton = Button(1300,
                                 950,
                                 txt='Terug',
                                 onClick=self.onBackClick,
                                 w=250,
                                 h=50)
        self.tellers = tellers
        self.showcard = False
        self.boughtbags = 0
        self.enoughbrick = True
        self.enoughgrain = True
        self.price = 3
        self.effect14 = False
        self.clicked = False
        self.resourcename = 'nothing'
        self.enoughmats = True
        self.chosenmat = 5
        self.pressed = False
        self.enoughmatspp = True
        self.buttons = [
            Button(200,
                   150,
                   txt="EffectKaart",
                   onClick=self.chosencard,
                   w=250,
                   h=50),
            Button(200, 250, txt="Reset", onClick=self.reset, w=250, h=50),
            Button(1300, 250, txt="Rugzak", onClick=self.backpack, w=250,
                   h=50),
            Button(850,
                   470,
                   txt="Gebruik",
                   onClick=self.Effect14Used,
                   w=250,
                   h=50),
            Button(1300,
                   550,
                   txt="Krachtpunt P1",
                   onClick=self.powerup1,
                   w=250,
                   h=50),
            Button(1300,
                   650,
                   txt="Krachtpunt P2",
                   onClick=self.powerup2,
                   w=250,
                   h=50),
            Button(1300,
                   750,
                   txt="Krachtpunt P3",
                   onClick=self.powerup3,
                   w=250,
                   h=50),
            Button(1300,
                   850,
                   txt="Krachtpunt P4",
                   onClick=self.powerup4,
                   w=250,
                   h=50),
        ]

        self.resourcesbuttons = [
            Button(200,
                   600,
                   txt="Hout",
                   onClick=self.Exchangewood,
                   w=250,
                   h=50),
            Button(200,
                   700,
                   txt="Steen",
                   onClick=self.Exchangebrick,
                   w=250,
                   h=50),
            Button(200,
                   800,
                   txt="Ijzer",
                   onClick=self.Exchangemetal,
                   w=250,
                   h=50),
            Button(200,
                   900,
                   txt="Graan",
                   onClick=self.Exchangegrain,
                   w=250,
                   h=50),
        ]

        self.matsbuttons = [
            Button(550, 600, txt="Hout", onClick=self.pluswood, w=250, h=50),
            Button(550, 700, txt="Steen", onClick=self.plusstone, w=250, h=50),
            Button(550, 800, txt="Ijzer", onClick=self.plusmetal, w=250, h=50),
            Button(550, 900, txt="Graan", onClick=self.plusgrain, w=250, h=50),
        ]

        self.errorbuttons = [
            Button(1650, 350, txt="OK", onClick=self.NoBrickError, w=100,
                   h=50),
            Button(500, 300, txt="OK", onClick=self.NoGrainError, w=100, h=50),
            Button(850, 750, txt="OK", onClick=self.NoMatserror, w=100, h=50),
            Button(1600,
                   730,
                   txt="OK",
                   onClick=self.NoMatsppError,
                   w=100,
                   h=50),
        ]

    def onBackClick(self, self1):
        self.movetoMainMenu = True

    def powerup1(self, self1):

        if self.tellers.wood >= self.price and self.tellers.brick >= self.price and self.tellers.metal >= self.price and self.tellers.grain >= self.price:
            self.tellers.power1 += 1
            self.tellers.wood -= self.price
            self.tellers.brick -= self.price
            self.tellers.metal -= self.price
            self.tellers.grain -= self.price
        else:
            self.enoughmatspp = False

    def powerup2(self, self1):

        if self.tellers.wood >= self.price and self.tellers.brick >= self.price and self.tellers.metal >= self.price and self.tellers.grain >= self.price:
            self.tellers.power2 += 1
            self.tellers.wood -= self.price
            self.tellers.brick -= self.price
            self.tellers.metal -= self.price
            self.tellers.grain -= self.price
        else:
            self.enoughmatspp = False

    def powerup3(self, self1):

        if self.tellers.wood >= self.price and self.tellers.brick >= self.price and self.tellers.metal >= self.price and self.tellers.grain >= self.price:
            self.tellers.power3 += 1
            self.tellers.wood -= self.price
            self.tellers.brick -= self.price
            self.tellers.metal -= self.price
            self.tellers.grain -= self.price
        else:
            self.enoughmatspp = False

    def powerup4(self, self1):

        if self.tellers.wood >= self.price and self.tellers.brick >= self.price and self.tellers.metal >= self.price and self.tellers.grain >= self.price:
            self.tellers.power4 += 1
            self.tellers.wood -= self.price
            self.tellers.brick -= self.price
            self.tellers.metal -= self.price
            self.tellers.grain -= self.price
        else:
            self.enoughmatspp = False

    def chosencard(self, self1):

        self.card = random.choice(self.effectcards)

        if self.card == self.effectcards[9]:
            self.tellers.effect10 = True
        if self.card == self.effectcards[13] and self.effect14 == True:
            self.card = random.choice(self.effectcards2)
        if self.tellers.grain >= self.price:
            self.showcard = True
            self.buttons[0].enabled = False
            self.tellers.grain -= self.price
        else:
            self.enoughgrain = False
            self.price = 3

    def effectcard(self):

        if self.showcard == True:
            image(self.card, 352, 77)

    def reset(self, self1):

        self.showcard = False
        self.buttons[0].enabled = True
        if self.card == self.effectcards[13]:
            self.effect14 = True
        if self.card == self.effectcards[4]:
            self.price = self.price // 2
        else:
            self.price = 3

    def backpack(self, self1):

        if self.tellers.brick >= self.price:
            self.tellers.bagcount = True
            self.buttons[2].enabled = False
            self.tellers.brick -= self.price
            self.tellers.capacity += 3
        else:
            self.enoughbrick = False

    def NoBrickError(self, self1):

        self.enoughbrick = True

    def NoGrainError(self, self1):

        self.enoughgrain = True

    def Effect14Used(self, self1):

        self.effect14 = False

    def Exchangewood(self, self1):

        if self.tellers.wood >= self.price:
            self.tellers.wood -= self.price
            self.clicked = True
            self.chosenmat = 0
        else:
            self.resourcename = 'Hout'
            self.enoughmats = False
            self.clicked = True
            self.chosenmat = 5

    def Exchangebrick(self, self1):

        if self.tellers.brick >= self.price:
            self.tellers.brick -= self.price
            self.clicked = True
            self.chosenmat = 1
        else:
            self.resourcename = 'steen'
            self.enoughmats = False
            self.clicked = True
            self.chosenmat = 5

    def Exchangemetal(self, self1):

        if self.tellers.metal >= self.price:
            self.tellers.metal -= self.price
            self.clicked = True
            self.chosenmat = 2
        else:
            self.resourcename = 'Ijzer'
            self.enoughmats = False
            self.clicked = True
            self.chosenmat = 5

    def Exchangegrain(self, self1):

        if self.tellers.grain >= self.price:
            self.tellers.grain -= self.price
            self.clicked = True
            self.chosenmat = 3

        else:
            self.resourcename = 'Graan'
            self.enoughmats = False
            self.clicked = True
            self.chosenmat = 5

    def pluswood(self, self1):

        if (self.tellers.wood + self.tellers.metal + self.tellers.brick +
                self.tellers.grain) < (self.tellers.capacity):
            self.tellers.wood += 1
            self.clicked = False

    def plusstone(self, self1):

        if (self.tellers.wood + self.tellers.metal + self.tellers.brick +
                self.tellers.grain) < (self.tellers.capacity):
            self.tellers.brick += 1
            self.clicked = False

    def plusmetal(self, self1):

        if (self.tellers.wood + self.tellers.metal + self.tellers.brick +
                self.tellers.grain) < (self.tellers.capacity):
            self.tellers.metal += 1
            self.clicked = False

    def plusgrain(self, self1):

        if (self.tellers.wood + self.tellers.metal + self.tellers.brick +
                self.tellers.grain) < (self.tellers.capacity):
            self.tellers.grain += 1
            self.clicked = False

    def NoMatserror(self, self1):

        self.clicked = False
        self.enoughmats = True

    def NoMatsppError(self, self1):
        self.enoughmatspp = True

    def setup(self):
        self.effectcards = []
        self.effectcards2 = []
        self.backgr = loadImage('BG.png')
        for self.i in range(1, 21):
            self.filename = 'effectkaart' + str(self.i) + '.png'
            self.effectcards.append(loadImage(self.filename))
        for self.i in range(1, 21):
            self.filename = 'effectkaart' + str(self.i) + '.png'
            if self.i != 14:
                self.effectcards2.append(loadImage(self.filename))

    def draw(self):
        image(self.backgr, 0, 0)
        self.backButton.update()
        self.backButton.draw()
        for self.x in range(3):
            self.buttons[self.x].draw()
            self.buttons[self.x].update()
        fill(0)
        text("Effectkaart", 500, 20)
        noFill()
        rect(350, 75, 304, 341, 5)
        self.effectcard()
        if not self.enoughbrick:
            rect(1500, 100, 300, 300)
            fill(0)
            text(
                '\n' + 'Onvoldoende' + '\n' + 'steen voor' + '\n' +
                'een rugzak!', 1650, 100)
            self.errorbuttons[0].draw()
            self.errorbuttons[0].update()

        if not self.enoughgrain:
            fill(0)
            text(
                'Onvoldoende' + '\n' + 'graan voor' + '\n' +
                'een effectkaart!', 500, 100)
            self.errorbuttons[1].draw()
            self.errorbuttons[1].update()
        if self.effect14:
            rect(700, 77, 304, 341, 5)
            image(self.effectcards[13], 702, 79)
            self.buttons[3].draw()
            self.buttons[3].update()
        if self.buttons[0].enabled == True:
            self.buttons[1].enabled = False
        else:
            self.buttons[1].enabled = True
        fill(0)
        text('Wissel : ', 200, 500)
        text('Voor : ', 550, 500)
        for i in range(4):
            self.resourcesbuttons[i].draw()
            self.resourcesbuttons[i].update()
            self.matsbuttons[i].draw()
            self.matsbuttons[i].update()
            if self.clicked:
                self.resourcesbuttons[i].enabled = False
                if self.enoughmats and i != self.chosenmat:
                    self.matsbuttons[i].enabled = True
            else:
                self.resourcesbuttons[i].enabled = True
                self.matsbuttons[i].enabled = False

        if not self.enoughmats:
            fill(0)
            text('Onvoldoende' + '\n' + self.resourcename + '!', 850, 630)
            noFill()
            rect(700, 600, 300, 200, 5)
            self.errorbuttons[2].draw()
            self.errorbuttons[2].update()
        for self.i in range(4, 8):
            self.buttons[self.i].draw()
            self.buttons[self.i].update()
        if not self.enoughmatspp:
            noFill()
            rect(1450, 550, 300, 250, 5)
            fill(0)
            text('Onvoldoende' + '\n' + 'Resources!', 1600, 600)
            self.errorbuttons[3].draw()
            self.errorbuttons[3].update()
            for self.i in range(4, 8):
                self.buttons[self.i].enabled = False
        else:
            for self.i in range(4, 8):
                self.buttons[self.i].enabled = True
コード例 #8
0
    def __init__(self, playerNames, tellers, files):
        self.pages = [Page() for i in range(self.PHASE_END + 1)]
        self.resultValuesPage = Page()
        self.pages[self.PHASE_RESULT].add(self.resultValuesPage)
        self.playerNames = playerNames
        self.tellers = tellers
        self.files = files

        self.selectedPlayers = set()  #Player index 0-3 (player 1 - 4)
        self.enemy = 0  #Enemy tier index 0-3 (low tier, mid tier, high tier, final boss)

        self.effecten = [
            set(), set(), set(), set()
        ]  #Effecten van verkregen effectkaarten van elk speler
        self.availableEffects = [[self.EFFECT_ADD_2PP, "+2k"],
                                 [self.EFFECT_MUL_2PP, "x2k"],
                                 [self.EFFECT_OUT_2DAYS, ""],
                                 [self.EFFECT_EXTRA_TRY, ""]]

        #----BUTTON EVENTS-----
        def onPlayerClick(button):
            self.player = button.playerIndex

            if (button.playerIndex in self.selectedPlayers):
                self.selectedPlayers.remove(button.playerIndex)
                button.bgColor = Button.bgColor
                button.bgColorCurrent = Button.bgColor
            else:
                self.selectedPlayers.add(button.playerIndex)
                button.bgColor = Button.bgColorHover
                button.bgColorCurrent = Button.bgColorHover

            self.playerNextButton.enabled = len(self.selectedPlayers) > 0

        def onEffectClick(button):
            player = button.playerIndex
            effect = button.effect

            if (effect in self.effecten[player]):
                self.effecten[player].remove(effect)
                button.bgColor = Button.bgColor
                button.bgColorCurrent = Button.bgColor
            else:
                self.effecten[player].add(effect)
                button.bgColor = Button.bgColorPressed
                button.bgColorCurrent = Button.bgColorPressed

        def onNextClick(button):
            if (len(self.selectedPlayers) > 0):
                if (len(self.selectedPlayers) > 1):
                    self.headers[
                        self.
                        PHASE_CHOOSE_ENEMY].txt = "Jullie vechten tegen..."
                else:
                    self.headers[
                        self.PHASE_CHOOSE_ENEMY].txt = "Je vecht tegen..."
                self.phase = self.PHASE_CHOOSE_ENEMY
                print("effecten:", self.effecten)

        def onEnemyClick(button):
            self.phase = self.PHASE_RESULT
            self.enemy = button.enemyIndex
            self.fight()

        def onBackClick(button):
            self.phase = self.PHASE_END

        def onBackToPlayersClick(button):
            self.phase = self.PHASE_CHOOSE_PLAYER

        def onResetClick(button):
            self.fight()

        #If the user clicks on the button of this event, a page will be displayed where he/she can can throw a dice to get a powerpoint.
        def onGetPowerpointsClick(button):
            self.phase = self.PHASE_GET_POWERPOINTS
            self.throwForPowerpoints(
            )  #Throw dices to get powerpoints and display the result

        #---------------------

        self.phase = self.PHASE_CHOOSE_PLAYER
        headerTemplate = Text("TEXT",
                              960,
                              160,
                              1200,
                              140,
                              txtSize=70,
                              txtColor=(255, 255, 255))
        self.headers = [  #Create labels to display a header on each page
            headerTemplate.copy(txt="Je bent/Jullie zijn..."),
            headerTemplate.copy(txt="Je vecht tegen..."),
            headerTemplate.copy(txt="RESULTAAT"),
            headerTemplate.copy(txt="Krijg krachtpunten")
        ]

        #Add the headers to the pages to update and display them
        for i in range(len(self.headers)):
            self.pages[i].add(self.headers[i])

        self.buttonTemplate = Button(0, 0, w=360, h=50, txtSize=40, radius=3)
        unitButtonTemplate = self.buttonTemplate.copy(y=700)
        effectButtonTemplate = Button(0,
                                      unitButtonTemplate.y + 70,
                                      w=54,
                                      h=54,
                                      txtOffsetY=14,
                                      radius=50)

        heroImageFileNames = ["held1", "held2", "held3", "held4"]
        enemyImageFileNames = ["tier1", "tier2", "tier3", "tier4"]

        #Create buttons for choosing a player
        for i in range(self.getPlayerCount()):  #for each player
            button = unitButtonTemplate.copy(x=i * 400 + 340,
                                             txt=self.playerNames[i],
                                             onClick=onPlayerClick)
            button.playerIndex = i
            button.enabled = self.getPlayerPowerpoints(i) >= 0
            self.pages[self.PHASE_CHOOSE_PLAYER].add(button)

            #Draw hero image
            heroImage = Image(self.files.getImage(heroImageFileNames[i]),
                              button.x, button.y - 270, True)
            self.pages[self.PHASE_CHOOSE_PLAYER].add(heroImage)

            for j in range(len(self.availableEffects)):  #for each effect
                effectButton = effectButtonTemplate.copy(
                    x=button.x + 60 * j - 85,
                    onClick=onEffectClick,
                    playerIndex=i,
                    effect=self.availableEffects[j][0],
                    txt=self.availableEffects[j][1])
                effectButton.enabled = self.getPlayerPowerpoints(i) >= 0
                self.pages[self.PHASE_CHOOSE_PLAYER].add(effectButton)

                if (self.availableEffects[j][0] == self.EFFECT_OUT_2DAYS):
                    icon = Image(self.files.getImage("buitenspel_icon"),
                                 effectButton.x, effectButton.y, True)
                    self.pages[self.PHASE_CHOOSE_PLAYER].add(icon)
                if (self.availableEffects[j][0] == self.EFFECT_EXTRA_TRY):
                    icon = Image(self.files.getImage("extraLife"),
                                 effectButton.x, effectButton.y, True)
                    self.pages[self.PHASE_CHOOSE_PLAYER].add(icon)

        #Create buttons for choosing an enemy
        for i in range(self.getEnemyTierCount()):
            button = unitButtonTemplate.copy(x=i * 400 + 340,
                                             txt=self.tiers[i],
                                             onClick=onEnemyClick)
            button.enemyIndex = i
            self.pages[self.PHASE_CHOOSE_ENEMY].add(button)

            #Draw enemy image
            enemyImage = Image(files.getImage(enemyImageFileNames[i]),
                               button.x, button.y - 270, True)
            self.pages[self.PHASE_CHOOSE_ENEMY].add(enemyImage)

        self.playerNextButton = self.buttonTemplate.copy(x=960 - 300,
                                                         y=850,
                                                         txt="Volgende",
                                                         onClick=onNextClick,
                                                         enabled=False)
        self.pages[self.PHASE_CHOOSE_PLAYER].add(self.playerNextButton)

        #Reset button: fight again, Backbutton: resets the battlesystem (for now)
        self.resetButton = self.buttonTemplate.copy(x=960 - 300,
                                                    y=850,
                                                    txt="Vecht opnieuw!",
                                                    onClick=onResetClick)
        self.backButton = self.buttonTemplate.copy(x=960 + 300,
                                                   y=850,
                                                   txt="Hoofdmenu",
                                                   onClick=onBackClick)
        self.getPPButton = self.buttonTemplate.copy(
            x=960,
            y=910,
            w=600,
            txt="Verkrijg krachtpunten",
            onClick=onGetPowerpointsClick)

        #Add those buttons to the result page
        self.pages[self.PHASE_RESULT].add(self.resetButton)
        self.pages[self.PHASE_RESULT].add(self.backButton)

        self.pages[self.PHASE_CHOOSE_PLAYER].add(
            self.backButton.copy(onClick=onBackClick))
        self.pages[self.PHASE_CHOOSE_ENEMY].add(
            self.backButton.copy(onClick=onBackToPlayersClick, txt="Terug"))

        self.pages[self.PHASE_RESULT].add(self.getPPButton)
        self.pages[self.PHASE_GET_POWERPOINTS].add(
            self.backButton.copy(onClick=onBackClick, x=960, y=910, w=600))
コード例 #9
0
class BattleSystem:
    #Constant values
    PHASE_CHOOSE_PLAYER = 0
    PHASE_CHOOSE_ENEMY = 1
    PHASE_RESULT = 2
    PHASE_GET_POWERPOINTS = 3
    PHASE_END = 4

    EFFECT_ADD_2PP = 1
    EFFECT_MUL_2PP = 2
    EFFECT_OUT_2DAYS = 4
    EFFECT_EXTRA_TRY = 14

    tiers = [
        "Low tier vijand", "Mid tier vijand", "High tier vijand", "Eindbaas"
    ]

    RESPAWN_WAIT_TIME = 3  #in dagen
    RESPAWN_LESS_WAIT_TIME = 2

    def getPlayerCount(self):
        return 4

    def getEnemyTierCount(self):
        return 4

    #index: 0-3 (speler 1-4)
    def getPlayerPowerpoints(self, i):
        ppList = [
            self.tellers.power1, self.tellers.power2, self.tellers.power3,
            self.tellers.power4
        ]
        return ppList[i]

    def setPlayerPowerpoints(self, i, value):
        if (i == 0):
            self.tellers.power1 = value
        elif (i == 1):
            self.tellers.power2 = value
        elif (i == 2):
            self.tellers.power3 = value
        elif (i == 3):
            self.tellers.power4 = value
        else:
            print("Error: invalid index, value: " + str(i))

    #index: 0-3 (tier 1-3 + final boss)
    def getEnemyPowerpoints(self, i):
        eindbaas = (self.getPlayerCount() - 1) * 6  #2 spelers: 6, 3: 12, 4: 18
        ppList = [1, 2, 4, eindbaas]
        return ppList[i]

    #Start the fight between the chosen player and the enemy
    def fight(self):
        MAX_DICES_PLAYER = 2
        MAX_DICES_ENEMY = 2

        playerPPDictOrig = dict()  #powerpoints without effects
        playerPPDict = dict(
        )  #amount of powerpoints of each player [int per key]
        playerEyesDict = dict(
        )  #eyes of thrown dices per player [int array per key]
        playerTotalDict = dict()  #Powerpoints + thrown eyes per player
        playerTotal = 0  #Sum of playerTotalDict

        playerPPStrings = ["", "", "", ""]

        for i in self.selectedPlayers:
            playerPPDictOrig[i] = self.getPlayerPowerpoints(i)
            playerEffects = self.effecten[i]
            if self.EFFECT_MUL_2PP in playerEffects and self.EFFECT_ADD_2PP in playerEffects:
                playerPPDict[i] = playerPPDictOrig[i] * 2 + 2
                playerPPStrings[i] = str(
                    playerPPDictOrig[i]) + "k x 2 + 2 = " + str(
                        playerPPDict[i]) + "k"
            elif self.EFFECT_MUL_2PP in playerEffects:
                playerPPDict[i] = playerPPDictOrig[i] * 2
                playerPPStrings[i] = str(
                    playerPPDictOrig[i]) + "k x 2 = " + str(
                        playerPPDict[i]) + "k"
            elif self.EFFECT_ADD_2PP in playerEffects:
                playerPPDict[i] = playerPPDictOrig[i] + 2
                playerPPStrings[i] = str(
                    playerPPDictOrig[i]) + "k + 2 = " + str(
                        playerPPDict[i]) + "k"
            else:
                playerPPDict[i] = playerPPDictOrig[i]
                playerPPStrings[i] = str(playerPPDict[i]) + "k"

            playerEyesDict[i] = [
                random.randint(1, 6) for _ in range(MAX_DICES_PLAYER)
            ]
            playerTotalDict[i] = playerPPDict[i] + max(
                playerEyesDict[i]
            )  #Get the highest thrown die + player powerpoints
            playerTotal += playerTotalDict[i]
        enemyPP = self.getEnemyPowerpoints(self.enemy)

        enemyDices = [random.randint(1, 6) for _ in range(MAX_DICES_ENEMY)]
        enemyEyes = max(enemyDices)

        enemyTotal = enemyPP + enemyEyes

        resultText = ""
        self.backButton.enabled = True
        self.getPPButton.enabled = False
        if (playerTotal > enemyTotal):  #GEWONNEN
            resultText = ["Je hebt gewonnen!", "Jullie hebben gewonnen!"
                          ][len(self.selectedPlayers) > 1]
            self.tellers.win_points += 1
            self.resetButton.enabled = False
            self.getPPButton.enabled = True
        elif (playerTotal < enemyTotal):  #VERLOREN
            resultText = ["Je hebt verloren!", "Jullie hebben verloren!"
                          ][len(self.selectedPlayers) > 1]
            self.resetButton.enabled = True
            playersToRemove = set()
            for i in self.selectedPlayers:
                if self.getPlayerPowerpoints(i) >= 0:
                    self.setPlayerPowerpoints(i,
                                              self.getPlayerPowerpoints(i) - 1)
                if self.getPlayerPowerpoints(i) < 0:
                    if (self.EFFECT_EXTRA_TRY in self.effecten[i]):
                        self.effecten[i].remove(
                            self.EFFECT_EXTRA_TRY
                        )  #Je mag het maar 1 keer gebruiken
                        self.setPlayerPowerpoints(i, 0)
                    else:
                        playerEffects = self.effecten[i]
                        if (self.EFFECT_OUT_2DAYS in playerEffects):
                            self.setPlayerPowerpoints(
                                i, -self.RESPAWN_LESS_WAIT_TIME
                            )  #Met effectkaart 14 hoeft de speler maar 2 dagen te wachten
                        else:
                            self.setPlayerPowerpoints(
                                i, -self.RESPAWN_WAIT_TIME
                            )  #De speler mag voor een paar dagen niet meedoen
                        playersToRemove.add(i)

            for i in playersToRemove:
                self.selectedPlayers.remove(i)

            if (len(self.selectedPlayers) == 0):
                self.backButton.enabled = True
                self.resetButton.enabled = False
        else:  #GELIJKSPEL
            resultText = "Gelijkspel!"
            self.resetButton.enabled = True
        self.headers[self.PHASE_RESULT].txt = resultText

        print("---FIGHT---")
        print("playerPPDict", playerPPDict)
        print("playerEyesDict", playerEyesDict)
        print("playerTotalDict", playerTotalDict)
        print("playerTotal", playerTotal)
        print("enemyTotal", enemyTotal)

        self.resultValuesPage.clear()

        y = 250
        for playerIndex in playerEyesDict:
            x = 960 - 500
            playerText = Text(self.playerNames[playerIndex] + " (" +
                              playerPPStrings[playerIndex] + ")",
                              x + 100,
                              y,
                              400,
                              64,
                              txtSize=24,
                              txtColor=(255, 255, 255))
            self.resultValuesPage.add(playerText)
            for dice in playerEyesDict[playerIndex]:
                img = self.files.getImage("dice" + str(dice))
                self.resultValuesPage.add(Image(img, x, y))
                x += 100
            y += 132

        for i in range(len(enemyDices)):
            img = self.files.getImage("dice" + str(enemyDices[i]))
            self.resultValuesPage.add(Image(img, 960 + 400 + 100 * i, 250))
        self.resultValuesPage.add(
            Text(self.tiers[self.enemy] + " (" + str(enemyPP) + ")",
                 960 + 400 + 100,
                 250,
                 400,
                 64,
                 txtSize=24,
                 txtColor=(255, 255, 255)))

    #throws dices for the players to get powerpoints
    def throwForPowerpoints(self):
        playerLabelTemplate = Text("PLAYER NAME",
                                   200,
                                   200,
                                   400,
                                   100,
                                   txtSize=50)
        ppLabelTemplate = Text("+1k", 200, 500, 600, 100, txtSize=50)

        i = 0
        for playerIndex in self.selectedPlayers:
            dice = self.randomizer()
            x = 200 + 400 * i
            self.pages[self.PHASE_GET_POWERPOINTS].add(
                playerLabelTemplate.copy(x=x,
                                         txt=self.playerNames[playerIndex]))
            img = self.files.getImage("dice" + str(dice))
            self.pages[self.PHASE_GET_POWERPOINTS].add(Image(
                img, x, 400, True))
            if (dice >= 5):
                pp = self.getPlayerPowerpoints(
                    playerIndex) + 1  #Give an extra powerpoint to the player
                self.setPlayerPowerpoints(playerIndex, pp)
                self.pages[self.PHASE_GET_POWERPOINTS].add(
                    ppLabelTemplate.copy(x=x))
            i += 1

        #pages[self.PHASE_GET_POWERPOINTS]

    #BattleSystem constructor
    def __init__(self, playerNames, tellers, files):
        self.pages = [Page() for i in range(self.PHASE_END + 1)]
        self.resultValuesPage = Page()
        self.pages[self.PHASE_RESULT].add(self.resultValuesPage)
        self.playerNames = playerNames
        self.tellers = tellers
        self.files = files

        self.selectedPlayers = set()  #Player index 0-3 (player 1 - 4)
        self.enemy = 0  #Enemy tier index 0-3 (low tier, mid tier, high tier, final boss)

        self.effecten = [
            set(), set(), set(), set()
        ]  #Effecten van verkregen effectkaarten van elk speler
        self.availableEffects = [[self.EFFECT_ADD_2PP, "+2k"],
                                 [self.EFFECT_MUL_2PP, "x2k"],
                                 [self.EFFECT_OUT_2DAYS, ""],
                                 [self.EFFECT_EXTRA_TRY, ""]]

        #----BUTTON EVENTS-----
        def onPlayerClick(button):
            self.player = button.playerIndex

            if (button.playerIndex in self.selectedPlayers):
                self.selectedPlayers.remove(button.playerIndex)
                button.bgColor = Button.bgColor
                button.bgColorCurrent = Button.bgColor
            else:
                self.selectedPlayers.add(button.playerIndex)
                button.bgColor = Button.bgColorHover
                button.bgColorCurrent = Button.bgColorHover

            self.playerNextButton.enabled = len(self.selectedPlayers) > 0

        def onEffectClick(button):
            player = button.playerIndex
            effect = button.effect

            if (effect in self.effecten[player]):
                self.effecten[player].remove(effect)
                button.bgColor = Button.bgColor
                button.bgColorCurrent = Button.bgColor
            else:
                self.effecten[player].add(effect)
                button.bgColor = Button.bgColorPressed
                button.bgColorCurrent = Button.bgColorPressed

        def onNextClick(button):
            if (len(self.selectedPlayers) > 0):
                if (len(self.selectedPlayers) > 1):
                    self.headers[
                        self.
                        PHASE_CHOOSE_ENEMY].txt = "Jullie vechten tegen..."
                else:
                    self.headers[
                        self.PHASE_CHOOSE_ENEMY].txt = "Je vecht tegen..."
                self.phase = self.PHASE_CHOOSE_ENEMY
                print("effecten:", self.effecten)

        def onEnemyClick(button):
            self.phase = self.PHASE_RESULT
            self.enemy = button.enemyIndex
            self.fight()

        def onBackClick(button):
            self.phase = self.PHASE_END

        def onBackToPlayersClick(button):
            self.phase = self.PHASE_CHOOSE_PLAYER

        def onResetClick(button):
            self.fight()

        #If the user clicks on the button of this event, a page will be displayed where he/she can can throw a dice to get a powerpoint.
        def onGetPowerpointsClick(button):
            self.phase = self.PHASE_GET_POWERPOINTS
            self.throwForPowerpoints(
            )  #Throw dices to get powerpoints and display the result

        #---------------------

        self.phase = self.PHASE_CHOOSE_PLAYER
        headerTemplate = Text("TEXT",
                              960,
                              160,
                              1200,
                              140,
                              txtSize=70,
                              txtColor=(255, 255, 255))
        self.headers = [  #Create labels to display a header on each page
            headerTemplate.copy(txt="Je bent/Jullie zijn..."),
            headerTemplate.copy(txt="Je vecht tegen..."),
            headerTemplate.copy(txt="RESULTAAT"),
            headerTemplate.copy(txt="Krijg krachtpunten")
        ]

        #Add the headers to the pages to update and display them
        for i in range(len(self.headers)):
            self.pages[i].add(self.headers[i])

        self.buttonTemplate = Button(0, 0, w=360, h=50, txtSize=40, radius=3)
        unitButtonTemplate = self.buttonTemplate.copy(y=700)
        effectButtonTemplate = Button(0,
                                      unitButtonTemplate.y + 70,
                                      w=54,
                                      h=54,
                                      txtOffsetY=14,
                                      radius=50)

        heroImageFileNames = ["held1", "held2", "held3", "held4"]
        enemyImageFileNames = ["tier1", "tier2", "tier3", "tier4"]

        #Create buttons for choosing a player
        for i in range(self.getPlayerCount()):  #for each player
            button = unitButtonTemplate.copy(x=i * 400 + 340,
                                             txt=self.playerNames[i],
                                             onClick=onPlayerClick)
            button.playerIndex = i
            button.enabled = self.getPlayerPowerpoints(i) >= 0
            self.pages[self.PHASE_CHOOSE_PLAYER].add(button)

            #Draw hero image
            heroImage = Image(self.files.getImage(heroImageFileNames[i]),
                              button.x, button.y - 270, True)
            self.pages[self.PHASE_CHOOSE_PLAYER].add(heroImage)

            for j in range(len(self.availableEffects)):  #for each effect
                effectButton = effectButtonTemplate.copy(
                    x=button.x + 60 * j - 85,
                    onClick=onEffectClick,
                    playerIndex=i,
                    effect=self.availableEffects[j][0],
                    txt=self.availableEffects[j][1])
                effectButton.enabled = self.getPlayerPowerpoints(i) >= 0
                self.pages[self.PHASE_CHOOSE_PLAYER].add(effectButton)

                if (self.availableEffects[j][0] == self.EFFECT_OUT_2DAYS):
                    icon = Image(self.files.getImage("buitenspel_icon"),
                                 effectButton.x, effectButton.y, True)
                    self.pages[self.PHASE_CHOOSE_PLAYER].add(icon)
                if (self.availableEffects[j][0] == self.EFFECT_EXTRA_TRY):
                    icon = Image(self.files.getImage("extraLife"),
                                 effectButton.x, effectButton.y, True)
                    self.pages[self.PHASE_CHOOSE_PLAYER].add(icon)

        #Create buttons for choosing an enemy
        for i in range(self.getEnemyTierCount()):
            button = unitButtonTemplate.copy(x=i * 400 + 340,
                                             txt=self.tiers[i],
                                             onClick=onEnemyClick)
            button.enemyIndex = i
            self.pages[self.PHASE_CHOOSE_ENEMY].add(button)

            #Draw enemy image
            enemyImage = Image(files.getImage(enemyImageFileNames[i]),
                               button.x, button.y - 270, True)
            self.pages[self.PHASE_CHOOSE_ENEMY].add(enemyImage)

        self.playerNextButton = self.buttonTemplate.copy(x=960 - 300,
                                                         y=850,
                                                         txt="Volgende",
                                                         onClick=onNextClick,
                                                         enabled=False)
        self.pages[self.PHASE_CHOOSE_PLAYER].add(self.playerNextButton)

        #Reset button: fight again, Backbutton: resets the battlesystem (for now)
        self.resetButton = self.buttonTemplate.copy(x=960 - 300,
                                                    y=850,
                                                    txt="Vecht opnieuw!",
                                                    onClick=onResetClick)
        self.backButton = self.buttonTemplate.copy(x=960 + 300,
                                                   y=850,
                                                   txt="Hoofdmenu",
                                                   onClick=onBackClick)
        self.getPPButton = self.buttonTemplate.copy(
            x=960,
            y=910,
            w=600,
            txt="Verkrijg krachtpunten",
            onClick=onGetPowerpointsClick)

        #Add those buttons to the result page
        self.pages[self.PHASE_RESULT].add(self.resetButton)
        self.pages[self.PHASE_RESULT].add(self.backButton)

        self.pages[self.PHASE_CHOOSE_PLAYER].add(
            self.backButton.copy(onClick=onBackClick))
        self.pages[self.PHASE_CHOOSE_ENEMY].add(
            self.backButton.copy(onClick=onBackToPlayersClick, txt="Terug"))

        self.pages[self.PHASE_RESULT].add(self.getPPButton)
        self.pages[self.PHASE_GET_POWERPOINTS].add(
            self.backButton.copy(onClick=onBackClick, x=960, y=910, w=600))

    #Code van hakan
    def randomizer(self):
        x = random.randint(1, 6)
        return x

    #-----------------

    #Call this every frame
    def update(self):
        self.pages[self.phase].update()

    #Call this every frame
    def draw(self):
        self.pages[self.phase].draw()
コード例 #10
0
class TextField:
    #Example usage: myTextField = TextField(100, 100) or TextField(100, 200, w=300, h=50)
    def __init__(
        self, x, y, **buttonArgs
    ):  #Constructor, this will be executed when you create an instance of this class
        self.selected = False
        self.button = Button(x, y, **buttonArgs)
        self.txt = ""
        self.placeHolder = "Fill in"
        self.textCursorTime = 500  #in milliseconds
        self.textCursorSign = "|"

        #See this link for the character encoding: https://www.rapidtables.com/code/text/unicode-characters.html
        self.allowedCharacters = {chr(i)
                                  for i in range(32, 127)}  #spatie t/m [~]
        self.maxCharacters = 12

        self.previousKey = ""

    def setTextFieldArgs(**args):
        self.__dict__.update(args)

    def validKey(self, keyString):
        return keyString in self.allowedCharacters

    def update(self):
        if (mousePressed):
            if (self.button.positionIsOnButton(mouseX, mouseY)):
                self.selected = True
            else:
                self.selected = False

        if (self.selected and keyPressed
                and CODED):  #CODED: heeft het gedrukte toets een keycode?
            currentKey = str(key)

            if (
                    currentKey != self.previousKey
            ):  #You need to release it if you want to use the same key again
                if (currentKey == str(ESC)):
                    self.selected = False
                if (currentKey == str(BACKSPACE)):
                    if (len(self.txt) > 0):
                        self.txt = self.txt[:-1]  #Remove the last character
                elif (self.validKey(currentKey)):
                    self.txt += currentKey  #Add an extra character

                    if (
                            len(self.txt) > self.maxCharacters
                    ):  #The amount of characters should not exceed the maxCharacters amount
                        self.txt = self.txt[0:self.maxCharacters]
            self.previousKey = currentKey
        elif (keyPressed == False):
            self.previousKey = ""

    def draw(self):
        #Text value
        space = ""
        sign = ""

        currentTime = int(time.time() * 1000)
        if (self.selected and
                currentTime % self.textCursorTime * 2 < self.textCursorTime):
            sign = self.textCursorSign
            space = " "
        if (self.txt == ""
            ):  #Weergeef de placeholder tekst als het gevulde tekst leeg is
            self.button.txt = self.placeHolder
        else:
            self.button.txt = space + self.txt + sign

        #Text & Background color
        if (self.selected):  #When selected
            self.button.bgColorCurrent = self.button.bgColorPressed
            self.button.txtColorCurrent = self.button.txtColorPressed
        elif (self.button.positionIsOnButton(mouseX, mouseY)):  #if hovering
            self.button.bgColorCurrent = self.button.bgColorHover
            self.button.txtColorCurrent = self.button.txtColorHover
        else:  #Default values
            self.button.bgColorCurrent = self.button.bgColor
            self.button.txtColorCurrent = self.button.txtColor

        self.button.draw()  #Draw the button of the textfield
コード例 #11
0
    def __init__(self):
        self.currentPage = 0
        self.toMainMenu = False
        self.pages = [
            Page(),
            Page(),
            Page(),
            Page(),
            Page(),
            Page(),
            Page(),
            Page(),
            Page()
        ]
        self.page1 = Page()
        self.page2 = Page()
        self.page3 = Page()
        self.page4 = Page()
        self.page5 = Page()
        self.page6 = Page()
        self.page7 = Page()
        self.page8 = Page()
        self.page9 = Page()
        self.pages[0].add(self.page1)
        self.pages[1].add(self.page2)
        self.pages[2].add(self.page3)
        self.pages[3].add(self.page4)
        self.pages[4].add(self.page5)
        self.pages[5].add(self.page6)
        self.pages[6].add(self.page7)
        self.pages[7].add(self.page8)
        self.pages[8].add(self.page9)

        def onBackClick(button):
            self.toMainMenu = True

        def onNextClick(button):
            self.currentPage += 1

        def onPrevClick(button):
            self.currentPage -= 1

        #page items
        self.backButton = Button(960, 900, onClick=onBackClick, txt='Terug')
        self.nextButton = Button(1200,
                                 900,
                                 onClick=onNextClick,
                                 txt='Volgende ->')
        self.prevButton = Button(720,
                                 900,
                                 onClick=onPrevClick,
                                 txt='<- Vorige')
        self.titleText = Text("Spelregels",
                              960,
                              150,
                              500,
                              100,
                              txtColor=(255, 255, 255),
                              txtSize=100)
        self.text1 = Text(
            "Voorbereiding\n\nVoordat het spel kan beginnen moet het bord worden neergelegd. Het bord bestaat uit een frame en een aantal vierkante plaatjes. De plaatjes worden willekeurig in het frame gelegd. Dit is het uiteindelijke speelveld.\n\nVervolgens worden de spelerpionnen aan een kant van het speelveld gezet. Spelers mogen zelf kiezen op welk van de 7 beginvakjes ze gaan staan. Er mag maar 1 held op 1 vakje staan. Aan de andere kant van het speelveld komen de vijandige pionnen, 1 op elk vakje. Dit is de eerste vijandengolf.\n\nAls laatst mogen er drie fabrieken naar keuze worden neergezet op het speelveld. Let op: fabrieken leveren alleen iets op als ze op een met grondstof gemarkeerd veld staan.\n\nDe grondstof- stamina- en krachtpunten kunnen via de software bijgehouden worden. Het spel begint zonder grondstoffen en elke speler krijgt 2 krachtpunten en 7 staminapunten.",
            960,
            600,
            800,
            800,
            txtSize=25)
        self.text2 = Text(
            "Spelverloop\n\nDe spelers kunnen tijdens een beurt lopen, bouwen, verbeteren en vechten. Naast deze acties kan een speler ook ervoor kiezen om niets te doen. Alle acties kunnen in 1 dag uitgevoerd worden door elke speler. De spelers kunnen deze acties alleen overdag uitvoeren.\n\nLopen\nAls een speler gaat lopen met zijn pion, kost hem of haar dit 1 staminapunt per vakje. Als een speler geen stamina meer heeft kan deze niet meer lopen. Stamina kan worden bijgevuld door 1 eenheid graan te gebruiken uit de grondstoffen. (1 eenheid graan = 1 staminapunt)\n\nBouwen\nEen speler kan ervoor kiezen om 1 van de volgende dingen te bouwen: Fabriek, Muur, Brug, Straat, Warenhuis of Markt. Een gebouw kan alleen gebouwd worden op het vakje waar de bouwende speler op staat, met als uitzondering de Brug, die alleen op een watervak naast de bouwende speler gebouwd kan worden. Sommige gebouwen hebben meerdere soorten (tiers): Hout (goud), steen (zwart) of staal (blauw).",
            960,
            600,
            800,
            800,
            txtSize=25)
        self.text3 = Text(
            "Gebouwen\n\nFabriek\nEen fabriek zorgt voor grondstoffen. Er zijn twee verschillende soorten fabriek: een high tier fabriek en een low tier fabriek. Deze fabrieken leveren het volgende op:\nGraan\nLow tier - 1 keer het aantal spelers per dag\nHigh tier - 2 keer het aantal spelers per dag\nHout\nLow tier - 3 per 2 dagen\nHigh tier - 3 per dag\nSteen\nLow tier - 2 per 2 dagen\nHigh tier - 2 per dag\nStaal\nLow tier - 1 per 2 dagen\nHigh tier - 1 per dag\n\nEen low tier fabriek kost 2 hout en 1 steen. De vijand kan deze in 2 beurten vernietigen.\nEen high tier fabriek kost 3 hout, 2 steen en 1 staal. De vijand kan deze in 4 beurten vernietigen.\nDe fabrieken produceren de grondstof van het vakje waar ze op staan.\nJe kunt een fabriek verbeteren (ombouwen van low tier tot high tier) met 1 hout, 1 steen en 2 staal.",
            960,
            600,
            8000,
            800,
            txtSize=25)
        self.text4 = Text(
            "Gebouwen\n\nMuur\nEen muur kan gebouwd worden om vijanden tijdelijk tegen te houden. Er zijn houten, stenen en stalen muren. De kosten van de muur is 1 eenheid van de grondstof waar deze van wordt gebouwd. Een houten muur zorgt ervoor dat de vijand 1 beurt langer op het huidige vakje blijft, een stenen muur doet dit voor 2 beurten en een stalen muur 3 beurten. Wanneer deze beurten voorbij zijn, wordt de muur vernietigd. Een muur kan afgebroken worden, dit kost hetzelfde als een muur bouwen.\n\nBrug\nEen brug kan gebouwd worden om watervlakken over te kunnen steken. Een brug kost 2 van de desbetreffende grondstoffen. Er zijn houten, stenen en stalen bruggen. Een houten brug kan 2 keer gebruikt worden, een stenen brug 4 keer en een stalen brug 8 keer. Vijanden kunnen ook gebruik maken van de bruggen. Deze kan dan in 1 keer over een vakje water. Als een vijand over de brug gaat telt dit als 1 keer gebruikt. Nadat een brug is opgebruikt stort deze in. Een brug kan afgebroken worden, dit kost 1 eenheid van de desbetreffende grondstof.",
            960,
            600,
            800,
            800,
            txtSize=25)
        self.text5 = Text(
            "Gebouwen\n\nStraat\nEen straat kan gebouwd worden door 2 steen te gebruiken. Tegenstanders kunnen deze niet afbreken maar wel gebruiken. Als een speler over een vakje met een straat loopt kost dit geen stamina. Het afbreken van een straat kost 1 steen.\n\nWarenhuis\nEen warenhuis kan gebouwd worden om het aantal grondstoffen dat de spelers tegelijk in het bezit kan hebben te vergroten. Een warenhuis kan gebouwd worden door 3 hout te gebruiken. Een warenhuis kan verbeterd worden om meer voorwerpen vast te kunnen houden, dit kost 3 steen voor de eerste upgrade, en 3 staal voor de tweede upgrade. Aan het begin van het spel kunnen de spelers 10 grondstoffen bezitten. Een houten warenhuis heeft plaats voor 6 extra grondstoffen, een stenen warenhuis heeft plaats voor 10 extra grondstoffen, en een stalen warenhuis voor 14. Warenhuizen kunnen worden afgebroken met 2 eenheden van de grondstof waar ze van zijn gebouwd.\n\nMarkt\nEen markt kan gebouwd worden om effectkaarten en rugzakken te kopen. Een effectkaart kost 3 graan en een rugzak kost 3 steen. Een rugzak vergroot het aantal grondstoffen dat gehouden kan worden met 3. Er kan maar 1 rugzak worden gekocht. Met de markt kunnen 3 dezelfde grondstoffen geruild worden voor 1 andere grondstof. Een krachtpunt kan hier gekocht worden van 3 van elke grondstof. Een vijand heeft 3 beurten nodig om een markt te vernietigen.",
            960,
            600,
            1100,
            800,
            txtSize=25)
        self.text6 = Text(
            "Vechten\n\nAls een speler op hetzelfde vakje staat als een vijand kan de speler kiezen om aan te vallen. Spelers kunnen niet worden aangevallen door vijanden.\nBij het aanvallen worden dobbelstenen gebruikt om te bepalen wie er wint. De speler gooit 2 dobbelstenen. Een andere speler gooit voor de vijand. Het aantal dobbelstenen en krachtpunten wordt bepaald door de tier van de vijand. Als er gegooid is, wordt het hoogste aantal gegooide ogen opgeteld bij de krachtpunten. Wie dan het meeste punten heeft wint het gevecht. Je kunt ook met meerdere spelers 1 vijand aanvallen. In dat geval worden alle totale punten van de spelers bij elkaar opgeteld.\nIn de software kun je gebruikmaken van een automatisch gevechtssysteem.\n\nEr zijn vier verschillende tiers vijanden: Low-tier heeft 1 krachtpunt en 2 dobbelstenen, Mid-tier heeft 2 krachtpunten en 2 dobbelstenen, High tier heeft 4 krachtpunten en 3 dobbelstenen, en de eindbaas. De eindbaas heeft bij 2 spelers 6 krachtpunten, bij 3 spelers 12 en bij 4 spelers 18, gooit altijd met 3 dobbelstenen, en zet twee stappen per nacht.\n\nAls je een gevecht wint, krijg je een overwinningspunt. Deze punten bepalen welke vijanden op welk moment in het spel komen. Op de volgende pagina staat welke tier op welke plaats in het spel komt. Wanneer er vijf, tien, vijftien of twintig overwinningspunten behaald zijn begint er meteen een nieuwe golf. Alle nog levende vijanden blijven in het veld, met als uitzondering de eindbaasgolf, waarbij de nog levende vijanden uit het spel verwijderd worden.",
            960,
            600,
            1000,
            800,
            txtSize=25)
        self.text7 = Text(
            "Vechten\n\nVijandengolven:\n[L = Low-tier, M = Mid-tier, H = High-tier, E = Eindbaas]\nVanaf 0 overwinningspunten (begin van het spel):\nL, L, L, L, L, L, L\n\nVanaf 5 overwinningspunten:\nL, L, M, M, M, L, L\n\nVanaf 10 overwinningspunten:\nM, M, H, H, H, M, M\n\nVanaf 15 overwinningspunten:\nH, H, H, H, H, H, H\n\nVanaf 20 overwinningspunten:\n-, -, -, E, -, -, -",
            960,
            600,
            800,
            800,
            txtSize=25)
        self.text8 = Text(
            "Vechten\n\nGewonnen?\nDe vijand is verslagen en wordt uit het spel gehaald. De speler gooit 1 dobbelsteen. Als 5 of 6 wordt gegooid krijgt de speler een extra krachtpunt, anders gebeurt er niets. Elke vijand is 1 overwinningspunt waard.\n\nVerloren?\nDe speler is verslagen en verliest een krachtpunt. Als de speler geen krachtpunten meer heeft mag deze niet meer meedoen voor 3 dagen. Daarna begint deze aan het begin van het bord (bij het kasteel). De vijand blijft op het bord maar beweegt niet voor 1 nacht.\n\nGelijkspel?\nEr gebeurt niets en de speler kan opnieuw gooien of stoppen met de aanval.",
            960,
            600,
            800,
            800,
            txtSize=25)
        self.text9 = Text(
            "Spelverloop\n\nNacht\nAls iedere speler aan de beurt geweest is, is de dag voorbij en begint de nacht. In de nacht kunnen spelers geen acties meer uitvoeren en worden de volgende stappen ondernomen:\n1. Vijanden bewegen allemaal 1 stap naar voren.\n2. Er wordt een actiekaart gepakt en deze wordt uitgevoerd.\n3. De spelers krijgen grondstoffen.\n\nAfloop\nAls de spelers 20 overwinningspunten hebben bemachtigd worden alle vijanden van het bord gehaald en wordt de eindbaas op het bord gezet. Als de eindbaas verslagen is is het spel voorbij en hebben de spelers gewonnen.\nHet spel is verloren wanneer er 3 of meer reguliere (low- mid- of high-tier) vijanden het kasteel binnen zijn gedrongen. Het spel eindigt ook in verlies voor de spelers wanneer de eindbaas het kasteel bereikt.",
            960,
            600,
            800,
            800,
            txtSize=25)
        #to add items
        for self.x in range(0, 9):
            self.pages[self.x].add(self.titleText)
            self.pages[self.x].add(self.backButton)
            if self.x != 8:
                self.pages[self.x].add(self.nextButton)
            if self.x != 0:
                self.pages[self.x].add(self.prevButton)
        self.pages[0].add(self.text1)
        self.pages[1].add(self.text2)
        self.pages[2].add(self.text3)
        self.pages[3].add(self.text4)
        self.pages[4].add(self.text5)
        self.pages[5].add(self.text6)
        self.pages[6].add(self.text7)
        self.pages[7].add(self.text8)
        self.pages[8].add(self.text9)
コード例 #12
0
class Board:
    def __init__(self):
        def onDrawBoardClick(button):
            self.boardSetup()
            self.draw_board()

        self.button = Button(300,
                             600,
                             txt="Nieuw Bord",
                             bgColor=(255, 255, 255),
                             onClick=onDrawBoardClick,
                             w=350,
                             h=60)

        def onBackButtonClick(button):
            self.goToMainMenu = True

        self.goToMainMenu = False
        self.backButton = Button(700,
                                 600,
                                 txt="Terug",
                                 onClick=onBackButtonClick)

    def boardSetup(self):
        self.board = []
        self.wood = loadImage('Hout.jpg')
        self.stone = loadImage('Stone.jpg')
        self.metal = loadImage('Metaal.jpg')
        self.water = loadImage('Water.jpg')
        self.grain = loadImage('Graan.png')
        self.empty = loadImage('empty_wood.jpg')
        for n in range(5):
            self.board.append(self.wood)
            self.board.append(self.stone)
            self.board.append(self.metal)
            self.board.append(self.grain)
        for n in range(48):
            self.board.append(self.empty)
        for n in range(23):
            self.board.append(self.water)

    def draw_board(self):
        self.amount_pieces = 0
        self.amount_rows = 0
        self.piece_x = 180
        self.piece_y = -50

        def row(self, amount_pieces, piece_x, piece_y):
            while self.amount_pieces < 13:
                self.piece = random.choice(self.board)
                self.piece.resize(
                    75, 75
                )  #Make them smaller so all the pieces can be displayed on the window
                image(self.piece, self.piece_x, self.piece_y)
                self.piece_x += 75
                self.amount_pieces += 1
                self.board.remove(self.piece)

        while self.amount_rows < 7:
            self.amount_pieces = 0
            self.piece_y += 75
            self.piece_x = 12
            row(self, self.amount_pieces, self.piece_x, self.piece_y)
            self.amount_rows += 1

    def setup(self):
        #fullScreen()
        #self.font=loadFont('BlackChancery-48.vlw')

        self.font = loadFont('BlackChancery.vlw')

        self.img = loadImage('TITLESCREEN2.png')
        # background(255,165,0)
        self.img.resize(1000, 726)  #resize to the size of the screen

        self.boardSetup()

    def drawOnce(self):
        #background(self.img)
        textFont(self.font)

    def draw(self):
        # if self.board==[]:
        #     self.boardSetup()
        self.button.update()
        self.backButton.update()
        self.button.draw()
        self.backButton.draw()
コード例 #13
0
    def __init__(self):
        def onInventoryClick(button):
            self.phase = AppPhase.INVENTORY

        def onBattleSystemClick(button):
            self.phase = AppPhase.BATTLESYSTEM

        def onBoardRandomizerClick(button):
            self.phase = AppPhase.BOARD_RANDOMIZER

        def onGameManualClick(button):
            self.phase = AppPhase.RULEBOOK

        def onCreditsClick(button):
            self.phase = AppPhase.CREDITS

        def onPlayernameClick(button):
            self.phase = AppPhase.PLAYERNAMES

        def onMarketClick(button):
            self.phase = AppPhase.MARKET

        def onSpelverloopClick(button):
            self.phase = AppPhase.SPELVERLOOP

        buttonX = 960
        buttonY = 250
        buttonMarginY = 70
        buttonTemplate = Button(buttonX, buttonY, w=260, radius=3)

        self.page.add(
            Text("Hoofdmenu",
                 960,
                 150,
                 500,
                 100,
                 txtColor=(255, 255, 255),
                 txtSize=100))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 1,
                                onClick=onInventoryClick,
                                txt="Inventaris"))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 2,
                                onClick=onBattleSystemClick,
                                txt="Gevecht"))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 6,
                                onClick=onBoardRandomizerClick,
                                txt="Bord randomizer"))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 4,
                                onClick=onGameManualClick,
                                txt="Spelregels"))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 7,
                                onClick=onCreditsClick,
                                txt="Credits"))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 5,
                                onClick=onPlayernameClick,
                                txt='Spelernamen'))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 3,
                                onClick=onMarketClick,
                                txt='Markt'))
        self.page.add(
            buttonTemplate.copy(y=buttonY + buttonMarginY * 0,
                                onClick=onSpelverloopClick,
                                txt='Spelverloop'))
コード例 #14
0
    def __init__(self, Names):
        self.Names = Names

        def onBackButtonClick(button):
            self.goToMainMenu = True

        self.goToMainMenu = False
        self.backButton = Button(1000,
                                 300,
                                 txt="Terug",
                                 onClick=onBackButtonClick)
        self.effect10 = False
        self.wood = 0
        self.brick = 0
        self.metal = 0
        self.grain = 0
        self.stamina1 = 7
        self.stamina2 = 7
        self.stamina3 = 7
        self.stamina4 = 7
        self.win_points = 0
        self.capacity = 10
        self.power1 = 2
        self.power2 = 2
        self.power3 = 2
        self.power4 = 2
        self.days = 0
        self.bagcount = False
        self.newdeck = False
        self.action11chosen = False
        self.actionbagcap = False
        self.w = 1920
        self.h = 1080
        self.buttons2 = [
            Button(330, 100, txt="+", onClick=self.addition_wood, w=100, h=50),
            Button(100, 100, txt="-", onClick=self.sub_wood, w=100, h=50),
            Button(330, 250, txt="+", onClick=self.addition_brick, w=100,
                   h=50),
            Button(100, 250, txt="-", onClick=self.sub_brick, w=100, h=50),
            Button(330, 400, txt="+", onClick=self.addition_metal, w=100,
                   h=50),
            Button(100, 400, txt="-", onClick=self.sub_metal, w=100, h=50),
            Button(330, 550, txt="+", onClick=self.addition_grain, w=100,
                   h=50),
            Button(100, 550, txt="-", onClick=self.sub_grain, w=100, h=50),
            Button(730,
                   100,
                   txt="+",
                   onClick=self.addition_stamina1,
                   w=100,
                   h=50),
            Button(500, 100, txt="-", onClick=self.sub_stamina1, w=100, h=50),
            Button(730,
                   250,
                   txt="+",
                   onClick=self.addition_stamina2,
                   w=100,
                   h=50),
            Button(500, 250, txt="-", onClick=self.sub_stamina2, w=100, h=50),
            Button(730,
                   400,
                   txt="+",
                   onClick=self.addition_stamina3,
                   w=100,
                   h=50),
            Button(500, 400, txt="-", onClick=self.sub_stamina3, w=100, h=50),
            Button(730,
                   550,
                   txt="+",
                   onClick=self.addition_stamina4,
                   w=100,
                   h=50),
            Button(500, 550, txt="-", onClick=self.sub_stamina4, w=100, h=50),
            #Button(730, 670, txt="+", onClick =self.addition_winning, w = 100, h = 50),
            Button(330,
                   670,
                   txt="+",
                   onClick=self.addition_capacity,
                   w=100,
                   h=50),
            Button(100, 670, txt="-", onClick=self.sub_capacity, w=100, h=50),
            #Button(500, 670, txt="-", onClick =self.sub_winning, w = 100, h = 50),
            Button(1000,
                   100,
                   txt="Dag voorbij",
                   onClick=self.playersdone,
                   w=300,
                   h=50),
            Button(1000,
                   200,
                   txt="reset",
                   onClick=self.another_card,
                   w=300,
                   h=50),
            Button(330, 790, txt="+", onClick=self.powerup1, w=100, h=50),
            Button(100, 790, txt="-", onClick=self.powerdown1, w=100, h=50),
            Button(330, 890, txt="+", onClick=self.powerup3, w=100, h=50),
            Button(100, 890, txt="-", onClick=self.powerdown3, w=100, h=50),
            Button(730, 790, txt="+", onClick=self.powerup2, w=100, h=50),
            Button(500, 790, txt="-", onClick=self.powerdown2, w=100, h=50),
            Button(730, 890, txt="+", onClick=self.powerup4, w=100, h=50),
            Button(500, 890, txt="-", onClick=self.powerdown4, w=100, h=50)
        ]
コード例 #15
0
class tellers:
    def __init__(self, Names):
        self.Names = Names

        def onBackButtonClick(button):
            self.goToMainMenu = True

        self.goToMainMenu = False
        self.backButton = Button(1000,
                                 300,
                                 txt="Terug",
                                 onClick=onBackButtonClick)
        self.effect10 = False
        self.wood = 0
        self.brick = 0
        self.metal = 0
        self.grain = 0
        self.stamina1 = 7
        self.stamina2 = 7
        self.stamina3 = 7
        self.stamina4 = 7
        self.win_points = 0
        self.capacity = 10
        self.power1 = 2
        self.power2 = 2
        self.power3 = 2
        self.power4 = 2
        self.days = 0
        self.bagcount = False
        self.newdeck = False
        self.action11chosen = False
        self.actionbagcap = False
        self.w = 1920
        self.h = 1080
        self.buttons2 = [
            Button(330, 100, txt="+", onClick=self.addition_wood, w=100, h=50),
            Button(100, 100, txt="-", onClick=self.sub_wood, w=100, h=50),
            Button(330, 250, txt="+", onClick=self.addition_brick, w=100,
                   h=50),
            Button(100, 250, txt="-", onClick=self.sub_brick, w=100, h=50),
            Button(330, 400, txt="+", onClick=self.addition_metal, w=100,
                   h=50),
            Button(100, 400, txt="-", onClick=self.sub_metal, w=100, h=50),
            Button(330, 550, txt="+", onClick=self.addition_grain, w=100,
                   h=50),
            Button(100, 550, txt="-", onClick=self.sub_grain, w=100, h=50),
            Button(730,
                   100,
                   txt="+",
                   onClick=self.addition_stamina1,
                   w=100,
                   h=50),
            Button(500, 100, txt="-", onClick=self.sub_stamina1, w=100, h=50),
            Button(730,
                   250,
                   txt="+",
                   onClick=self.addition_stamina2,
                   w=100,
                   h=50),
            Button(500, 250, txt="-", onClick=self.sub_stamina2, w=100, h=50),
            Button(730,
                   400,
                   txt="+",
                   onClick=self.addition_stamina3,
                   w=100,
                   h=50),
            Button(500, 400, txt="-", onClick=self.sub_stamina3, w=100, h=50),
            Button(730,
                   550,
                   txt="+",
                   onClick=self.addition_stamina4,
                   w=100,
                   h=50),
            Button(500, 550, txt="-", onClick=self.sub_stamina4, w=100, h=50),
            #Button(730, 670, txt="+", onClick =self.addition_winning, w = 100, h = 50),
            Button(330,
                   670,
                   txt="+",
                   onClick=self.addition_capacity,
                   w=100,
                   h=50),
            Button(100, 670, txt="-", onClick=self.sub_capacity, w=100, h=50),
            #Button(500, 670, txt="-", onClick =self.sub_winning, w = 100, h = 50),
            Button(1000,
                   100,
                   txt="Dag voorbij",
                   onClick=self.playersdone,
                   w=300,
                   h=50),
            Button(1000,
                   200,
                   txt="reset",
                   onClick=self.another_card,
                   w=300,
                   h=50),
            Button(330, 790, txt="+", onClick=self.powerup1, w=100, h=50),
            Button(100, 790, txt="-", onClick=self.powerdown1, w=100, h=50),
            Button(330, 890, txt="+", onClick=self.powerup3, w=100, h=50),
            Button(100, 890, txt="-", onClick=self.powerdown3, w=100, h=50),
            Button(730, 790, txt="+", onClick=self.powerup2, w=100, h=50),
            Button(500, 790, txt="-", onClick=self.powerdown2, w=100, h=50),
            Button(730, 890, txt="+", onClick=self.powerup4, w=100, h=50),
            Button(500, 890, txt="-", onClick=self.powerdown4, w=100, h=50)
        ]

    def powerup1(self, self1):
        self.power1 += 1

    def powerdown1(self, self1):
        if self.power1 > 0:
            self.power1 -= 1

    def powerup2(self, self1):
        self.power2 += 1

    def powerdown2(self, self1):
        if self.power2 > 0:
            self.power2 -= 1

    def powerup3(self, self1):
        self.power3 += 1

    def powerdown3(self, self1):
        if self.power3 > 0:
            self.power3 -= 1

    def powerup4(self, self1):
        self.power4 += 1

    def powerdown4(self, self1):
        if self.power4 > 0:
            self.power4 -= 1

    def addition_winning(self, self1):

        if self.win_points < 20:
            self.win_points += 1

    def sub_winning(self, self1):

        if self.win_points > 0:
            self.win_points -= 1

    def addition_capacity(self, self1):

        self.capacity += 1

    def sub_capacity(self, self1):

        if self.capacity > 10 and self.capacity != self.brick + self.metal + self.wood + self.grain:
            self.capacity -= 1

    def addition_stamina1(self, self1):

        self.stamina1 += 1

    def sub_stamina1(self, self1):

        if self.stamina1 > 0:
            self.stamina1 -= 1

    def addition_stamina2(self, self1):

        self.stamina2 += 1

    def sub_stamina2(self, self1):
        if self.stamina2 > 0:
            self.stamina2 -= 1

    def addition_stamina3(self, self1):
        self.stamina3 += 1

    def sub_stamina3(self, self1):

        if self.stamina3 > 0:
            self.stamina3 -= 1

    def addition_stamina4(self, self1):
        self.stamina4 += 1

    def sub_stamina4(self, self1):
        if self.stamina4 > 0:
            self.stamina4 -= 1

    def addition_wood(self, self1):
        if (self.wood + self.metal + self.brick +
                self.grain) < (self.capacity):
            self.wood += 1

    def sub_wood(self, self1):
        if self.wood > 1:
            self.wood -= 1
        else:
            self.wood = 0

    def addition_brick(self, self1):
        if (self.wood + self.metal + self.brick +
                self.grain) < (self.capacity):
            self.brick += 1

    def sub_brick(self, self1):
        if self.brick > 1:
            self.brick -= 1
        else:
            self.brick = 0

    def addition_metal(self, self1):
        if (self.wood + self.metal + self.brick +
                self.grain) < (self.capacity):
            self.metal += 1

    def sub_metal(self, self1):
        if self.metal > 1:
            self.metal -= 1
        else:
            self.metal = 0

    def addition_grain(self, self1):
        if (self.wood + self.metal + self.brick +
                self.grain) < (self.capacity):
            self.grain += 1

    def sub_grain(self, self1):
        if self.grain > 1:
            self.grain -= 1
        else:
            self.grain = 0

    def playersdone(self, self1):
        self.players_done = True
        if self.effect10:
            self.days += 0
        else:
            self.days += 1
            self.effect10 = False
        return self.players_done

    def action_card(self):
        self.clicked = 0
        if self.players_done:
            image(self.card, 1203, 83)
            self.buttons2[18].enabled = False
            if self.card == self.action11 and self.newdeck == False:
                self.action11chosen = True
                self.actionbagcap = True

    def another_card(self, self1):
        global card
        global players_done
        global clicked
        global buttons2
        self.players_done = False
        self.clicked += 1
        self.card = random.choice(self.action_cards)
        self.action_cards.remove(self.card)
        self.buttons2[18].enabled = True
        self.effect10 = False
        if self.actionbagcap:
            self.capacity += 5
            self.actionbagcap = False
        if self.clicked == 1:
            redraw()

    def winning(self, self1):
        global win_count
        global player_win
        if self.player_win:
            win_count += 1

    def setup(self):
        global players_done
        global action_cards
        global card
        global players_done
        global clicked
        global action11
        self.img = loadImage("BG.png")
        self.bag = loadImage("bag.png")
        self.players_done = False
        self.clicked = 0
        self.action11 = loadImage('actiekaart11.png')
        self.action_cards = [self.action11]
        for self.i in range(1, 21):
            self.filename = "actiekaart" + str(self.i) + ".png"
            if self.i != 10 and self.i != 11:
                self.action_cards.append(loadImage(self.filename))
        self.card = random.choice(self.action_cards)
        self.action_cards.remove(self.card)

    def draw(self):
        self.player1 = self.Names[0]
        self.p1_display = 'Stamina ' + str(self.player1)
        self.player2 = self.Names[1]
        self.p2_display = 'Stamina ' + str(self.player2)
        self.player3 = self.Names[2]
        self.p3_display = 'Stamina ' + str(self.player3)
        self.player4 = self.Names[3]
        self.p4_display = 'Stamina ' + str(self.player4)
        if self.action_cards == []:
            self.newdeck = True
            for self.i in range(1, 21):
                self.filename = "actiekaart" + str(self.i) + ".png"
                if self.i != 10 and self.i != 11:
                    self.action_cards.append(loadImage(self.filename))
        image(self.img, 0, 0)
        if self.bagcount:
            image(self.bag, 850, 450)
        if self.action11chosen:
            image(self.bag, 1000, 450)
        noFill()
        rect(1200, 80, 305, 342, 5)
        fill(0)
        text('Actie kaart', 1350, 20)
        text('HOUT', 220, 20)
        text(str(self.wood), 220, 80)
        text('STEEN', 220, 170)
        text(str(self.brick), 220, 230)
        text('IJZER', 220, 320)
        text(str(self.metal), 220, 380)
        text('GRAAN', 220, 480)
        text(str(self.grain), 220, 530)
        text(str(self.p1_display), 620, 20)
        text(str(self.stamina1), 620, 80)
        text(str(self.p2_display), 620, 170)
        text(str(self.stamina2), 620, 230)
        text(str(self.p3_display), 620, 320)
        text(str(self.stamina3), 620, 380)
        text(str(self.p4_display), 620, 480)
        text(str(self.stamina4), 620, 530)
        text('Overwinningspunten', 620, 600)
        text(str(self.win_points), 620, 650)
        text('Opslag Capaciteit', 220, 600)
        text(str(self.capacity), 220, 650)
        text(str(self.power1), 220, 780)
        text('KrachtPunten ' + str(self.player1), 215, 720)
        text(str(self.power3), 220, 880)
        text('KrachtPunten ' + str(self.player2), 215, 825)
        text(str(self.power2), 620, 780)
        text('KrachtPunten ' + str(self.player3), 615, 720)
        text(str(self.power4), 620, 880)
        text('KrachtPunten ' + str(self.player4), 615, 825)
        if self.buttons2[18].enabled == True:
            self.buttons2[19].enabled = False
        else:
            self.buttons2[19].enabled = True
        self.action_card()

        for button in self.buttons2:
            button.update()
            button.draw()
            button.update()

        self.backButton.update()
        self.backButton.draw()