俄罗斯方块,致已消逝的青春"/>
用Python实现俄罗斯方块,致已消逝的青春
俄罗斯方块 致已消逝的青春
简介
《俄罗斯方块》是一款由俄罗斯人阿列克谢·帕基特诺夫(俄文:Алексей Пажитнов 英文:Alexey Pazhitnov)于1984年6月发明的休闲游戏。俄罗斯方块原名是俄语Тетрис(英文:Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。
游戏规则
一组由4个小型正方形组成的规则图形,游戏有7个基本形状:S、Z、T、L、反向L、直线、方块,每个形状都由4个方块组成,方块最终都会落到屏幕底部。所以玩家通过控制形状的左右位置和旋转,让每个形状都以合适的位置落下,如果有一行全部被方块填充,这行就会消失,并且得分。游戏结束的条件是有形状接触到了屏幕顶部。
程序介绍
PyQt5是专门为创建图形界面产生的,里面一些专门为制作游戏而开发的组件。
安装PyQt5
pip install PyQt5
导包
from PyQt5.QtWidgets import QMainWindow, QFrame, QDesktopWidget, QApplication
from PyQt5.QtCore import Qt, QBasicTimer, pyqtSignal
from PyQt5.QtGui import QPainter, QColor
import sys, random
class Tetris(QMainWindow):def __init__(self):super().__init__()self.initUI()
def initUI(self):self.tboard = Board(self)self.setCentralWidget(self.tboard)self.statusbar = self.statusBar()self.tboard.msg2Statusbar[str].connect(self.statusbar.showMessage)self.tboard.start()self.resize(180, 380)self.center()self.setWindowTitle('俄罗斯方块')self.show()
定义窗口
def center(self):'''centers the window on the screen'''screen = QDesktopWidget().screenGeometry()size = self.geometry()self.move((screen.width() - size.width()) / 2,(screen.height() - size.height()) / 2)
class Board(QFrame):msg2Statusbar = pyqtSignal(str)BoardWidth = 10BoardHeight = 22Speed = 300
def __init__(self, parent):super().__init__(parent)self.initBoard()
def initBoard(self):'''initiates board'''self.timer = QBasicTimer()self.isWaitingAfterLine = Falseself.curX = 0self.curY = 0self.numLinesRemoved = 0self.board = []self.setFocusPolicy(Qt.StrongFocus)self.isStarted = Falseself.isPaused = Falseself.clearBoard()
确定形状
def shapeAt(self, x, y):'''determines shape at the board position'''return self.board[(y * Board.BoardWidth) + x]def setShapeAt(self, x, y, shape):'''sets a shape at the board'''self.board[(y * Board.BoardWidth) + x] = shapedef squareWidth(self):'''returns the width of one square'''return self.contentsRect().width() /
更多推荐
用Python实现俄罗斯方块,致已消逝的青春
发布评论