Python版俄罗斯方块源代码如何获取?

2026-04-30 21:121阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计647个文字,预计阅读时间需要3分钟。

Python版俄罗斯方块源代码如何获取?

python定义俄罗斯方块游戏类class TetrisGame(QMainWindow): def __init__(self, parent=None):

import os

import sys

import random

from modules import *

from PyQt5.QtGui import *

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

'''定义俄罗斯方块游戏类'''

class TetrisGame(QMainWindow):

def __init__(self, parent=None):

super(TetrisGame, self).__init__(parent)

# 是否暂停ing

self.is_paused = False

# 是否开始ing

self.is_started = False

self.initUI()

'''界面初始化'''

def initUI(self):

# icon

self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))

# 块大小

self.grid_size = 22

# 游戏帧率

self.fps = 200

self.timer = QBasicTimer()

# 焦点

self.setFocusPolicy(Qt.StrongFocus)

# 水平布局

layout_horizontal = QHBoxLayout()

self.inner_board = InnerBoard()

self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)

layout_horizontal.addWidget(self.external_board)

self.side_panel = SidePanel(self, self.grid_size, self.inner_board)

layout_horizontal.addWidget(self.side_panel)

self.status_bar = self.statusBar()

self.external_board.score_signal[str].connect(self.status_bar.showMessage)

self.start()

self.center()

self.setWindowTitle('Tetris —— 九歌')

self.show()

self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())

'''游戏界面移动到屏幕中间'''

def center(self):

screen = QDesktopWidget().screenGeometry()

size = self.geometry()

self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)

'''更新界面'''

def updateWindow(self):

self.external_board.updateData()

self.side_panel.updateData()

self.update()

'''开始'''

def start(self):

if self.is_started:

return

self.is_started = True

self.inner_board.createNewTetris()

self.timer.start(self.fps, self)

'''暂停/不暂停'''

def pause(self):

if not self.is_started:

return

self.is_paused = not self.is_paused

if self.is_paused:

self.timer.stop()

self.external_board.score_signal.emit('Paused')

else:

self.timer.start(self.fps, self)

self.updateWindow()

'''计时器事件'''

def timerEvent(self, event):

if event.timerId() == self.timer.timerId():

removed_lines = self.inner_board.moveDown()

self.external_board.score += removed_lines

self.updateWindow()

else:

super(TetrisGame, self).timerEvent(event)

'''按键事件'''

def keyPressEvent(self, event):

if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:

Python版俄罗斯方块源代码如何获取?

super(TetrisGame, self).keyPressEvent(event)

return

key = event.key()

# P键暂停

if key == Qt.Key_P:

self.pause()

return

if self.is_paused:

return

# 向左

elif key == Qt.Key_Left:

self.inner_board.moveLeft()

# 向右

elif key == Qt.Key_Right:

self.inner_board.moveRight()

# 旋转

elif key == Qt.Key_Up:

self.inner_board.rotateAnticlockwise()

# 快速坠落

elif key == Qt.Key_Space:

self.external_board.score += self.inner_board.dropDown()

else:

super(TetrisGame, self).keyPressEvent(event)

self.updateWindow()

'''run'''

if __name__ == '__main__':

app = QApplication([])

tetris = TetrisGame()

sys.exit(app.exec_())

本文共计647个文字,预计阅读时间需要3分钟。

Python版俄罗斯方块源代码如何获取?

python定义俄罗斯方块游戏类class TetrisGame(QMainWindow): def __init__(self, parent=None):

import os

import sys

import random

from modules import *

from PyQt5.QtGui import *

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

'''定义俄罗斯方块游戏类'''

class TetrisGame(QMainWindow):

def __init__(self, parent=None):

super(TetrisGame, self).__init__(parent)

# 是否暂停ing

self.is_paused = False

# 是否开始ing

self.is_started = False

self.initUI()

'''界面初始化'''

def initUI(self):

# icon

self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))

# 块大小

self.grid_size = 22

# 游戏帧率

self.fps = 200

self.timer = QBasicTimer()

# 焦点

self.setFocusPolicy(Qt.StrongFocus)

# 水平布局

layout_horizontal = QHBoxLayout()

self.inner_board = InnerBoard()

self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)

layout_horizontal.addWidget(self.external_board)

self.side_panel = SidePanel(self, self.grid_size, self.inner_board)

layout_horizontal.addWidget(self.side_panel)

self.status_bar = self.statusBar()

self.external_board.score_signal[str].connect(self.status_bar.showMessage)

self.start()

self.center()

self.setWindowTitle('Tetris —— 九歌')

self.show()

self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())

'''游戏界面移动到屏幕中间'''

def center(self):

screen = QDesktopWidget().screenGeometry()

size = self.geometry()

self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)

'''更新界面'''

def updateWindow(self):

self.external_board.updateData()

self.side_panel.updateData()

self.update()

'''开始'''

def start(self):

if self.is_started:

return

self.is_started = True

self.inner_board.createNewTetris()

self.timer.start(self.fps, self)

'''暂停/不暂停'''

def pause(self):

if not self.is_started:

return

self.is_paused = not self.is_paused

if self.is_paused:

self.timer.stop()

self.external_board.score_signal.emit('Paused')

else:

self.timer.start(self.fps, self)

self.updateWindow()

'''计时器事件'''

def timerEvent(self, event):

if event.timerId() == self.timer.timerId():

removed_lines = self.inner_board.moveDown()

self.external_board.score += removed_lines

self.updateWindow()

else:

super(TetrisGame, self).timerEvent(event)

'''按键事件'''

def keyPressEvent(self, event):

if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:

Python版俄罗斯方块源代码如何获取?

super(TetrisGame, self).keyPressEvent(event)

return

key = event.key()

# P键暂停

if key == Qt.Key_P:

self.pause()

return

if self.is_paused:

return

# 向左

elif key == Qt.Key_Left:

self.inner_board.moveLeft()

# 向右

elif key == Qt.Key_Right:

self.inner_board.moveRight()

# 旋转

elif key == Qt.Key_Up:

self.inner_board.rotateAnticlockwise()

# 快速坠落

elif key == Qt.Key_Space:

self.external_board.score += self.inner_board.dropDown()

else:

super(TetrisGame, self).keyPressEvent(event)

self.updateWindow()

'''run'''

if __name__ == '__main__':

app = QApplication([])

tetris = TetrisGame()

sys.exit(app.exec_())