Beispiel #1
0
    def _refresh_dialog(self):
        """ Uppdatera namn i namnfält

        Anropas när tecken lagts till eller tagits bort.
        
        """

        nbr_of_chars = len(self.name)

        # Dölj nuvarande namn och skapa nytt grafikobjekt för namn.
        super().remove_from_world(self.erasename_rect)
        gv.graphics["playername"] = gv.menufont_medium.render\
                                    (''.join(self.name), True, gv.yellow)

        # Bestäm centerposition och visa nyskapat namnobjekt.
        NAME_X = 297
        NAME_Y = 220
        namerect = gv.graphics["playername"].get_rect()
        namerect.x = NAME_X - (namerect.width / 2)
        namerect.y = NAME_Y
        screen.blit("playername", namerect)

        # Bestäm position för textpekare och visa textpekare.
        CURSOR_X = namerect.x + namerect.width + 2  # precis intill namn
        screen.blit("cursor_dialog", pygame.Rect(CURSOR_X, 220, 30, 30))
Beispiel #2
0
    def _refresh_dialog(self):
        """ Uppdatera namn i namnfält

        Anropas när tecken lagts till eller tagits bort.
        
        """
        
        nbr_of_chars = len(self.name)

        # Dölj nuvarande namn och skapa nytt grafikobjekt för namn.
        super().remove_from_world(self.erasename_rect)
        gv.graphics["playername"] = gv.menufont_medium.render\
                                    (''.join(self.name), True, gv.yellow)

        # Bestäm centerposition och visa nyskapat namnobjekt.
        NAME_X = 297
        NAME_Y = 220
        namerect = gv.graphics["playername"].get_rect()
        namerect.x = NAME_X - (namerect.width / 2)
        namerect.y = NAME_Y
        screen.blit("playername", namerect)

        # Bestäm position för textpekare och visa textpekare.
        CURSOR_X = namerect.x + namerect.width + 2 # precis intill namn
        screen.blit("cursor_dialog", pygame.Rect(CURSOR_X, 220, 30, 30))
Beispiel #3
0
    def start(self):
        """ Visar menyvy """
        gv.switch_window = False

        # Ersätt hela fönstret med menyvy.
        screen.erase(gv.whole_screenrect)
        screen.blit("bg_main_menu", gv.whole_screenrect)
        self.show_main(goback_sound = False)        
Beispiel #4
0
    def update_scorebar(self, score):
        """ Uppdatera poängruta med nytt poäng """

        # Skapa grafikobjekt för poängtext.
        gv.graphics["score"] = gv.menufont_large.render(
            str(score), True, gv.yellow)

        # Ta bort nuvarande poängtext och lägg till ny.
        screen.erase(self.rects["score"])
        screen.blit("score", self.rects["score"])
Beispiel #5
0
    def addfood(self):
        """ Lägg ut äpple på ett slumpmässigt matställe """
        global STEP
        X = 0

        # Välj ut ett slumpmässigt matställe.
        coordinate = random.sample(self.foodspots, 1)

        # Visa äpple på utvalt matställe.
        self.foodspot = pygame.Rect(coordinate[X], (STEP, STEP))
        screen.blit("food", self.foodspot)
Beispiel #6
0
    def update_cursor(self):
        """ Flytta pekare till ny position """
        ROWGAP = 30 # vertikalt avstånd mellan menyval

        # Bestäm ny pekarpos genom att utgå från pekarpos för första menyval.
        cursorpos = pygame.Rect(self.rects["cursor_on_PLAY"])
        cursorpos.y = cursorpos.y + self.cursor_at * ROWGAP 

        # Dölj föregående pekare och visa ny pekare.
        screen.erase(self.rects["del_cursor"])
        screen.blit("cursor_menu", cursorpos)
Beispiel #7
0
    def update_scorebar(self, score):
        """ Uppdatera poängruta med nytt poäng """

        # Skapa grafikobjekt för poängtext.
        gv.graphics["score"] = gv.menufont_large.render(str(score),
                                                        True,
                                                        gv.yellow)

        # Ta bort nuvarande poängtext och lägg till ny.
        screen.erase(self.rects["score"])
        screen.blit("score", self.rects["score"])
