码迷,mamicode.com
首页 > 其他好文 > 详细

福利来啦,送给大家一个小游戏的源码,不要错过哟

时间:2020-06-11 21:19:44      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:info   evel   move   random   源码   box   ini   refresh   自动   

从小到大玩过很多的游戏,在我小时候,能玩游戏的地方不多,那时玩游戏都是偷摸玩的,只要是个游戏就觉得非常有趣,比较经典的有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方块等游戏;发展到现在,玩游戏已经成为生活的一部分了,尤其是现在的很多游戏都已经网络社交化了,游戏种类也更加丰富了,没事大家一起组队玩个游戏还是很有趣的事情。

技术图片

 

 

今天给大家带来的就是俄罗斯方块小游戏

先给大家看看游戏的试玩效果图

技术图片

 

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)
        self.__sd_slider.setValue(int((1010 - self.__time_step) / 10))
        self.__sd_slider.valueChanged.connect(self.__LineEdt)

        hb3 = QHBoxLayout()
        hb3.addWidget(self.__speed_label)
        hb3.addWidget(self.__speed_la)
        hb2.addStretch(1)

        x_num_la = QLabel(X number:)
        self.__x_num_la_show = QLabel()
        self.__x_num_la_show.setText(str(self.__num_x - 1))
        hb12 = QHBoxLayout()
        hb12.addWidget(x_num_la)
        hb12.addWidget(self.__x_num_la_show)
        hb12.addStretch(1)

        self.__x_num_sl = QSlider(Qt.Horizontal, self)
        self.__x_num_sl.setMaximum(100)
        self.__x_num_sl.setMinimum(1)
        self.__x_num_sl.setValue(self.__num_x - 1)
        self.__x_num_sl.valueChanged.connect(self.__setXNum)

        y_num_la = QLabel(Y number:)
        self.__y_num_la_show = QLabel()
        self.__y_num_la_show.setText(str(self.__num_y - 1))
        hb13 = QHBoxLayout()
        hb13.addWidget(y_num_la)
        hb13.addWidget(self.__y_num_la_show)
        hb13.addStretch(1)

        self.__y_num_sl = QSlider(Qt.Horizontal, self)
        self.__y_num_sl.setMinimum(1)
        self.__y_num_sl.setMaximum(100)
        self.__y_num_sl.setValue(self.__num_y - 1)
        self.__y_num_sl.valueChanged.connect(self.__setYNum)

        self.__st_btn = QPushButton(Start)
        self.__st_btn.setEnabled(True)
        hb7 = QHBoxLayout()
        hb7.addWidget(self.__st_btn)
        hb7.addStretch(1)

        self.__stop_btn = QPushButton(Stop)
        self.__stop_btn.setEnabled(True)
        hb8 = QHBoxLayout()
        hb8.addWidget(self.__stop_btn)
        hb8.addStretch(1)

        self.__pause_btn = QPushButton(Pause)
        self.__pause_btn.setEnabled(True)
        hb9 = QHBoxLayout()
        hb9.addWidget(self.__pause_btn)
        hb9.addStretch(1)

        self.__new_btn = QPushButton(New Game)
        self.__new_btn.setEnabled(True)
        hb10 = QHBoxLayout()
        hb10.addWidget(self.__new_btn)
        hb10.addStretch(1)

        self.__exit_btn = QPushButton(Exit)
        self.__exit_btn.setEnabled(True)
        hb11 = QHBoxLayout()
        hb11.addWidget(self.__exit_btn)
        hb11.addStretch(1)

        self.__new_btn.clicked.connect(self.__newGameBtnAction)
        self.__st_btn.clicked.connect(self.__stBtnAction)
        self.__stop_btn.clicked.connect(self.__stopBtnAction)
        self.__pause_btn.clicked.connect(self.__pauseBtnAction)
        self.__exit_btn.clicked.connect(self.close)

        self.__lcd = QLCDNumber()
        self.__lcd.setMinimumSize(100, 100)
        hb4 = QHBoxLayout()
        hb4.addWidget(self.__lcd)
        hb4.addStretch(1)

        vb = QVBoxLayout()
        vb.addLayout(hb1)
        vb.addLayout(hb2)
        vb.addLayout(hb4)
        vb.addStretch(1)
        vb.addLayout(hb3)
        vb.addWidget(self.__sd_slider)
        vb.addLayout(hb7)
        vb.addLayout(hb8)
        vb.addLayout(hb9)
        vb.addStretch(1)
        vb.addLayout(hb12)
        vb.addWidget(self.__x_num_sl)
        vb.addLayout(hb13)
        vb.addWidget(self.__y_num_sl)
        vb.addLayout(hb10)
        vb.addStretch(10)
        vb.addLayout(hb11)

        hb5 = QHBoxLayout()
        hb5.addStretch(1)
        hb5.addLayout(vb)

        self.setLayout(hb5)
        screen = QDesktopWidget().screenGeometry()
        width = screen.width() * self.__FACTOR_SCREEN
        height = screen.height() * self.__FACTOR_SCREEN
        x0 = screen.width() * (1 - self.__FACTOR_SCREEN) / 2
        y0 = screen.height() * (1 - self.__FACTOR_SCREEN) / 2

        self.setGeometry(x0, y0, width, height)
        self.__canva_w = self.geometry().width() * self.__FACTOR
        self.__canva_h = self.geometry().height()
        self.__szx = int(self.__canva_w / self.__num_x)
        self.__szy = int(self.__canva_h / self.__num_y)

        self.setWindowTitle("Python知识交流群695185429")
        self.setWindowIcon(QIcon(example.png))
        self.show()

    # 绘制网格
    def __drawNetGrid(self, qp):
        pen = QPen(Qt.lightGray, 1, Qt.DashLine)
        qp.setPen(pen)
        for i in range(self.__num_y):
            qp.drawLine(int(self.__szx / 2), int(i * self.__szy + self.__szy / 2),
                        int(self.__num_x * self.__szx - self.__szx / 2), int(i * self.__szy + self.__szy / 2))
        for i in range(self.__num_x):
            qp.drawLine(int(i * self.__szx + self.__szx / 2), int(self.__szy / 2),
                        int(i * self.__szx + self.__szx / 2),
                        int(self.__num_y * self.__szy - self.__szy / 2))

    # 提示Game Over
    def __gameOver(self, qp, x, y):
        pen = QPen(Qt.red)
        qp.setPen(pen)
        qp.setFont(QFont(Blackoak Std, 20))
        qp.drawText(x, y, self.__canva_w / 2, self.__canva_h / 2, True, Game Over!)

    # 类的自调用painter绘制函数
    def paintEvent(self, e):
        self.__canvas_w = self.geometry().width() * self.__FACTOR
        self.__canvas_h = self.geometry().height()
        self.__szx = int(self.__canvas_w / self.__num_x)
        self.__szy = int(self.__canvas_h / self.__num_y)

        qp = QPainter()
        qp.begin(self)
        self.__drawNetGrid(qp)  # 绘制网格
        # 绘制形状
        for i, eles in enumerate(self.__net):
            for j, ele in enumerate(eles):
                if not ele == 0:
                    self.__drawRect(qp, j + 1, i + 1, self.__szx, self.__szy, ele)
        if self.__timer.isActive():
            self.__drawBlock(qp, self.__block, self.__szx, self.__szy)

        # game over
        if self.__gameOverFlag:
            self.__gameOverFlag = False
            self.__gameOver(qp, self.__canva_w / 4, self.__canva_h / 2)
        qp.end()

    # timer
    def timerEvent(self, e):
        if self.__isNextPosEmpty(self.__block, 0, 1):
            self.__moveBlock(0, 1)
        else:
            self.__refreshFullNet(self.__block)
            for k, ele in enumerate(self.__net):
                if 0 not in ele:
                    self.__score += 1
                    self.__level += int(self.__score / 10)
                    self.__update_score()
                    self.__update_level()
                    for i in range(k):
                        self.__net[k - i] = self.__net[k - 1 - i]
                    self.__net[0] = [0 for i in range(self.__num_x - 1)]

            # 游戏结束
            if sum([1 for ele in self.__net[0] if not ele == 0]) > 0:
                self.stop()
                self.__st_btn.setEnabled(False)
                self.__pause_btn.setEnabled(False)
                self.__stop_btn.setEnabled(False)
                self.__gameOverFlag = True
            else:
                self.__block = self.__generateRandomBlock()
        self.update()

    # 键盘按键事件
    def keyPressEvent(self, e):
        key = e.key()
        x, y = self.__block.getXY()
        if key == Qt.Key_Left:
            if (x > 1) & self.__isNextPosEmpty(self.__block, -1, 0):
                self.__block.setXY(x - 1, y)
        elif key == Qt.Key_Right:
            if self.__isNextPosEmpty(self.__block, +1, 0):
                self.__block.setXY(x + 1, y)
        elif key == Qt.Key_Down:
            if self.__isNextPosEmpty(self.__block, 0, 2):
                self.__block.setXY(x, y + 2)
        elif key == Qt.Key_Up:
            block = Block(self.__block.getXY()[0], self.__block.getXY()[1], self.__block.getShape(), self.__mshape,
                          self.__block.getColor())
            block.rota90()
            if (block.getDownBoun() > self.__num_y - 1) | (block.getLeftBoun() < 1) | (
                    block.getRightBoun() > self.__num_x - 1):
                pass
            else:
                self.__block.rota90()
        elif key == Qt.Key_P:
            if self.__timer.isActive():
                self.stop()
            else:
                self.start()
        self.update()

    # 窗口大小改变自动调用事件
    def resizeEvent(self, e):
        self.update()

    # 判占位列表是否空
    def __isNextPosEmpty(self, block, step_x, step_y):
        bot = block.getDownBoun()
        right = block.getRightBoun()
        if ((bot + step_y) > self.__num_y - 1) | ((step_x > 0) & ((right + step_x) > self.__num_x - 1)):
            return False
        pos = block.getPos()
        for p in pos:
            if p[1] < 1:
                pass
            elif not self.__net[p[1] - 1 + step_y][p[0] - 1 + step_x] == 0:
                return False
        return True

    # 更新占位列表
    def __refreshFullNet(self, block):
        for pos in block.getPos():
            if (pos[0] < 1) | (pos[1] < 1) | (pos[0] > self.__num_x - 1) | (pos[1] > self.__num_y - 1):
                pass
            self.__net[pos[1] - 1][pos[0] - 1] = block.getColor()

    # 生成一个随机对象
    def __generateRandomBlock(self):
        num_sha = random.randint(0, self.__mshape.num - 1)
        sha = self.__mshape.name[num_sha]
        num_col = random.randint(0, self.__mshape.num_col - 1)
        color = self.__mshape.color[num_col]

        x = random.randint(1, self.__num_x)
        block = Block(x, 1, sha, self.__mshape, color)
        while block.getRightBoun() > (self.__num_x - 1):
            x = random.randint(1, self.__num_x)
            block = Block(x, 1, sha, self.__mshape, color)
        return block

    # 绘制方块
    def __drawRect(self, qp, x, y, szx, szy, color):
        x_loca = x * szx - szx / 2
        y_loca = y * szy - szy / 2
        # Brush
        brush = QBrush(color)
        brush.setStyle(Qt.SolidPattern)
        qp.setBrush(brush)
        qp.drawRect(x_loca, y_loca, szx, szy)
        # Pen
        pen = QPen(Qt.darkBlue, 2, Qt.SolidLine)
        qp.setPen(pen)
        qp.drawRect(x_loca, y_loca, szx, szy)

    # 绘制特定形状
    def __drawBlock(self, qp, block, szx, szy):
        color = block.getColor()
        pos = block.getPos()
        x1 = pos[0][0]
        y1 = pos[0][1]
        x2 = pos[1][0]
        y2 = pos[1][1]
        x3 = pos[2][0]
        y3 = pos[2][1]
        x4 = pos[3][0]
        y4 = pos[3][1]
        self.__drawRect(qp, x1, y1, szx, szy, color)
        self.__drawRect(qp, x2, y2, szx, szy, color)
        self.__drawRect(qp, x3, y3, szx, szy, color)
        self.__drawRect(qp, x4, y4, szx, szy, color)

    # 移动
    def __moveBlock(self, speed_x, speed_y):
        self.__block.setXY(self.__block.getXY()[0] + speed_x, self.__block.getXY()[1] + speed_y)

    # 更新成绩
    def __update_score(self):
        self.__score_la.setText(str(self.__score))
        self.__lcd.display(str(self.__score))

    # 更新等级
    def __update_level(self):
        self.__level_la.setText(str(self.__level))

    # 滑动条事件
    def __LineEdt(self):
        self.__speed_la.setText(str(self.__sd_slider.value()))
        self.__time_step = 1010 - self.__sd_slider.value() * 10
        if self.__stop_btn.isEnabled() & self.__pause_btn.isEnabled():
            self.start()

    # 设置Xnum
    def __setXNum(self):
        self.stop()
        self.__st_btn.setEnabled(False)
        self.__stop_btn.setEnabled(False)
        self.__pause_btn.setEnabled(False)

        self.__x_num_la_show.setText(str(self.__x_num_sl.value()))
        self.__num_x = self.__x_num_sl.value()

    # 设置Y Num
    def __setYNum(self):
        self.stop()
        self.__st_btn.setEnabled(False)
        self.__stop_btn.setEnabled(False)
        self.__pause_btn.setEnabled(False)

        self.__y_num_la_show.setText(str(self.__y_num_sl.value()))
        self.__num_y = self.__y_num_sl.value()

    # 开始按钮事件
    def __stBtnAction(self):
        if self.__timer.isActive():
            pass
        else:
            self.__st_btn.setEnabled(False)
            self.__stop_btn.setEnabled(True)
            self.__pause_btn.setEnabled(True)
            self.__timer.start(self.__time_step, self)

    # 停止按钮事件
    def __stopBtnAction(self):
        if self.__timer.isActive():
            self.__timer.stop()
        self.__st_btn.setEnabled(False)
        self.__pause_btn.setEnabled(False)
        self.__stop_btn.setEnabled(False)
        self.__timer.stop()

    # 暂停按钮事件
    def __pauseBtnAction(self):
        if self.__timer.isActive():
            self.__timer.stop()
        self.__st_btn.setEnabled(True)
        self.__pause_btn.setEnabled(False)
        self.__stop_btn.setEnabled(True)

    # 新游戏按钮事件
    def __newGameBtnAction(self):
        if self.__timer.isActive():
            self.stop()
        self.__initPara()
        self.__initNet()
        self.__st_btn.setEnabled(True)
        self.__pause_btn.setEnabled(True)
        self.__stop_btn.setEnabled(True)
        self.update()
        self.start()

    # 启动时间循环时间
    def start(self):
        self.__timer.start(self.__time_step, self)

    # 停止计时器
    def stop(self):
        self.__timer.stop()


