Du bist nicht angemeldet.

Werbeanzeige

1

28.04.2019, 18:17

Pygame: 3x3 Raster Position wird an anderer stelle dargestellt

Ich wollte Tick Tack Toe programmieren und habe ein 3x3 Raster erstellt. Wenn ich auf eines der Rasterfelder klicke soll in der Konsole "Click!" ausgegeben werden. Aber wenn ich auf eines der Rasterfelder klicke passiert nichts. Außer wenn ich oben links ins im Fenster klicke ?(

Danke im voraus für die Hilfe :)


(Link)


(Link)


Main.py

HLSL-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import pygame
from Block import Block

screenSize = (500,400)
screenTitle = "Tick Tack Toe!"

gridWidth = 3
gridHeight = 3
gridSpace = 10

blocks = []

pygame.init()

screen = pygame.display.set_mode(screenSize)
pygame.display.set_caption(screenTitle)

running = True

clock = pygame.time.Clock()

for y in range(0, gridHeight):
    for x in range(0, gridWidth):
        blocks.append(Block(x*(64+gridSpace)+(screenSize[0]/2)-(64+(gridWidth*gridSpace)), y*(64+gridSpace)+(screenSize[1]/2)-(64+(gridHeight*gridSpace)), "block.png"))

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            for i in blocks:
                if (i.getImage().get_rect().collidepoint(pygame.mouse.get_pos())):
                    print("Click!")

    screen.fill((255,255,255))
    
    for i in blocks:
        screen.blit(i.getImage(), (i.x, i.y))

    pygame.display.update()
    clock.tick(60)

pygame.quit()


Block.py

HLSL-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pygame

class Block:
    def __init__(self, x, y, image):
        self.x = x
        self.y = y
        self.image = pygame.image.load(image)

    def getImage(self):
        return self.image

    def x(self):
        return self.image.get_rect().x

    def y(self):
        return self.image.get_rect().y

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »N4SONIC« (28.04.2019, 19:06)


David Scherfgen

Administrator

Beiträge: 10 197

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

28.04.2019, 19:26

Du benutzt für die Klick-Abfrage ja auch nur das Rechteck des Bilds und nicht die Position des Blocks. Deine Methoden x und y sind dementsprechend auch falsch. Das Bild weiß gar nicht, wo es positioniert ist.

3

30.04.2019, 07:43

Danke habe das Problem gelöst :) :thumbsup:

Werbeanzeige