Beispiel #8
0
    def addfood(self):
        """ Lägg ut äpple på ett slumpmässigt matställe """
        global STEP
        X = 0
        
        # Välj ut ett slumpmässigt matställe.
        coordinate = random.sample(self.foodspots, 1)

        # Visa äpple på utvalt matställe.
        self.foodspot = pygame.Rect(coordinate[X], (STEP, STEP))
        screen.blit("food", self.foodspot)
Beispiel #9
0
    def update_happybar(self):
        """ Uppdatera pekare som visar ormens belåtenhetsnivå """

        # Ta bort aktuell belåtenhetsmätare och lägg till ny.
        screen.erase(self.rects["happybar"])
        screen.blit("happybar_gui", self.rects["happybar"])

        # Beräkna position för pekare och placera ut på mätare.
        # happycursor recten innehåller position för mätare.
        # Genom att använda x position för mätarens västra
        # sida så kan man räkna ut pekarens position på mätaren.
        rect = pygame.Rect(self.rects["happycursor"])
        rect.x = rect.x + self.HAPPYLEVEL_STEP * Snake.happylevel
        screen.blit("happycursor_gui", rect)
Beispiel #10
0
    def update_happybar(self):
        """ Uppdatera pekare som visar ormens belåtenhetsnivå """

        # Ta bort aktuell belåtenhetsmätare och lägg till ny.
        screen.erase(self.rects["happybar"])
        screen.blit("happybar_gui", self.rects["happybar"])

        # Beräkna position för pekare och placera ut på mätare.
        # happycursor recten innehåller position för mätare.
        # Genom att använda x position för mätarens västra
        # sida så kan man räkna ut pekarens position på mätaren.
        rect = pygame.Rect(self.rects["happycursor"])
        rect.x = rect.x + self.HAPPYLEVEL_STEP * Snake.happylevel
        screen.blit("happycursor_gui", rect)
Beispiel #11
0
    def show_main(self, goback_sound = True):
        """ Visar menyval i huvudmeny vid retur från submeny """
        self.cursor_at = self.PLAY

        # Spela ljud om föregående fönster var en submeny.
        if goback_sound:
            gv.sounds["back_menu"].play()

        # Töm aktuell meny för att sedan visa huvudmeny.
        self.clearmenu()
        screen.blit("text_play_menu", self.rects["play"])
        screen.blit("text_table_menu", self.rects["table"])
        screen.blit("text_help_menu", self.rects["help"])
        screen.blit("text_exit_menu", self.rects["exit"])
        screen.blit("cursor_menu", self.rects["cursor_on_PLAY"])
 def display(self, board):
     # render text
     for i in range(9):
         for j in range(9):
             if self._board[i][j]:
                 c = (255, 0, 0)
             else:
                 c = (0, 128, 0)
             text = font.render(str(board[i][j]), True, c)
             h = text.get_height() - 5
             textpos = text.get_rect()
             textpos.centerx = screen.get_rect().centerx + j * h - 200
             textpos.centery = 50 + i * h
             screen.fill((255, 255, 255), textpos)
             screen.blit(text, textpos)
     pygame.display.flip()
Beispiel #13
0
    def move(self):
        """ Förflytta orm

        Returnera False vid krasch eller vid för låg belåtenhetsnivå.
        I annat fall returnera True. Värdet används i Gameklassen för
        att avgöra om spelet är över eller inte.

        """

        X = 0
        Y = 1
        global STEP
        global WORLDRECT

        # Ändra riktning på orm om svänglista inte är tom.
        if self.turnlist:
            self.direction = self.turnlist.pop(0)

        # Bestäm nytt huvud, huvud utanför värld hamnar på motsatt sida.
        head = pygame.Rect(
            self.head)  # kopiera koordinater för nuvarande huvud
        head.x = (head.x + (self.direction[X] * STEP)) % WORLDRECT.width
        head.y = (head.y + (self.direction[Y] * STEP)) % WORLDRECT.height

        # Lägg till nytt huvud.
        self.head = head
        self.snake.append(head)

        # Ta bort nytt huvud från giltiga matställen och visa huvud.
        self.world.remove_foodspot(self.head)
        screen.erase(head)
        screen.blit("snake", head)

        # Ta bort svans för att simulera rörelse.
        if not self.grow:
            # Borttagen svans blir matplats.
            self.world.add_foodspot(self.tail)

            # Ta bort svans och bestäm ny svans.
            screen.erase(self.snake.popleft())
            self.tail = self.snake[0]  # 1:a elementet = ny svans

        # Förläng orm genom att inte ta bort svans.
        else:
            self.grow -= 1

        return self.nocollision() and Snake.happylevel >= 0
