Beispiel #1
0
class MyTable(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("Server's list")
        self.setFixedSize(440, 250)
        self.filled_rows = 0
        self.game_client = GameClient(self)

        self.tablewidget = QtGui.QTableWidget(1, 4, self)
        self.tablewidget.setFixedSize(440, 250)
        self.tablewidget.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        HeaderIp = QtGui.QTableWidgetItem("IP")
        HeaderRow = QtGui.QTableWidgetItem("Row")
        HeaderCol = QtGui.QTableWidgetItem("Col")
        HeaderConnect = QtGui.QTableWidgetItem("Win line")

        self.tablewidget.setHorizontalHeaderItem(0, HeaderIp)
        self.tablewidget.setHorizontalHeaderItem(1, HeaderRow)
        self.tablewidget.setHorizontalHeaderItem(2, HeaderCol)
        self.tablewidget.setHorizontalHeaderItem(3, HeaderConnect)

        cell_clicked = self.tablewidget.cellDoubleClicked
        cell_clicked.connect(self.server_choosed)

        self.game_client.writeMsg(["FindGame"])

    def fillTable(self, msg):
        print msg
        for game in msg:
            parse_game = game.split('|')

            ip = QtGui.QTableWidgetItem(parse_game[0])
            row = QtGui.QTableWidgetItem(parse_game[1])
            col = QtGui.QTableWidgetItem(parse_game[2])
            win_line = QtGui.QTableWidgetItem(parse_game[3])

            self.tablewidget.setItem(self.filled_rows, 0, ip)
            self.tablewidget.setItem(self.filled_rows, 1, row)
            self.tablewidget.setItem(self.filled_rows, 2, col)
            self.tablewidget.setItem(self.filled_rows, 3, win_line)

            self.filled_rows += 1
            self.tablewidget.setRowCount(self.tablewidget.rowCount() + 1)

    def server_choosed(self, row, col):
        ip = self.tablewidget.item(row, 0).text()
        game_row = int(self.tablewidget.item(row, 1).text())
        game_col = int(self.tablewidget.item(row, 2).text())
        win_lane = int(self.tablewidget.item(row, 3).text())

        ngd = NetGameDialog(game_row, game_col, win_lane, self,
                            self.game_client, False, ip)

        self.setHidden(True)
        ngd.exec_()
        self.close()
Beispiel #2
0
class NetGameDialog(QtGui.QDialog):
    def __init__(self, rows, cols, win_lane, parent=None, sock=None, create=True, IP=""):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("The Network Game")
        self.buttons = []
        self.char = ""
        self.game_client = None
        if sock == None:
            self.game_client = GameClient(self)
        else:
            self.game_client = sock
            self.game_client.dialog = self

        self.game_desk = GameDesk(rows, cols, win_lane)

        self.grid = QtGui.QGridLayout()
        self.grid.setSpacing(0)

        for row in range(0, rows):
            for col in range(0, cols):
                button = GameButton(row, col)
                button.setEnabled(False)
                button.clicked.connect(self.gameButtonClicked)
                self.buttons.append(button)
                self.grid.addWidget(button, row, col)

        self.setLayout(self.grid)

        if create:
            msg = ["CreateGame", str(rows), str(cols), str(win_lane)]
            self.game_client.writeMsg(msg)
        else:
            msg = ["ConnectToGame", IP]
            self.game_client.writeMsg(msg)

    def myTurn(self, char):
        self.char = char

        for b in self.buttons:
            b.setEnabled(True)
        reply = QtGui.QMessageBox.information(self, "Message", "Your turn!", QtGui.QMessageBox.Yes)

    def gameButtonClicked(self):
        for b in self.buttons:
            b.setEnabled(False)

        sender = self.sender()
        x = sender.pos_x
        y = sender.pos_y

        self.makeTurn(x, y, self.char, sender, True)

        msg = ["NewTurn", str(x), str(y), self.char]
        self.game_client.writeMsg(msg)

    def makeTurn(self, x, y, char, button=None, my_turn=False):
        x=int(x)
        y=int(y)
        if button == None:
            for b in self.buttons:
                #print b.pos_x,b.pos_y
                #print x,y
                if int(b.pos_x) == int(x) and int(b.pos_y) == int(y):
                    button = b


        label = QtGui.QLabel(char)
        label.setFixedSize(25, 25)
        label.setAlignment(QtCore.Qt.AlignCenter)

        if char == "X":
            label.setStyleSheet("QLabel{color: green}")
        else:
            label.setStyleSheet("QLabel{color: red}")
        font = label.font()
        font.setPointSize(20)
        font.setBold(True)

        label.setFont(font)
        button.close()
        self.grid.addWidget(label, x, y, QtCore.Qt.AlignCenter)

        if self.game_desk.newTurn(x, y, char):
            reply = QtGui.QMessageBox.information(self, "Message", (char + " WON!"), QtGui.QMessageBox.Yes)
            #self.game_client.my_sock.disconnect()

            self.close()

        if not my_turn:
            if char == "X":
                self.myTurn("O")
            else:
                self.myTurn("X")
Beispiel #3
0
class MyTable(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle("Server's list")
        self.setFixedSize(440,250)
        self.filled_rows = 0
        self.game_client = GameClient(self)

        self.tablewidget=QtGui.QTableWidget(1,4,self)
        self.tablewidget.setFixedSize(440,250)
        self.tablewidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)

        HeaderIp=QtGui.QTableWidgetItem("IP")
        HeaderRow=QtGui.QTableWidgetItem("Row")
        HeaderCol=QtGui.QTableWidgetItem("Col")
        HeaderConnect=QtGui.QTableWidgetItem("Win line")

        self.tablewidget.setHorizontalHeaderItem(0,HeaderIp)
        self.tablewidget.setHorizontalHeaderItem(1,HeaderRow)
        self.tablewidget.setHorizontalHeaderItem(2,HeaderCol)
        self.tablewidget.setHorizontalHeaderItem(3,HeaderConnect)

        cell_clicked = self.tablewidget.cellDoubleClicked
        cell_clicked.connect(self.server_choosed)

        self.game_client.writeMsg(["FindGame"])

    def fillTable(self, msg):
        print msg
        for game in msg:
            parse_game = game.split('|')

            ip = QtGui.QTableWidgetItem(parse_game[0])
            row = QtGui.QTableWidgetItem(parse_game[1])
            col = QtGui.QTableWidgetItem(parse_game[2])
            win_line = QtGui.QTableWidgetItem(parse_game[3])

            self.tablewidget.setItem(self.filled_rows, 0, ip)
            self.tablewidget.setItem(self.filled_rows, 1, row)
            self.tablewidget.setItem(self.filled_rows, 2, col)
            self.tablewidget.setItem(self.filled_rows, 3, win_line)

            self.filled_rows +=1
            self.tablewidget.setRowCount(self.tablewidget.rowCount()+1)

    def server_choosed(self, row, col):
        ip = self.tablewidget.item(row, 0).text()
        game_row = int(self.tablewidget.item(row, 1).text())
        game_col = int(self.tablewidget.item(row, 2).text())
        win_lane = int(self.tablewidget.item(row, 3).text())

        ngd = NetGameDialog(game_row,
                            game_col,
                            win_lane,
                            self,
                            self.game_client,
                            False,
                            ip)

        self.setHidden(True)
        ngd.exec_()
        self.close()