Exemplo n.º 1
0
def GUI_getPlayUntil(keyMapping):
    setupPromptOne = GUI()

    promptText = TextObject("prompt", "Play Until", 350, 25)
    elevenText = TextObject("eleven", "11", 200, 125, 100)
    twentyoneText = TextObject("twentyone", "21", 500, 125, 100)
    lshoulderText = TextObject("lshoulder", "-->", 500, 225, 125)
    rshoulderText = TextObject("rshoulder", "<--", 200, 225, 125)

    setupPromptOne.addGUIObject(promptText)
    setupPromptOne.addGUIObject(elevenText)
    setupPromptOne.addGUIObject(twentyoneText)
    setupPromptOne.addGUIObject(rshoulderText)
    setupPromptOne.addGUIObject(lshoulderText)
    setupPromptOne.setupGUI()

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                running = False
                pygame.quit()
                break
            if event.type == pygame.JOYBUTTONDOWN:
                button = parseButton(event)
                if button in keyMapping and keyMapping[button] is not None:
                    keyMapping[button](event)
                    running = False
                    break

        pygame.display.update()
        setupPromptOne.update()
        setupPromptOne.draw()
        setupPromptOne.clock.tick(30)

    setupPromptOne.objects = []
Exemplo n.º 2
0
def GUI_gameOver(keyMapping, winner, score):
    setupGUI = GUI()

    winPrompt = winner + " wins!"

    winnerText = TextObject("winner", winPrompt, 350, 0, 75)
    promptText = TextObject("prompt", "Play Again?", 350, 125)
    elevenText = TextObject("left", "Yes", 200, 200, 75)
    twentyoneText = TextObject("right", "No", 500, 200, 75)
    rshoulderText = TextObject("rshoulder", "-->", 500, 275, 100)
    lshoulderText = TextObject("lshoulder", "<--", 200, 275, 100)

    setupGUI.addGUIObject(winnerText)
    setupGUI.addGUIObject(promptText)
    setupGUI.addGUIObject(elevenText)
    setupGUI.addGUIObject(twentyoneText)
    setupGUI.addGUIObject(rshoulderText)
    setupGUI.addGUIObject(lshoulderText)
    setupGUI.setupGUI()

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.JOYBUTTONDOWN:
                button = parseButton(event)
                if button in keyMapping and keyMapping[button] is not None:
                    keyMapping[button](event)
                    running = False
                    break

        pygame.display.update()
        setupGUI.update()
        setupGUI.draw()
        setupGUI.clock.tick(30)

    setupGUI.objects = []
Exemplo n.º 3
0
import os
import json
from splitText import SplitText
from textObject import TextObject

resultFolder = 'C:\\Users\\trace\\projects\\python\\masters\\informationPull\\pdata\\results'
patternFolder = 'C:\\Users\\trace\\projects\\python\\masters\\informationPull\\pdata\\patternNeural'
tt = TextObject()
nameListNeural = [
                        'Value',
                        'Pattern Grammar',
                        'Pattern Sentence',
                        'Article Grammar',
                        'Article Sentence',
                        'Compared'
                    ]
nameListTree = [    
                    'Article Sentence',
                    'Short Sentence',
                    'Reduced Sentence'
                    ]
nameListRegex = [
                    'Article Sentence',
                    'Reduced Sentence',
                    'Regex Matched'
                    ]
    
endName = 'END:'

