Beispiel #1
0
 def new_game(self, wymiar):
     self.wymiar = wymiar
     self.plansza = GridModel(self.print_prefix, self.wymiar,
                              self.callbackObject)
     #self.callbackObject.print( Colors.RED, "NOWA GRA: ")
     self.plansza.new_number()
     self.create_scene()
Beispiel #2
0
    def setupUi(self, Form, x):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        self.frame = QFrame(Form)
        self.frame.setObjectName(u"frame")
        self.frame.setGeometry(QRect(10 + x, 10, 371 + x, 471))
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.graphicsView_1 = QGraphicsView(self.frame)
        self.graphicsView_1.setObjectName(u"graphicsView_1")
        self.graphicsView_1.setEnabled(False)
        self.graphicsView_1.setGeometry(QRect(10, 10, 351, 301))
        self.graphicsView_1.setMouseTracking(True)
        self.Ebutton_1 = QPushButton(self.frame)
        self.Ebutton_1.setObjectName(u"Ebutton_1")
        self.Ebutton_1.setGeometry(QRect(200, 370, 50, 40))
        self.NWbutton_1 = QPushButton(self.frame)
        self.NWbutton_1.setObjectName(u"NWbutton_1")
        self.NWbutton_1.setGeometry(QRect(110, 320, 50, 40))
        self.SWbutton_1 = QPushButton(self.frame)
        self.SWbutton_1.setObjectName(u"SWbutton_1")
        self.SWbutton_1.setGeometry(QRect(110, 420, 50, 40))
        self.NEbutton_1 = QPushButton(self.frame)
        self.NEbutton_1.setObjectName(u"NEbutton_1")
        self.NEbutton_1.setGeometry(QRect(170, 320, 50, 40))
        self.Wbutton_1 = QPushButton(self.frame)
        self.Wbutton_1.setObjectName(u"Wbutton_1")
        self.Wbutton_1.setGeometry(QRect(80, 370, 50, 40))
        self.SEbutton_1 = QPushButton(self.frame)
        self.SEbutton_1.setObjectName(u"SEbutton_1")
        self.SEbutton_1.setGeometry(QRect(170, 420, 50, 40))

        self.retranslateUi(Form)

        QMetaObject.connectSlotsByName(Form)

        self.scene = QGraphicsScene(self.graphicsView_1)
        self.plansza = GridModel(self.print_prefix, self.wymiar,
                                 self.callbackObject)

        self.graphicsView_1.setScene(self.scene)

        self.create_scene()

        self.NEbutton_1.clicked.connect(self.moveNEFull)
        self.Ebutton_1.clicked.connect(self.moveEFull)
        self.SEbutton_1.clicked.connect(self.moveSEFull)
        self.SWbutton_1.clicked.connect(self.moveSWFull)
        self.NWbutton_1.clicked.connect(self.moveNWFull)
        self.Wbutton_1.clicked.connect(self.moveWFull)

        effect = QGraphicsOpacityEffect(self)
        effect.setOpacity(0.8)
        self.graphicsView_1.setGraphicsEffect(effect)
        self.graphicsView_1.setAutoFillBackground(True)
Beispiel #3
0
    def __init__(self, sizex, sizey):

        self.sizex = sizex
        self.sizey = sizey
        self.view = GridView(sizex,sizey,800,480)
        self.model = GridModel(sizex,sizey)

        self.keyPressed = False
        self.action()