Beispiel #14
0
    def move(self):
        """ Förflytta orm

        Returnera False vid krasch eller vid för låg belåtenhetsnivå.
        I annat fall returnera True. Värdet används i Gameklassen för
        att avgöra om spelet är över eller inte.

        """
        
        X = 0
        Y = 1
        global STEP
        global WORLDRECT

        # Ändra riktning på orm om svänglista inte är tom.
        if self.turnlist:
            self.direction = self.turnlist.pop(0)

        # Bestäm nytt huvud, huvud utanför värld hamnar på motsatt sida.
        head = pygame.Rect(self.head) # kopiera koordinater för nuvarande huvud
        head.x = (head.x + (self.direction[X] * STEP)) % WORLDRECT.width
        head.y = (head.y + (self.direction[Y] * STEP)) % WORLDRECT.height

        # Lägg till nytt huvud.
        self.head = head
        self.snake.append(head)

        # Ta bort nytt huvud från giltiga matställen och visa huvud.
        self.world.remove_foodspot(self.head)
        screen.erase(head)
        screen.blit("snake", head)

        # Ta bort svans för att simulera rörelse.
        if not self.grow:
            # Borttagen svans blir matplats.
            self.world.add_foodspot(self.tail)

            # Ta bort svans och bestäm ny svans.
            screen.erase(self.snake.popleft()) 
            self.tail = self.snake[0] # 1:a elementet = ny svans

        # Förläng orm genom att inte ta bort svans.
        else:
            self.grow -= 1

        return self.nocollision() and Snake.happylevel >= 0
Beispiel #15
0
    def reset(self):
        """ Ställ in/återställ orm """
        global STEP
        Snake.happylevel = 2  # orm är lagomt belåten från start
        self.direction = self.EAST
        self.grow = 0
        self.turnlist = []

        # Bestäm ormens initialkoordinater.
        self.tail = pygame.Rect(8 * STEP, 7 * STEP, STEP, STEP)
        middle = pygame.Rect((9 * STEP, 7 * STEP), (STEP, STEP))
        self.head = pygame.Rect(10 * STEP, 7 * STEP, STEP, STEP)

        # Skapa orm med en längd på tre pluppar.
        self.snake.clear()  # ta bort befintliga pluppar
        self.snake.append(self.tail)
        self.snake.append(middle)
        self.snake.append(self.head)

        # Visa orm i värld.
        for bodypart in self.snake:
            screen.blit("snake", bodypart)
Beispiel #16
0
    def reset(self):
        """ Ställ in/återställ orm """
        global STEP
        Snake.happylevel = 2 # orm är lagomt belåten från start
        self.direction = self.EAST
        self.grow = 0
        self.turnlist = []

        # Bestäm ormens initialkoordinater.
        self.tail = pygame.Rect(8*STEP, 7*STEP, STEP, STEP)
        middle = pygame.Rect((9*STEP, 7*STEP), (STEP, STEP))
        self.head = pygame.Rect(10*STEP, 7*STEP, STEP, STEP)

        # Skapa orm med en längd på tre pluppar.
        self.snake.clear() # ta bort befintliga pluppar
        self.snake.append(self.tail)
        self.snake.append(middle)
        self.snake.append(self.head)

        # Visa orm i värld.
        for bodypart in self.snake:
            screen.blit("snake", bodypart)
Beispiel #17
0
    def add_question(self, operand1, operand2, operator, answer_options):
        """ Visa fråga med svarsalternativ i GUI """

        # Skapa grafik för fråga och svarsalternetiv.
        question = str(operand1) + " " + operator + " " + str(operand2)
        gv.graphics["question"] = gv.mathfont.render(question, True, gv.yellow)
        gv.graphics["answer_alt1"] = gv.mathfont.render\
                                     ("1. " + str(answer_options[0]),
                                      True, gv.yellow)
        gv.graphics["answer_alt2"] = gv.mathfont.render\
                                     ("2. " + str(answer_options[1]),
                                      True,
                                      gv.yellow)
        gv.graphics["answer_alt3"] = gv.mathfont.render\
                                     ("3. " + str(answer_options[2]),
                                      True,
                                      gv.yellow)

        # Visa fråga och svarsalternativ.
        self.erase_qa() # ta bort nuvarande fråga och svarsalternativ
        screen.blit("question", self.rects["question"])
        screen.blit("answer_alt1", self.rects["answer_alt1"])
        screen.blit("answer_alt2", self.rects["answer_alt2"])
        screen.blit("answer_alt3", self.rects["answer_alt3"])
