Python :: Aufgabe #175 :: Lösung #3
3 Lösungen

#175
Mischen von Spielkarten
Anfänger - Python
von hollst
- 14.01.2018 um 16:42 Uhr
Man schreibe eine GUI-Anwendung, die einen 52er Kartensatz mischt und die entstandene Reihenfolge anzeigt (BILD 2).
Die Anwendung soll zwei Befehlsknöpfe haben: MISCHEN und RESET. Mit RESET soll die Default-Reihenfolge angezeigt werden (BILD 1).
Einen Satz von Image-Dateien der Spielkarten könnt ihr z. B. unter http://www.nongnu.org/cardpics/cardpics.en.html herunterladen und darüber frei verfügen, sofern ihr eure Lösung nicht für kommerzielle Zwecke vermarkten wollt.
Die Anwendung soll zwei Befehlsknöpfe haben: MISCHEN und RESET. Mit RESET soll die Default-Reihenfolge angezeigt werden (BILD 1).
Einen Satz von Image-Dateien der Spielkarten könnt ihr z. B. unter http://www.nongnu.org/cardpics/cardpics.en.html herunterladen und darüber frei verfügen, sofern ihr eure Lösung nicht für kommerzielle Zwecke vermarkten wollt.
#3

von Gisbert5020 (3120 Punkte)
- 11.06.2018 um 09:50 Uhr

import sys import random from PyQt5.QtWidgets import QApplication, QPushButton, QWidget, QLabel, QSpacerItem,\ QGridLayout, QHBoxLayout, QVBoxLayout, QSizePolicy from PyQt5.QtGui import QPixmap from PyQt5.QtCore import Qt LISTE = [] SORTLISTE=[] class Fenster(QWidget): def __init__(self, parent=None): super(Fenster, self).__init__(parent) self.kartenLaden() self.initUI() def initUI(self): self.hlayout = QHBoxLayout() self.glayout = QGridLayout() self.glayout.setContentsMargins(5, 5, 5, 5) self.glayout.setSpacing(3) self.vlayout = QVBoxLayout() self.label =[] for i in range(52): self.label.append(QLabel(self)) self.label[i].setObjectName('label'+str(i)) myPixmap = QPixmap(SORTLISTE[i]) self.label[i].setPixmap(myPixmap) self.label[i].setScaledContents(True) self.label[i].setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) j = i//13 k = i%13 self.glayout.addWidget(self.label[i],j,k) self.sortieren = QPushButton("Karten sortieren") self.sortieren.setFixedWidth(100) self.vlayout.addWidget(self.sortieren) self.mischen = QPushButton(" Karten mischen ") self.mischen.setFixedWidth(100) self.vlayout.addWidget(self.mischen) self.spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) self.vlayout.addItem(self.spacerItem) self.hlayout.addLayout(self.glayout) self.hlayout.addLayout(self.vlayout) self.setLayout(self.hlayout) self.sortieren.clicked.connect(self.kartenSortieren) self.mischen.clicked.connect(self.kartenMischen) def kartenLaden(self): for i in range(56): if i == 10 or i==24 or i==38 or i==52: continue if i < 10: LISTE.append('cardpics/' + '0' + str(i) + '.png') else: LISTE.append('cardpics/' + str(i) + '.png') SORTLISTE.extend(LISTE[0:26]) SORTLISTE.extend(LISTE[39:52]) SORTLISTE.extend(LISTE[26:39]) def kartenSortieren(self): for i in range(52): myPixmap = QPixmap(SORTLISTE[i]) self.label[i].setPixmap(myPixmap) def kartenMischen(self): random.shuffle(LISTE) for i in range(52): myPixmap = QPixmap(LISTE[i]) self.label[i].setPixmap(myPixmap) if __name__ == '__main__': app = QApplication(sys.argv) fenster=Fenster() fenster.show() app.exec_()
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1