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

本文分享了一款使用Python开发的俄罗斯方块小游戏,旨在帮助初学者学习编程。文中提供了游戏试玩效果图,并且推荐了一个Python学习交流群,群内分享学习资源和编程技巧。
摘要由CSDN通过智能技术生成

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

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

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

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)
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值