Beispiel #18
0
    def add_question(self, operand1, operand2, operator, answer_options):
        """ Visa fråga med svarsalternativ i GUI """

        # Skapa grafik för fråga och svarsalternetiv.
        question = str(operand1) + " " + operator + " " + str(operand2)
        gv.graphics["question"] = gv.mathfont.render(question, True, gv.yellow)
        gv.graphics["answer_alt1"] = gv.mathfont.render\
                                     ("1. " + str(answer_options[0]),
                                      True, gv.yellow)
        gv.graphics["answer_alt2"] = gv.mathfont.render\
                                     ("2. " + str(answer_options[1]),
                                      True,
                                      gv.yellow)
        gv.graphics["answer_alt3"] = gv.mathfont.render\
                                     ("3. " + str(answer_options[2]),
                                      True,
                                      gv.yellow)

        # Visa fråga och svarsalternativ.
        self.erase_qa()  # ta bort nuvarande fråga och svarsalternativ
        screen.blit("question", self.rects["question"])
        screen.blit("answer_alt1", self.rects["answer_alt1"])
        screen.blit("answer_alt2", self.rects["answer_alt2"])
        screen.blit("answer_alt3", self.rects["answer_alt3"])
Beispiel #19
0
 def reset(self):
     """ Töm grafikinnehåll i GUI fönster. """
     screen.blit("bg_gui", self.rects["bg"])
Beispiel #20
0
 def draww(self, screen):
     self.font = pygame.font.SysFont('SimHei', 20)
     self.font_surface = self.font.render('疼!', True, (0, 0, 0))
     screen.blit(self.font_surface, (self.x - 19, self.y - 20))
     self.font_surface = self.font.render('疼!', True, (255, 255, 255))
     screen.blit(self.font_surface, (self.x - 20, self.y - 19))
Beispiel #21
0
 def draww(self, screen):
     self.font = pygame.font.SysFont('SimHei', 20)
     self.font_surface = self.font.render('减速', True, (0, 0, 0))
     screen.blit(self.font_surface, (self.x + 1, self.y + 1))
     self.font_surface = self.font.render('减速', True, (144, 144, 255))
     screen.blit(self.font_surface, (self.x, self.y))
Beispiel #22
0
 def reset(self):
     """ Töm grafikinnehåll i GUI fönster. """
     screen.blit("bg_gui", self.rects["bg"])
Beispiel #23
0
i = 0


def goldencut(base):
    return base * 0.382


def middle(base):
    return round(base * 0.5, 0)


while True:
    events = pygame.event.get()
    mouse_pos = pygame.mouse.get_pos()

    screen.fill((246, 198, 0))  # fill screen with an rgb color

    screen.blit(img, (middle(480) - 20, goldencut(800) - 20))

    for event in events:
        print event
        if event.type == pygame.MOUSEBUTTONDOWN:
            if pygame.Rect((middle(480) - 20, goldencut(800) - 20),
                           (40, 40)).collidepoint(
                               mouse_pos
                           ):  #funktioniert noch nicht, muss verschoben werden
                print "Hey you tickled the shit!"

    pygame.display.flip()
Beispiel #24
0
    def show_help(self):
        """ Visar hjälpmeny """
        self.in_submenu = True

        # Töm aktuell meny för att sedan visa hjälpmeny.
        self.clearmenu()
        screen.blit("bg_help_menu", pygame.Rect(295, 200, 500, 500))
        screen.blit("text_return_menu", pygame.Rect(340, 364, 150, 100))
        screen.blit("text_help_meter", pygame.Rect(395, 196, 200, 100))
        screen.blit("text_help_arrowkeys", pygame.Rect(395, 248, 200, 100))
        screen.blit("text_help_nbrs", pygame.Rect(395, 280, 200, 100))
        screen.blit("text_help_esc", pygame.Rect(395, 310, 200, 100))