nameListPattern = [
                        'FS',
Exemplo n.º 4
0
class Game(object):
    def __init__(self, caption, width, height, frame_rate):
        self.frameRate = frame_rate
        self.gameOver = False
        self.objects = []
        self.steps = []
        self.step = 0
        self.pause = False
        self.startUp = True
        self.awaitChoise = False
        self.choisePause = False

        pygame.mixer.pre_init(44100, 16, 2, 40960)
        pygame.init()
        pygame.font.init()
        pygame.mixer.init()
        self.font = pygame.font.Font('res/fonts/16643.otf', 32)
        self.surface = pygame.display.set_mode((width, height), SRCALPHA)
        pygame.display.set_caption(caption)
        self.clock = pygame.time.Clock()
        self.keydown_handlers = defaultdict(list)
        self.keyup_handlers = defaultdict(list)
        self.mouse_handlers = []

    def update(self):
        for obj in self.objects:
            obj.update()

    def draw(self, passed='None'):
        for obj in self.objects:
            if obj.name == passed or obj.name in passed:
                pass
            else:
                obj.draw(self.surface)

    def handle_events(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
            elif event.type == pygame.KEYUP:
                pass
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE and not self.awaitChoise:
                    self.pause = False
                elif event.key == pygame.K_1 and self.awaitChoise:
                    self.awaitChoise = False
                    if '|' in self.choises[0]:
                        self.gameOver = True
                        self.choiseHandler(self.choises[0])
                    else:
                        self.choiseHandler(self.choises[0])
                elif event.key == pygame.K_2 and self.awaitChoise:
                    self.awaitChoise = False
                    if '|' in self.choises[1]:
                        self.gameOver = True
                        self.choiseHandler(self.choises[1])
                    else:
                        self.choiseHandler(self.choises[1])
                else:
                    pass
            elif event.type in (pygame.MOUSEBUTTONDOWN,
                                pygame.MOUSEBUTTONUP,
                                pygame.MOUSEMOTION):
                for handler in self.mouse_handlers:
                    handler(event.type, event.pos)

    def uploadInstructions(self):
        with open('instructions.txt', 'r', encoding='utf-8') as instructions:
            self.rawSteps = instructions

    def createTextWindow(self):
        self.textWindow = TextWindow('res/img/dialog.png')
        self.objects.append(self.textWindow)

    def createArrow(self, img, pos=cfg.arrowPos):
        self.arrow = PopUpObject(img, pos)
        self.objects.append(self.arrow)

    def createBackground(self, img):
        self.background = BackGround(img)
        self.objects.append(self.background)

    def createTextObject(self, text):
        self.textObject = TextObject(text, self.surface)
        self.objects.append(self.textObject)

    def createNameObject1(self, text, name):
        self.nameObject1 = NameObject(text, self.surface, (150, 468), name)
        self.objects.append(self.nameObject1)

    def createNameObject2(self, text, name):
        self.nameObject2 = NameObject(text, self.surface, (900, 468), name)
        self.objects.append(self.nameObject2)

    def createPerson1(self, img, pos):
        self.person1 = PopUpObject(img, pos)
        self.objects.append(self.person1)

    def createPerson2(self, img, pos):
        self.person2 = PopUpObject(img, pos)
        self.objects.append(self.person2)

    def createPopUp1(self, img, pos):
        self.popUp1 = PopUpObject(img, pos)
        self.objects.append(self.popUp1)

    def createPopUp2(self, img, pos):
        self.popUp2 = PopUpObject(img, pos)
        self.objects.append(self.popUp2)

    def getReady(self):
        self.uploadInstructions()
        self.createBackground('res/img/none.png')
        self.createPopUp1('res/img/none.png', cfg.popUp1Pos)
        self.createPopUp2('res/img/none.png', cfg.popUp2pos)
        self.createPerson1('res/img/none.png', cfg.hero1Pos)
        self.createPerson2('res/img/none.png', cfg.hero2Pos)
        self.createTextWindow()
        self.createArrow('res/img/none.png')
        self.createTextObject('')
        self.createNameObject1('', 'name1')
        self.createNameObject2('', 'name2')
        # self.alert = pygame.mixer.Sound('res/soundFX/Alert.wav')
        # self.alert.set_volume(0.5)
        # self.bubbl = pygame.mixer.Sound('res/soundFX/bubbling_brook.wav')
        # self.bubbl.set_volume(0.5)
        # self.crowd = pygame.mixer.Sound('res/soundFX/crowd_outside.wav')
        # self.crowd.set_volume(0.5)

    def menu(self):
        self.surface.blit(pygame.image.load('res/img/menu.png')
                          .convert_alpha(), (0, 0))
        pygame.display.update()
        self.advance = 0
        for sign in 'Нажмите пробел для продолжения':
            self.textSurface = pygame.Surface((1280, 720), SRCALPHA)
            self.signSurface = self.font.render(sign, True,
                                                (228, 228, 228))
            self.textSurface.blit(self.signSurface,
                                  (200 + self.advance, 20))
            self.surface.blit(self.textSurface, (0, 0))
            pygame.display.update()
            pygame.time.delay(3)
            self.advance += self.font.metrics(sign)[0][4]
        pygame.mixer.music.load('res/music/Main Menu OST.mp3')
        pygame.mixer.music.set_volume(0.3)
        pygame.mixer.music.play(-1)

        while self.startUp:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_SPACE:
                        self.startUp = False

    def gameOverLogo(self):
        pygame.mixer.music.load('res/music/Outro OST.mp3')
        pygame.mixer.music.set_volume(0.3)
        pygame.mixer.music.play()
        while True:
            self.surface.blit(pygame.image.load('res/img/scene-12.0.png')
                              .convert_alpha(), (0, 0))
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()

    def handleFX(self, fx, cmd):
        if fx == 'alert':
            if cmd == 'stop':
                self.alert.fadeout(500)
            elif cmd == 'play':
                self.alert = pygame.mixer.Sound('res/soundFX/Alert.wav')
                self.alert.set_volume(0.5)
                self.alert.play()
        elif fx == 'bubbl':
            if cmd == 'stop':
                self.bubbl.fadeout(500)
            elif cmd == 'play':
                self.bubbl = pygame.mixer.\
                             Sound('res/soundFX/bubbling.wav')
                self.bubbl.set_volume(0.5)
                self.bubbl.play()
        elif fx == 'crowd':
            if cmd == 'stop':
                self.crowd.fadeout(500)
            elif cmd == 'play':
                self.crowd = pygame.mixer.\
                             Sound('res/soundFX/Crowd.wav')
                self.crowd.set_volume(0.5)
                self.crowd.play()

    def choiseHandler(self, choise):
        if '@' not in choise:
            self.draw('TextObject')
            self.textObject.upload(choise.split('=')[1].strip(),
                                   self.surface)
        else:
            for el in choise.split('@'):
                splitedElements = el.split('=')
                if splitedElements[0] == 'text':
                    self.draw('TextObject')
                    self.textObject.upload(splitedElements[1].strip(),
                                           self.surface)
                elif splitedElements[0] == 'pause'\
                        and splitedElements[1].strip() == 'true':
                    self.choisePause = True
                    while self.choisePause:
                        for event in pygame.event.get():
                            if event.type == pygame.KEYDOWN:
                                if event.key == pygame.K_SPACE:
                                    self.choisePause = False
                        self.draw()
                        pygame.display.update()
                elif splitedElements[0] == 'music':
                    pass
                elif splitedElements[0] == 'FX':
                    self.handleFX(splitedElements[1].strip(), 'play')
                elif splitedElements[0] == 'FXstop':
                    self.handleFX(splitedElements[1].strip(), 'stop')
                elif splitedElements[0] == 'name1':
                    self.draw('name1')
                    self.nameObject1.upload(splitedElements[1].strip(),
                                            self.surface)
                elif splitedElements[0] == 'name2':
                    self.draw('name2')
                    self.nameObject2.upload(splitedElements[1].strip(),
                                            self.surface)
                elif splitedElements[0] == 'person1':
                    self.person1.upload(splitedElements[1].strip())
                elif splitedElements[0] == 'person2':
                    self.person2.upload(splitedElements[1].strip())
                elif splitedElements[0] == 'background':
                    self.background.upload(splitedElements[1].strip())
                elif splitedElements[0] == 'textwindow':
                    self.textWindow.upload(splitedElements[1].strip())

    def handleSteps(self):
        while not self.pause:
            if self.gameOver:
                self.gameOverLogo()
            elif self.steps[self.step][0] == 'pause'\
                    and self.steps[self.step][1].strip() == 'true':
                self.pause = True
            elif self.steps[self.step][0] == 'background':
                self.background.upload(self.steps[self.step][1].strip())
            elif self.steps[self.step][0] == 'FX':
                self.handleFX(self.steps[self.step][1].strip(),
                              'play')
            elif self.steps[self.step][0] == 'FXstop':
                self.handleFX(self.steps[self.step][1].strip(),
                              'stop')
            elif self.steps[self.step][0] == 'text':
                self.draw('TextObject')
                self.textObject.upload(self.steps[self.step][1].strip(),
                                       self.surface)
            elif self.steps[self.step][0] == 'person1':
                self.person1.upload(self.steps[self.step][1].strip())
            elif self.steps[self.step][0] == 'person2':
                self.person2.upload(self.steps[self.step][1].strip())
            elif self.steps[self.step][0] == 'name1':
                self.draw('name1')
                self.nameObject1.upload(self.steps[self.step][1], self.surface)
            elif self.steps[self.step][0] == 'name2':
                self.draw('name2')
                self.nameObject2.upload(self.steps[self.step][1], self.surface)
            elif self.steps[self.step][0] == 'choise':
                self.awaitChoise = True
                self.pause = True
                self.choises = self.steps[self.step][1].split(';')
            elif self.steps[self.step][0] == 'textwindow':
                self.textWindow.upload(self.steps[self.step][1].strip())
            elif self.steps[self.step][0] == 'popup1':
                self.parsedPopUp1 = self.steps[self.step][1].split('&')
                self.popUp1.upload(self.parsedPopUp1[0].strip())
            elif self.steps[self.step][0] == 'popup2':
                self.parsedPopUp2 = self.steps[self.step][1].split('&')
                self.popUp2.upload(self.parsedPopUp2[0].strip())
            elif self.steps[self.step][0] == 'gameover'\
                    and self.steps[self.step][1].strip() == 'true':
                self.pause = True
                self.gameOver = True
                self.gameOverLogo()
            self.step += 1

    def commandsHandler(self, delimiter=':', newLine='$'):
        self.steps = self.rawSteps.split(newLine)
        while not self.pause:
            self.buffStep = self.steps[self.step].split(delimiter)
            if self.steps[self.step] == '':
                pass
            elif self.gameOver:
                self.gameOverLogo()
            elif self.buffStep[0].strip() == 'pause':
                pass
            elif self.buffStep[0].strip() == 'gameover':
                pass
            elif self.buffStep[0].strip() == 'text':
                pass
            elif self.buffStep[0].strip() == 'background':
                pass
            elif self.buffStep[0].strip() == 'textwindow':
                pass
            elif self.buffStep[0].strip() == 'FX':
                pass
            elif self.buffStep[0].strip() == 'name1':
                pass
            elif self.buffStep[0].strip() == 'name2':
                pass
            elif self.buffStep[0].strip() == 'person1':
                pass
            elif self.buffStep[0].strip() == 'person2':
                pass
            elif self.buffStep[0].strip() == 'popup1':
                pass
            elif self.buffStep[0].strip() == 'popup2':
                pass
            elif self.buffStep[0].strip() == 'choise':
                pass

    def run(self):
        self.menu()
        self.getReady()
        while True:
            self.handle_events()
            self.update()
            self.draw()
            self.handleSteps()
            pygame.display.update()
            self.clock.tick(self.frameRate)
Exemplo n.º 5
0
 def createTextObject(self, text):
     self.textObject = TextObject(text, self.surface)
     self.objects.append(self.textObject)
Exemplo n.º 6
0
 def __init__(self, x, y, w, h, text, onClick=lambda x: None, padding=0):
     super().__init__(x, y, w, h)
     self.state = 'normal'
     self.onClick = onClick
     self.text = TextObject(x + padding, y + padding, lambda: text, c)
Exemplo n.º 7
0
class Game(object):
    def __init__(self, caption, width, height, frame_rate):
        self.frameRate = frame_rate
        self.gameOver = False
        self.objects = []
        self.steps = []
        self.step = 0
        self.pause = False
        self.startUp = True

        pygame.mixer.pre_init(44100, 16, 2, 4096)
        pygame.init()
        pygame.font.init()
        self.surface = pygame.display.set_mode((width, height), SRCALPHA)
        pygame.display.set_caption(caption)
        self.clock = pygame.time.Clock()
        self.keydown_handlers = defaultdict(list)
        self.keyup_handlers = defaultdict(list)
        self.mouse_handlers = []

    def update(self):
        for obj in self.objects:
            obj.update()

    def draw(self):
        for obj in self.objects:
            obj.draw(self.surface)

    def handle_events(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                # sys.exit()
            elif event.type == pygame.KEYUP:
                pass
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    self.pause = False
            elif event.type in (pygame.MOUSEBUTTONDOWN,
                                pygame.MOUSEBUTTONUP,
                                pygame.MOUSEMOTION):
                for handler in self.mouse_handlers:
                    handler(event.type, event.pos)

    def uploadInstructions(self):
        with open('instructions.txt', 'r') as instructions:
            for step in instructions.read().split('$')[1::]:
                self.steps.append(step.split(':'))

    def createTextWindow(self):
        self.textWindow = TextWindow()
        self.objects.append(self.textWindow)

    def createArrow(self, img='res/img/play.png', pos=(1125, 620)):
        self.arrow = PopUpObject(img, pos)
        self.objects.append(self.arrow)

    def createBackground(self, img):
        self.background = BackGround(img)
        self.objects.append(self.background)

    def createTextObject(self, text):
        self.textObject = TextObject(text, self.surface)
        self.objects.append(self.textObject)

    def getReady(self):
        self.uploadInstructions()
        self.createBackground('res/img/menu.png')
        self.createTextWindow()
        self.createArrow()
        self.createTextObject('')

    def handleSteps(self):
        while not self.pause:
            if self.steps[self.step][0] == 'pause'\
                    and self.steps[self.step][1].strip() == 'true':
                self.pause = True
            elif self.steps[self.step][0] == 'background':
                self.background.upload(self.steps[self.step][1].strip())
            elif self.steps[self.step][0] == 'music':
                self.music = self.steps[self.step][1].strip()
            elif self.steps[self.step][0] == 'text':
                for obj in self.objects[:len(self.objects) - 1:]:
                    obj.draw(self.surface)
                self.textObject.first = True
                self.textObject.upload(self.steps[self.step][1].strip(),
                                       self.surface)
            elif self.steps[self.step][0] == 'person1':
                pass
            elif self.steps[self.step][0] == 'person2':
                pass
            elif self.steps[self.step][0] == 'name1':
                pass
            elif self.steps[self.step][0] == 'name2':
                pass
            elif self.steps[self.step][0] == 'gameover'\
                    and self.steps[self.step][1].strip() == 'true':
                self.pause = True
                self.gameOver = True
            self.step += 1

    def run(self):
        while not self.gameOver:
            self.handle_events()
            self.update()
            self.draw()
            self.handleSteps()
            pygame.display.update()
            self.clock.tick(self.frameRate)
def GUI_mainLoop(firstServer, numOfServes):
    mainLoop = GUI()

    player1 = Player("player1", 0, 200, 25)
    player2 = Player("player2", 1, 500, 25)
    currentMatch = Match(player1, player2, firstServer, numOfServes, 5)
    player1.textFunc = currentMatch.getScore
    player2.textFunc = currentMatch.getScore
    
    player1ScoreStr = str(currentMatch.score['player1'])
    player2ScoreStr = str(currentMatch.score['player2'])
    
    player1Score = TextObject("scorePlayer1", player1ScoreStr, 200, 25, 100)
    player2Score = TextObject("scorePlayer2", player2ScoreStr, 500, 25, 100)
    serveIndicatorPlayer1 = TextObject("servePlayer1", "-->", 525, 200, 125)
    serveIndicatorPlayer2 = TextObject("servePlayer2", "<--", 175, 200, 125)
    servingColor = (255,117,73)
    notServingColor = (200,199,211)
        
    keyMapping = initMapping()
    keyMapping["rshoulder"] = lambda x: currentMatch.scorePoint(x)
       
    
    mainLoop.addGUIObject(player1Score)
    mainLoop.addGUIObject(player2Score)
    mainLoop.addGUIObject(serveIndicatorPlayer1)
    mainLoop.addGUIObject(serveIndicatorPlayer2)
    mainLoop.setupGUI()

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
                break;
            if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                running = False
                pygame.display.set_mode((700,400))
                break;
            if event.type == pygame.JOYBUTTONDOWN:
                button = parseButton(event)
                if button in keyMapping and keyMapping[button] is not None:
                    print(event)
                    if event.joy is not None:
                        score = None
                        if event.joy == 0:
                            score = keyMapping[button]("player1")
                        elif event.joy == 1:
                            score = keyMapping[button]("player2")
                    player1Score.text = str(score['player1'])
                    player2Score.text = str(score['player2'])
                    if(currentMatch.currentServer == "player1"):
                        serveIndicatorPlayer1.color = servingColor
                        serveIndicatorPlayer2.color = notServingColor
                    elif(currentMatch.currentServer == "player2"):
                        serveIndicatorPlayer1.color = notServingColor
                        serveIndicatorPlayer2.color = servingColor
                
                    print(score)
                
        
        
        pygame.display.update()
        mainLoop.update()
        mainLoop.draw()
        mainLoop.clock.tick(30)
        
    mainLoop.objects = []