Beispiel #4
0
class Ui_Form(QWidget):
    def __init__(self, wymiar, print_prefix, playerId, callbackObject):
        super().__init__()
        self.wymiar = wymiar
        self.print_prefix = print_prefix
        self.playerId = playerId
        self.enabled = False
        self.callbackObject = callbackObject

    def setupUi(self, Form, x):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        self.frame = QFrame(Form)
        self.frame.setObjectName(u"frame")
        self.frame.setGeometry(QRect(10 + x, 10, 371 + x, 471))
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.graphicsView_1 = QGraphicsView(self.frame)
        self.graphicsView_1.setObjectName(u"graphicsView_1")
        self.graphicsView_1.setEnabled(False)
        self.graphicsView_1.setGeometry(QRect(10, 10, 351, 301))
        self.graphicsView_1.setMouseTracking(True)
        self.Ebutton_1 = QPushButton(self.frame)
        self.Ebutton_1.setObjectName(u"Ebutton_1")
        self.Ebutton_1.setGeometry(QRect(200, 370, 50, 40))
        self.NWbutton_1 = QPushButton(self.frame)
        self.NWbutton_1.setObjectName(u"NWbutton_1")
        self.NWbutton_1.setGeometry(QRect(110, 320, 50, 40))
        self.SWbutton_1 = QPushButton(self.frame)
        self.SWbutton_1.setObjectName(u"SWbutton_1")
        self.SWbutton_1.setGeometry(QRect(110, 420, 50, 40))
        self.NEbutton_1 = QPushButton(self.frame)
        self.NEbutton_1.setObjectName(u"NEbutton_1")
        self.NEbutton_1.setGeometry(QRect(170, 320, 50, 40))
        self.Wbutton_1 = QPushButton(self.frame)
        self.Wbutton_1.setObjectName(u"Wbutton_1")
        self.Wbutton_1.setGeometry(QRect(80, 370, 50, 40))
        self.SEbutton_1 = QPushButton(self.frame)
        self.SEbutton_1.setObjectName(u"SEbutton_1")
        self.SEbutton_1.setGeometry(QRect(170, 420, 50, 40))

        self.retranslateUi(Form)

        QMetaObject.connectSlotsByName(Form)

        self.scene = QGraphicsScene(self.graphicsView_1)
        self.plansza = GridModel(self.print_prefix, self.wymiar,
                                 self.callbackObject)

        self.graphicsView_1.setScene(self.scene)

        self.create_scene()

        self.NEbutton_1.clicked.connect(self.moveNEFull)
        self.Ebutton_1.clicked.connect(self.moveEFull)
        self.SEbutton_1.clicked.connect(self.moveSEFull)
        self.SWbutton_1.clicked.connect(self.moveSWFull)
        self.NWbutton_1.clicked.connect(self.moveNWFull)
        self.Wbutton_1.clicked.connect(self.moveWFull)

        effect = QGraphicsOpacityEffect(self)
        effect.setOpacity(0.8)
        self.graphicsView_1.setGraphicsEffect(effect)
        self.graphicsView_1.setAutoFillBackground(True)

    # setupUi

    def enable(self, enable):
        self.enabled = enable
        self.NEbutton_1.setEnabled(enable)
        self.Ebutton_1.setEnabled(enable)
        self.SEbutton_1.setEnabled(enable)
        self.SWbutton_1.setEnabled(enable)
        self.NWbutton_1.setEnabled(enable)
        self.Wbutton_1.setEnabled(enable)
        self.create_scene()

    def new_game(self, wymiar):
        self.wymiar = wymiar
        self.plansza = GridModel(self.print_prefix, self.wymiar,
                                 self.callbackObject)
        #self.callbackObject.print( Colors.RED, "NOWA GRA: ")
        self.plansza.new_number()
        self.create_scene()

    def mouse_pressed(self, x, y):
        if not self.enabled:
            return
        if x < self.frame.x() or x > self.frame.x() + self.frame.width():
            return
        if y < self.frame.y() or y > self.frame.y() + self.frame.height():
            return
        self.tempx = x
        self.tempy = y
        #print(self.print_prefix, "tempx", self.tempx)
        #print(self.print_prefix, "tempy", self.tempy)

    def mouse_released(self, x, y):
        if not self.enabled:
            return
        if x < self.frame.x() or x > self.frame.x() + self.frame.width():
            return
        if y < self.frame.y() or y > self.frame.y() + self.frame.height():
            return
        delta_y = y - self.tempy
        delta_x = x - self.tempx

        #print(self.print_prefix, "delta_x", delta_x)
        #print(self.print_prefix, "delta_y", delta_y)

        vect_len = math.sqrt(delta_x**2 + delta_y**2)
        angle = 180 + math.atan2(delta_y, -delta_x) * 180 / math.pi
        margin = 20
        if vect_len > 40:
            if angle > 360 - margin or angle < 0 + margin:
                self.moveEFull()
            if 60 - margin < angle < 60 + margin:
                self.moveNEFull()
            if 120 - margin < angle < 120 + margin:
                self.moveNWFull()
            if 180 - margin < angle < 180 + margin:
                self.moveWFull()
            if 240 - margin < angle < 240 + margin:
                self.moveSWFull()
            if 300 - margin < angle < 300 + margin:
                self.moveSEFull()
        return

    def moveEFull(self):
        if not self.plansza.moveEFull():
            return
        self.callbackObject.movement(self.playerId, "E")
        self.create_scene()

    def moveNEFull(self):
        if not self.plansza.moveNEFull():
            return
        self.callbackObject.movement(self.playerId, "NE")
        self.create_scene()

    def moveSEFull(self):
        if not self.plansza.moveSEFull():
            return
        self.callbackObject.movement(self.playerId, "SE")
        self.create_scene()

    def moveWFull(self):
        if not self.plansza.moveWFull():
            return
        self.callbackObject.movement(self.playerId, "W")
        self.create_scene()

    def moveNWFull(self):
        if not self.plansza.moveNWFull():
            return
        self.callbackObject.movement(self.playerId, "NW")
        self.create_scene()

    def moveSWFull(self):
        if not self.plansza.moveSWFull():
            return
        self.callbackObject.movement(self.playerId, "SW")
        self.create_scene()

    def retranslateUi(self, Form):
        Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
        self.Ebutton_1.setText(QCoreApplication.translate("Form", u"E", None))
        self.NWbutton_1.setText(QCoreApplication.translate(
            "Form", u"NW", None))
        self.SWbutton_1.setText(QCoreApplication.translate(
            "Form", u"SW", None))
        self.NEbutton_1.setText(QCoreApplication.translate(
            "Form", u"NE", None))
        self.Wbutton_1.setText(QCoreApplication.translate("Form", u"W", None))
        self.SEbutton_1.setText(QCoreApplication.translate(
            "Form", u"SE", None))

    # retranslateUi

    def create_scene(self):
        self.scene.clear()
        for pole in self.plansza.pola:
            # greenBrush = QBrush(Qt.green)
            # blueBrush = QBrush(Qt.blue)
            pen = QPen()
            if self.enabled:
                pen.setColor(Qt.black)
            else:
                pen.setColor(Qt.gray)
            pen.setWidth(2)
            self.scene.addPolygon(
                Hexagon(self.scene, pole[0], pole[1], pole[2], self.enabled,
                        30 / self.wymiar * 3).shape, pen)
