-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathmatopeli.py
More file actions
71 lines (61 loc) · 2.39 KB
/
matopeli.py
File metadata and controls
71 lines (61 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# git clone https://github.com/juhay-git/TITE25_matopeli
# 'pip install PySide6' tarvitaan
import sys
import random
from PySide6.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QMenu
from PySide6.QtGui import QPainter, QPen, QBrush, QFont
from PySide6.QtCore import Qt, QTimer
# vakiot
SOLUN_KOKO = 20
RUUDUKON_LEVEYS = 20
RUUDUKON_KORKEUS = 15
class Matopeli(QGraphicsView):
def __init__(self):
super().__init__()
self.setScene(QGraphicsScene(self))
self.setSceneRect(0, 0, SOLUN_KOKO * RUUDUKON_LEVEYS, SOLUN_KOKO * RUUDUKON_KORKEUS)
self.timer = QTimer(self)
self.timer.timeout.connect(self.paivita_peli)
self.setWindowTitle("Matopeli")
self.kaynnista_peli()
def keyPressEvent(self, event):
nappain = event.key()
if nappain in (Qt.Key_Left, Qt.Key_Right, Qt.Key_Up, Qt.Key_Down):
# päivitetään suunta vain jos se ei ole vastakkainen valitulle suunnalle
if nappain == Qt.Key_Left and self.suunta != Qt.Key_Right:
self.suunta = nappain
elif nappain == Qt.Key_Right and self.suunta != Qt.Key_Left:
self.suunta = nappain
elif nappain == Qt.Key_Up and self.suunta != Qt.Key_Down:
self.suunta = nappain
elif nappain == Qt.Key_Down and self.suunta != Qt.Key_Up:
self.suunta = nappain
def paivita_peli(self):
paa_x, paa_y = self.mato[0]
if self.suunta == Qt.Key_Left:
uusi_paa = (paa_x - 1, paa_y)
elif self.suunta == Qt.Key_Right:
uusi_paa = (paa_x + 1, paa_y)
elif self.suunta == Qt.Key_Up:
uusi_paa = (paa_x, paa_y - 1)
elif self.suunta == Qt.Key_Down:
uusi_paa = (paa_x, paa_y + 1)
self.mato.insert(0, uusi_paa)
self.mato.pop()
self.piirra_peli()
def piirra_peli(self):
self.scene().clear()
for osa in self.mato:
x, y = osa
self.scene().addRect(x * SOLUN_KOKO, y * SOLUN_KOKO, SOLUN_KOKO, SOLUN_KOKO, QPen(Qt.black), QBrush(Qt.red))
def kaynnista_peli(self):
self.suunta = Qt.Key_Right
self.mato = [(5, 5), (5, 6), (5, 7)]
self.timer.start(300)
def main():
sovellus = QApplication(sys.argv)
peli = Matopeli()
peli.show()
sys.exit(sovellus.exec())
if __name__ == "__main__":
main()