从小到大玩过很多的游戏,在我小时候,能玩游戏的地方不多,那时玩游戏都是偷摸玩的,只要是个游戏就觉得非常有趣,比较经典的有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方块等游戏;发展到现在,玩游戏已经成为生活的一部分了,尤其是现在的很多游戏都已经网络社交化了,游戏种类也更加丰富了,没事大家一起组队玩个游戏还是很有趣的事情。
今天给大家带来的就是俄罗斯方块小游戏
先给大家看看游戏的试玩效果图
import sys, random from PyQt5.QtWidgets import QApplication, QDesktopWidget, QHBoxLayout, QVBoxLayout, QLabel, \
QPushButton, QFrame, QLCDNumber, QSlider from PyQt5.QtGui import QIcon, QPainter, QPen, QBrush, QColor, QFont from PyQt5.QtCore import Qt, QBasicTimer # 形状
class Shape: def __init__(self): # 19种形状:tuple参数分别代表:(形状代号,左、右、上、下边缘距离,类型)
self.num = 19 self.type1 = 1 self.type2 = 2 self.type3 = 3 self.type4 = 4 self.type5 = 5 self.vL = (1, 0, 0, 0, 3, self.type1)
self.hL = (2, 0, 3, 0, 0, self.type1)
self.S = (3, 0, 1, 0, 1, self.type2)
self.lZ = (4, 0, 2, 0, 1, self.type3)
self.ruZ = (5, 0, 1, 1, 1, self.type3)
self.rZ = (6, 0, 2, 1, 0, self.type3)
self.luZ = (7, 0, 1, 0, 2, self.type3)
self.lvuF = (8, 0, 1, 0, 2, self.type4)
self.rvuF = (9, 0, 1, 0, 2, self.type4)
self.lhdF = (10, 0, 2, 0, 1, self.type4)
self.rhdF = (11, 0, 2, 0, 1, self.type4)
self.rvdF = (12, 0, 1, 0, 2, self.type4)
self.lvdF = (13, 0, 1, 2, 0, self.type4)
self.rhuF = (14, 0, 2, 1, 0, self.type4)
self.lhuF = (15, 0, 2, 0, 1, self.type4)
self.uW = (16, 0, 2, 1, 0, self.type5)
self.dW = (17, 0, 2, 0, 1, self.type5)
self.lW = (18, 0, 1, 1, 1, self.type5)
self.rW = (19, 0, 1, 0, 2, self.type5)
self.name = (
(1, 0, 0, 0, 3, self.type1), (2, 0, 3, 0, 0, self.type1),
(3, 0, 1, 0, 1, self.type2), (4, 0, 2, 0, 1, self.type3),
(6, 0, 2, 1, 0, self.type3), (7, 0, 1, 0, 2, self.type3),
(5, 0, 1, 1, 1, self.type3), (8, 0, 1, 0, 2, self.type4),
(13, 0, 1, 2, 0, self.type4), (9, 0, 1, 0, 2, self.type4),
(12, 0, 1, 0, 2, self.type4),
(15, 0, 2, 0, 1, self.type4), (10, 0, 2, 0, 1, self.type4),
(14, 0, 2, 1, 0, self.type4), (11, 0, 2, 0, 1, self.type4),
(16, 0, 2, 1, 0, self.type5), (17, 0, 2, 0, 1, self.type5),
(18, 0, 1, 1, 1, self.type5),
(19, 0, 1, 0, 2, self.type5))
self.color = (QColor(250, 150, 50), QColor(100, 100, 100), QColor(100, 150, 150), QColor(150, 100, 100))
self.num_col = len(self.color) # Game
class Game: def __init__(self):
self.__board = Board() # 界面
class Board(QFrame): def __init__(self):
super().__init__()
self.__num_y = 23 self.__num_x = 25 self.__time_step = 400 self.__initPara()
self.__initUI()
self.__initNet()
self.setFocusPolicy(Qt.StrongFocus) # 初始化参数
def __initPara(self):
self.__score = 0
self.__level = 0
self.__timer = QBasicTimer()
self.__FACTOR = 4 / 5 self.__FACTOR_SCREEN = 0.6 self.__canvas_w = self.geometry().width() * self.__FACTOR self.__canvas_h = self.geometry().height()
self.__szy = int(self.__canvas_h / self.__num_y)
self.__szx = int(self.__canvas_w / self.__num_x)
self.__gameOverFlag = False
self.__net = []
self.__mshape = Shape()
self.__block = Block(1, 1, self.__mshape.name[random.randint(0, self.__mshape.num - 1)], self.__mshape,
self.__mshape.color[random.randint(0, self.__mshape.num_col - 1)]) # 初始化网格列表
def __initNet(self):
self.__net = [[0 for j in range(self.__num_x - 1)] for j in range(self.__num_y - 1)] # 初始化界面
def __initUI(self):
hb1 = QHBoxLayout()
score_info_la = QLabel('Score: ')
self.__score_la = QLabel('0')
hb1.addWidget(score_info_la)
hb1.addWidget(self.__score_la)
hb1.addStretch(1)
hb2 = QHBoxLayout()
level_info_la = QLabel('Level: ')
self.__level_la = QLabel('0')
hb2.addWidget(level_info_la)
hb2.addWidget(self.__level_la)
hb2.addStretch(1)
self.__speed_la = QLabel()
self.__speed_la.setText(str((1010 - self.__time_step) / 10))
self.__speed_label = QLabel('Speed:')
self.__sd_slider = QSlider()
self.__sd_slider.setOrientation(Qt.Horizontal)
self.__sd_slider.setMaximum(1)
self.__sd_slider.setMaximum(100)