Source code for game.drawPiece

# -*- coding: utf-8 -*-
from tools import *
from PyQt5.QtGui import QPen
from PyQt5.QtWidgets import QFrame
from PyQt5.QtCore import *
import logging
from PyQt5.QtGui import QPainter


[docs]class DrawPiece(QFrame): def __init__(self, game, cords, color): # logging.debug("Piece %s Constructor at %s", str(color), str(cords)) self.game = game self.board = game.board self.__cords = cords self.color = color QFrame.__init__(self, game.screen) self.dragging = False self.show() @property def cords(self): return self.__cords @cords.setter def cords(self, new_cords): self.__cords = new_cords self.paintEvent(None) @property def size_of_piece(self): return self.board.size_of_one_tile # noinspection PyUnusedLocal
[docs] def paintEvent(self, e): # logging.debug("PaintEvent inside piece") self.resize(self.size_of_piece, self.size_of_piece) pen = QPen() pen.setWidth(4) if self.color == Color.white: pen.setColor(Qt.lightGray) qp = QPainter() qp.setRenderHint(QPainter.HighQualityAntialiasing) qp.begin(self) qp.setPen(pen) qp.drawEllipse(5, 5, self.size_of_piece - 10, self.size_of_piece - 10) qp.end() if self.dragging is False: to = self.board.cords_to_pos(self.cords) self.move(*to)
[docs] def mousePressEvent(self, e): logging.debug("click") if self.cords in self.game.possible_moves: self.offset = e.pos() self.dragging = True
[docs] def mouseReleaseEvent(self, e): if self.dragging: self.dragging = False glob_pos = e.globalPos() pos = self.board.mapFromGlobal(glob_pos) try: dest_cords = self.board.pos_to_cords(pos) except ValueError: logging.debug("Trying to place " + str(self.cords) + " outside board.") self.paintEvent(None) return logging.debug("Trying to place " + str(self.cords) + " pieces on " + str(dest_cords)) self.game.try_to_make_a_move(self, dest_cords) self.paintEvent(None)
[docs] def mouseMoveEvent(self, e): if self.dragging: self.move(self.mapToParent(e.pos() - self.offset))
def __reduce__(self): QFrame.__reduce__()