# 对象类
class Block:
    def __init__(self, x, y, shape, mshape, color):
        self.__x = x
        self.__y = y
        self.__color = color
        self.__shape = shape
        self.__sha = mshape

    # 返回四个块的中心坐标
    def getPos(self):
        x1 = x2 = x3 = x4 = self.__x
        y1 = y2 = y3 = y4 = self.__y
        if self.__shape[0] == self.__sha.hL[0]:
            x2 = x1 + 1
            x3 = x2 + 1
            x4 = x3 + 1
        elif self.__shape[0] == self.__sha.vL[0]:
            y2 = y1 + 1
            y3 = y2 + 1
            y4 = y3 + 1
        elif self.__shape[0] == self.__sha.S[0]:
            y2 = y1 + 1
            x3 = x1 + 1
            x4 = x3
            y4 = y2
        elif self.__shape[0] == self.__sha.lZ[0]:
            x2 = x1 + 1
            x3 = x2
            y3 = y2 + 1
            x4 = x3 + 1
            y4 = y3
        elif self.__shape[0] == self.__sha.ruZ[0]:
            y2 = y1 + 1
            x3 = x1 + 1
            y3 = y1 - 1
            x4 = x1 + 1
        elif self.__shape[0] == self.__sha.luZ[0]:
            y2 = y1 + 1
            x3 = x1 + 1
            y3 = y2
            x4 = x3
            y4 = y3 + 1
        elif self.__shape[0] == self.__sha.rZ[0]:
            x2 = x1 + 1
            y2 = y1 - 1
            x3 = x2
            y3 = y2 + 1
            x4 = x3 + 1
            y4 = y2
        elif self.__shape[0] == self.__sha.lvuF[0]:
            x2 = x1 + 1
            x3 = x4 = x2
            y3 = y2 + 1
            y4 = y3 + 1
        elif self.__shape[0] == self.__sha.rvuF[0]:
            x2 = x1 + 1
            y3 = y2 + 1
            y4 = y3 + 1
        elif self.__shape[0] == self.__sha.lhdF[0]:
            y2 = y1 + 1
            x3 = x1 + 1
            x4 = x3 + 1
        elif self.__shape[0] == self.__sha.rhdF[0]:
            x2 = x1 + 1
            x3 = x2 + 1
            x4 = x3
            y4 = y3 + 1
        elif self.__shape[0] == self.__sha.rvdF[0]:
            y2 = y1 + 1
            y3 = y2 + 1
            x4 = x3 + 1
            y4 = y3
        elif self.__shape[0] == self.__sha.lvdF[0]:
            x2 = x1 + 1
            y2 = y1 - 2
            x3 = x4 = x2
            y3 = y1 - 1
            y4 = y1
        elif self.__shape[0] == self.__sha.rhuF[0]:
            x2 = x1 + 1
            x3 = x2 + 1
            x4 = x3
            y4 = y3 - 1
        elif self.__shape[0] == self.__sha.lhuF[0]:
            y2 = y1 + 1
            x3 = x2 + 1
            x4 = x3 + 1
            y3 = y4 = y2
        elif self.__shape[0] == self.__sha.uW[0]:
            x2 = x1 + 1
            x3 = x2
            x4 = x3 + 1
            y2 = y1 - 1
        elif self.__shape[0] == self.__sha.dW[0]:
            x2 = x1 + 1
            x3 = x2
            x4 = x3 + 1
            y3 = y2 + 1
        elif self.__shape[0] == self.__sha.lW[0]:
            x2 = x1 + 1
            x4 = x3 = x2
            y2 = y1 - 1
            y3 = y2 + 1
            y4 = y3 + 1
        elif self.__shape[0] == self.__sha.rW[0]:
            y2 = y1 + 1
            y3 = y2 + 1
            y4 = y2
            x4 = x1 + 1
        return [(x1, y1), (x2, y2), (x3, y3), (x4, y4)]

    # 返回边界
    def getLeftBoun(self):
        return self.__x - self.__shape[1]

    def getRightBoun(self):
        return self.__x + self.__shape[2]

    def getTopBoun(self):
        return self.__y - self.__shape[3]

    def getDownBoun(self):
        return self.__y + self.__shape[4]

    # 返回形状
    def getShape(self):
        return self.__shape

    # 返回颜色
    def getColor(self):
        return self.__color

    # 设置颜色
    def setColor(self, color):
        self.__color = color

    # 设置形状
    def setShape(self, shape):
        self.__shape = shape

    # 设置坐标
    def setXY(self, x, y):
        self.__x = x
        self.__y = y

    # 返回坐标
    def getXY(self):
        return [self.__x, self.__y]

    # 移动坐标
    def __movePos(self, step_x, step_y):
        self.setXY(self.__x + step_x, self.__y + step_y)

    # 旋转90度
    def rota90(self):
        # type1
        if self.__shape[-1] == self.__sha.type1:
            if self.__shape[0] == self.__sha.vL[0]:
                self.setShape(self.__sha.hL)
                self.__movePos(-1, 1)
            elif self.__shape[0] == self.__sha.hL[0]:
                self.setShape(self.__sha.vL)
                self.__movePos(1, -1)
        # type2
        elif self.__shape[-1] == self.__sha.type2:
            pass
        # type3
        elif self.__shape[-1] == self.__sha.type3:
            if self.__shape[0] == self.__sha.lZ[0]:
                self.setShape(self.__sha.ruZ)
            elif self.__shape[0] == self.__sha.rZ[0]:
                self.setShape(self.__sha.luZ)
                self.__movePos(0, -1)
            elif self.__shape[0] == self.__sha.luZ[0]:
                self.setShape(self.__sha.rZ)
                self.__movePos(-1, 1)
            elif self.__shape[0] == self.__sha.ruZ[0]:
                self.setShape(self.__sha.lZ)
                self.__movePos(0, -1)
        # type4
        elif self.__shape[-1] == self.__sha.type4:
            if self.__shape[0] == self.__sha.lvuF[0]:
                self.setShape(self.__sha.rhuF)
                self.__movePos(0, 1)
            elif self.__shape[0] == self.__sha.lvdF[0]:
                self.setShape(self.__sha.lhuF)
                self.__movePos(0, -2)
            elif self.__shape[0] == self.__sha.rvuF[0]:
                self.setShape(self.__sha.rhdF)
                self.__movePos(-1, 1)
            elif self.__shape[0] == self.__sha.rvdF[0]:
                self.setShape(self.__sha.lhdF)
                self.__movePos(-1, 1)
            elif self.__shape[0] == self.__sha.lhuF[0]:
                self.setShape(self.__sha.rvuF)
                self.__movePos(1, 0)
            elif self.__shape[0] == self.__sha.lhdF[0]:
                self.setShape(self.__sha.lvuF)
                self.__movePos(0, -1)
            elif self.__shape[0] == self.__sha.rhuF[0]:
                self.setShape(self.__sha.rvdF)
                self.__movePos(1, -1)
            elif self.__shape[0] == self.__sha.rhdF[0]:
                self.setShape(self.__sha.lvdF)
                self.__movePos(0, 1)
        # type5
        elif self.__shape[-1] == self.__sha.type5:
            if self.__shape[0] == self.__sha.uW[0]:
                self.setShape(self.__sha.rW)
                self.__movePos(1, -1)
            elif self.__shape[0] == self.__sha.dW[0]:
                self.setShape(self.__sha.lW)
            elif self.__shape[0] == self.__sha.lW[0]:
                self.setShape(self.__sha.uW)
            elif self.__shape[0] == self.__sha.rW[0]:
                self.setShape(self.__sha.dW)
                self.__movePos(-1, +1)


if __name__ == __main__:
    app = QApplication(sys.argv)
    game = Game()
    sys.exit(app.exec_())

 

 

赶快抓紧时间动起手来找回童年回忆!

福利来啦,送给大家一个小游戏的源码,不要错过哟

标签:info   evel   move   random   源码   box   ini   refresh   自动   

原文地址:https://www.cnblogs.com/hhh188764/p/13095992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!