用Python实现俄罗斯方块,致已消逝的青春

编程入门 行业动态 更新时间:2024-10-13 02:20:27

用Python实现<a href=https://www.elefans.com/category/jswz/34/1769307.html style=俄罗斯方块,致已消逝的青春"/>

用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实现俄罗斯方块,致已消逝的青春

本文发布于:2024-03-05 18:01:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1712994.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:俄罗斯方块   青春   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!