Beispiel #5
0
class GridControl(object):

    def __init__(self, sizex, sizey):

        self.sizex = sizex
        self.sizey = sizey
        self.view = GridView(sizex,sizey,800,480)
        self.model = GridModel(sizex,sizey)

        self.keyPressed = False
        self.action()

    def action(self):

        while True:
 
            self.beforeAction()

            for event in pygame.event.get():
                self.handleEvent(event)

            self.afterAction()
    
    def beforeAction(self):
        pass

    def afterAction(self):
        pass

    def handleEvent(self, event):

        if event.type == QUIT:
            self.triggerEnd()

        if event.type == MOUSEBUTTONDOWN:
            self.handleMouseButtonEvents(event)

        if event.type == KEYUP:
            self.keyPressed = False

        if event.type == KEYDOWN and not self.keyPressed:
            self.keyPressed = True
            self.handleKeyEvents(event)

    def handleKeyEvents(self, event):

        if event.key == pygame.K_ESCAPE or event.key == pygame.K_q:
            self.triggerEnd()

    def triggerEnd(self):
        exit()

    def handleMouseButtonEvents(self, event):

        (x,y) = event.pos
        (bx,by) = self.view.point2Box(x,y)

        if bx in range(self.sizex) and by in range(self.sizey):

            if event.button == 1:
                self.setBox(bx,by)

            elif event.button == 3:
                self.unsetBox(bx,by)

    def renderModel(self):

        for x in range(self.sizex):
            for y in range(self.sizey):
                if self.model.getPoint(x,y) == 1:
                    self.view.setBox(x,y)
                else:
                    self.view.unsetBox(x,y)

        self.view.update()

    def setBox(self,bx,by):
        self.view.setBox(bx,by)
        self.model.setPoint(bx,by)
        self.view.update()

    def unsetBox(self,bx,by):
        self.view.unsetBox(bx,by)
        self.model.unsetPoint(bx,by)                        
        self.view.update()

    def invertBox(self,bx,by):

        pointStatus = self.model.getPoint(bx,by)

        if pointStatus == 0:
            self.setBox(bx,by)
        elif pointStatus ==1:
            self.unsetBox(bx,by)