欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)簡單的俄羅斯方塊游戲

 更新時間:2021年09月24日 15:34:45   作者:紅目香薰  
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)簡單的俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Python實現(xiàn)俄羅斯方塊游戲的具體代碼,供大家參考,具體內(nèi)容如下

玩法:童年經(jīng)典,普通模式?jīng)]啥意思,小時候我們都是玩加速的。

源碼分享:

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()
        # 焦點(diǎn)
        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:
            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()
        # 旋轉(zhuǎn)
        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_())

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解pyppeteer(python版puppeteer)基本使用

    詳解pyppeteer(python版puppeteer)基本使用

    這篇文章主要介紹了詳解pyppeteer(python版puppeteer)基本使用 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python使用itchat 功能分析微信好友性別和位置

    Python使用itchat 功能分析微信好友性別和位置

    這篇文章主要介紹了 Python使用itchat 功能分析微信好友性別和位置 的相關(guān)資料,需要的朋友可以參考下
    2019-08-08
  • 解析Python中的__getitem__專有方法

    解析Python中的__getitem__專有方法

    __getitem__是Python雙下劃線包圍的special method之一,這里我們就來解析Python中的__getitem__專有方法的使用,需要的朋友可以參考下:
    2016-06-06
  • 從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能(最新推薦)

    從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能(最新推薦)

    OpenCV的強(qiáng)大功能不僅限于基本的圖像處理,還可以擴(kuò)展到實時視頻分析、復(fù)雜的圖像拼接和特征匹配等應(yīng)用場景,這篇文章主要介紹了從安裝到應(yīng)用全面掌握Python與OpenCV的配置與高級功能,需要的朋友可以參考下
    2024-08-08
  • Python hashlib和hmac模塊使用方法解析

    Python hashlib和hmac模塊使用方法解析

    這篇文章主要介紹了Python hashlib和hmac模塊使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Python通用唯一標(biāo)識符uuid模塊使用案例

    Python通用唯一標(biāo)識符uuid模塊使用案例

    這篇文章主要介紹了Python通用唯一標(biāo)識符uuid模塊使用案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Python?分形算法代碼詳解

    Python?分形算法代碼詳解

    分形算法就是使用計算機(jī)程序模擬出大自然界的分形幾何圖案,是分形幾何數(shù)學(xué)與計算機(jī)科學(xué)相融合的藝術(shù),今天小編通過本文給大家介紹Python?分形算法實現(xiàn)代碼,感興趣的朋友一起看看吧
    2022-03-03
  • python教程十行代碼教你語音轉(zhuǎn)文字QQ微信聊天

    python教程十行代碼教你語音轉(zhuǎn)文字QQ微信聊天

    QQ上面發(fā)的語音消息是可以直接文字識別的,但是微信為什么沒有呢?是因為技術(shù)太難實現(xiàn)嗎?這個很簡單?。〗裉旖o大家介紹一下語音轉(zhuǎn)文字的原理
    2021-09-09
  • 簡單文件操作python 修改文件指定行的方法

    簡單文件操作python 修改文件指定行的方法

    使用python進(jìn)行簡略的文件讀寫
    2013-05-05
  • 淺談Python中的模塊

    淺談Python中的模塊

    這篇文章主要介紹了Python中的模塊相關(guān)知識,文中代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論