Как переместить шахматные фигуры в нужные места щелчком мыши? Pygame - PullRequest
0 голосов
/ 07 апреля 2020

Проблема в том, что у меня проблемы с выбором шахматной фигуры мышью и последующим перемещением ее мышью. Мне удается выбрать объект, щелкнув мышью, но так как он находится в то время как l oop, я не могу снова вносить изменения с помощью шахматных фигур с помощью мыши. Проблемы с оператором if. Также я пока не могу сохранить так называемую переменную "posit ie" для дальнейшего использования. Любая помощь приветствуется !!

'' 'Это документ для создания шахматной доски на python.' ''

import pygame
import time
import sys

#pygame making game initializing
pygame.init()

screen = pygame.display.set_mode((640, 640))
clock = pygame.time.Clock()

size = [640, 640]
stepsizeX = size[0]/8
stepsizeY = size[1]/8

#colors
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)

screen.fill(white)

#piece of chess player
class Pion:

    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.figure = pygame.draw.rect(screen, red, [stepsizeX/2 + x * stepsizeX, stepsizeY/2 + y * stepsizeY, 20, 20], 0)

    def possible_path(self):
        for i in range(1,3):
            poss_circles = pygame.draw.circle(screen, red, [int(stepsizeX/2 + self.x * stepsizeX), int(stepsizeY/2 + (self.y + i) * stepsizeY)], 10)
        return poss_circles

    def move(self):
            mx = round(int(mx / stepsizeX))
            my = round(int(my / stepsizeY))
            self.x = mx
            self.y = my

    def rectangle_object(self):
        return self.figure

#making chess pattern as function
def drawBoard():
    for i in range(0, 4):
        for j in range(0, 4):
            pygame.draw.rect(screen, black, [i*2*stepsizeX, j*2*stepsizeY, stepsizeX, stepsizeY], 0)

    for i in range(0, 4):
        for j in range(0, 4):
            pygame.draw.rect(screen, black, [i*2*stepsizeX + stepsizeX, j*2*stepsizeY + stepsizeY, stepsizeX,stepsizeY], 0)

drawBoard()

# pions in blocks
p1 = Pion(0, 1)
p2 = Pion(1, 1)
p3 = Pion(2, 1)
p4 = Pion(3, 1)
p5 = Pion(4, 1)
p6 = Pion(5, 1)
p7 = Pion(6, 1)
p8 = Pion(7, 1)


# referring to value and changing upon.
#pygame update 
pygame.display.update()

# Getting full list and writing to 
lijstSpelers = [p1, p2, p3, p4, p5, p6, p7, p8]
length = len(lijstSpelers)

#using index
positie = 0

while True:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN: #kijken wat er gebeurt als je op simpel object klikt.
            mx, my = pygame.mouse.get_pos() # drawing rectangle with given coordinates to select collision point waarom werkt dit kut ding niet.
            print(mx, my)
            klikPos = pygame.Rect(mx, my, 1, 1)
            for i in range(length):
                if klikPos.colliderect(lijstSpelers[i].rectangle_object()) == True:
                    positie = i

        elif event.type == pygame.QUIT: # closing system.
            sys.exit()
...