Beispiel #25
0
        # check for closing window
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONUP:
            pos = pygame.mouse.get_pos()
            #TODO: block placing
        elif event.type == pygame.KEYDOWN:
            xadd = 0
            yadd = 0
            print('keydown ' + str(event.key))
            if (event.key == pygame.K_w):
                yadd = -10
            if (event.key == pygame.K_s):
                yadd = 10
            if (event.key == pygame.K_d):
                xadd = 10
            if (event.key == pygame.K_a):
                xadd = -10
            player.move(player.x + xadd, player.y + yadd)

    # Обновление
    # Рендеринг
    screen.fill(BLACK)
    print(sprites)

    for key, value in sprites.items():
        screen.blit(value.image, (value.rect.x, value.rect.y))
    pygame.display.update()

pygame.quit()
Beispiel #26
0
 def introtext(self):
     """ Visa instruktioner för att starta spel/returnera till huvudmeny. """
     screen.blit("introtext_line1", pygame.Rect(115, 190, 400, 300))
     screen.blit("introtext_line2", pygame.Rect(115, 230, 400, 300))
Beispiel #27
0
    def show_table(self):
        """ Visar tabell/highscores """
        self.in_submenu = True

        # Töm aktuell meny för att sedan visa tabellmeny.
        self.clearmenu()
        screen.blit("text_header_table", pygame.Rect(295, 180, 100, 100))
        screen.blit("text_underscore_table", pygame.Rect(295, 185, 100, 100))
        screen.blit("text_underscore_table", pygame.Rect(445, 185, 100, 100))
        screen.blit("text_return_menu", pygame.Rect(340, 364, 150, 100))
        
        rownbr = 0
        FIRSTROW_Y = 210 # y-koordinat första rad
        NAME_X = 295 # x-koordinat för namn
        SCORE_X = 446 # x-koordinat för poäng
        ROWGAP = 15 # avstånd mellan poängrader
        SCORE = 0 # indexvariabel för highscorelista

        # Skriv ut samtliga rader.
        for h in highscore.get_highscores():
            y_coord = FIRSTROW_Y + rownbr * ROWGAP 
            col_name = "highscore_" + str((rownbr + 1)) + "_name" 
            col_score = "highscore_" + str((rownbr + 1)) + "_score" 
            gv.graphics[col_name] = gv.menufont_small.render((str(rownbr + 1) + ". " + h[1]), True, gv.yellow)
            gv.graphics[col_score] = gv.menufont_small.render(str(h[SCORE]), True, gv.yellow)
            screen.blit(col_name, pygame.Rect(NAME_X, y_coord, 100, 100))
            screen.blit(col_score, pygame.Rect(SCORE_X, y_coord, 100, 100))
            rownbr += 1
Beispiel #28
0
 def add_to_world(self, obj, rect):
     """ Lägg till angivet objekt i värld (förlängs av Namedialog) """
     screen.blit(obj, rect)
Beispiel #29
0
 def draww(self, screen):
     if self.name not in img_pool:
         img_pool[self.name] = pygame.image.load('img/%s.png' %
                                                 self.name).convert_alpha()
     screen.blit(img_pool[self.name], (self.x - 20, self.y - 20))
Beispiel #30
0
 def introtext(self):
     """ Visa instruktioner för att starta spel/returnera till huvudmeny. """
     screen.blit("introtext_line1", pygame.Rect(115, 190, 400, 300))
     screen.blit("introtext_line2", pygame.Rect(115, 230, 400, 300))
Beispiel #31
0
 def add_to_world(self, obj, rect):
     """ Lägg till angivet objekt i värld (förlängs av Namedialog) """
     screen.blit(obj, rect)
Beispiel #32
0
i=0

def goldencut (base):
    return base * 0.382

def middle (base):
    return round (base * 0.5, 0)

while True:
    events = pygame.event.get()
    mouse_pos = pygame.mouse.get_pos()

    screen.fill( (246, 198, 0) ) # fill screen with an rgb color

    screen.blit(
        img,
        (middle(480)-20, goldencut(800)-20)
    )

    for event in events:
        print event
        if event.type == pygame.MOUSEBUTTONDOWN:
            if pygame.Rect(
                (middle(480)-20, goldencut(800)-20),
                (40, 40)
            ).collidepoint(mouse_pos): #funktioniert noch nicht, muss verschoben werden
                print "Hey you tickled the shit!"

    pygame.display.flip()